Tag: mp4

HTTP伪stream,如何获取范围从开始参数

我们正在为nodejs中的MP4文件进行HTTP伪stream式传输。 对于HTML5,这非常简单,因为它可以与内容范围标题一起使用,但是对于Flash而言,通常会将startparameter passing到包含要跳过的秒数的请求。 有谁知道什么逻辑会将秒转换为字节的video,还有什么可能需要这个? 任何正确的信息将是一个巨大的帮助。 谢谢!

在收到指定内容范围的206后,Firefox不会请求更多的数据

为了给出一些上下文,我有一个<video>标签,它的src属性指向了我的node.js服务器上的一个方法。 该方法从另一个服务器获取mp4文件,或者是mp4文件的一部分 ,具体取决于浏览器指定的Range HTTP标头,例如: Range:bytes=0- 。 预期行为(Chrome行为) 为了防止我的node.js服务器从第三方服务器下载整个文件,我实现了一个大约5MB的最大缓冲区一次下载。 所以如果用户发送一个请求来获取带有标题的video GET /play-test/videoId HTTP/1.1 Host: 127.0.0.1:8000 Connection: keep-alive Pragma: no-cache Cache-Control: no-cache Accept-Encoding: identity;q=1, *;q=0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36 Accept: */* Referer: http://127.0.0.1:8000/movie/99861 Accept-Language: en-US,en;q=0.8,es;q=0.6 Range: bytes=0- ..然后我的服务器将作出回应 HTTP/1.1 206 Partial Content X-Powered-By: Express Content-Range: bytes 0-5000000/415473786 […]

使用NodeJS中的mp4容器stream式转换电影,电影播放速度非常快

我已经使用stream-transcoder模块来转换文件使其成为一个stream。 所以文件不存储,它是在飞行中。 app.get("/video", function(req,res){ res.writeHead(200, {'Content-Type': 'video/mp4'}); var src = "movie.avi"; var Transcoder = require('stream-transcoder'); var stream = fs.createReadStream(src); new Transcoder(stream) .maxSize(1280, 720) .videoCodec('h264') .videoBitrate(800 * 1000) .fps(25) .sampleRate(44100) .channels(2) .audioBitrate(128 * 1000) .format('mp4') .on('finish', function() { console.log("finished"); }) .stream().pipe(res); }); 它工作的很好,速度很快,但速度太快,audio播放速度相同,但video不考虑帧速率,不pipe从ffmpeg收到什么,都很快地显示出来。 此外,它不显示总时间,我相信这是问题。 我需要以某种方式指定长度,帧率,但我找不到足够的信息。 我以为从ffmpeg收到的stream应该包含这个。 而我无法findHTTP中的相应标题。 以下是这个stream代码转换器模块用于MP4的标志: [ '-i', '-', '-vf', 'scale=min(trunc(1280/hsub)*hsub\\,trunc(a*720/hsub)*hsub):min(trunc(720/vsub)*vsub\\,trunc(1280/a/vsub)*vsub)', '-vcodec', 'h264', '-b:v', […]

用Webtorrentstream式传输MP4

我正在运行一个节点服务器,我想从使用WebTorrent( https://webtorrent.io/docs )的磁链接streamvideo。 当我运行这个,看起来好像文件没有被正确的引用,即使我已经设置了一个variables作为.mp4文件。 为了清楚起见,我在这个例子中添加了一个给定的torrentID(磁铁链接),以消除我可能使用express和URL的任何问题。 这个磁力链接导致以MP4格式下载音乐video。 video播放器正在显示,但没有播放video。 我假设这意味着我不想访问正确的文件。 如果您需要了解更多关于WebTorrent的信息,请访问https://webtorrent.io/docs var fs = require("fs"), http = require("http"), url = require("url"), path = require("path"), request = require('request'), host = '127.0.0.1', port = 3000, express = require("express"), app = express(), server = http.createServer(app), WebTorrent = require('webtorrent'), client = new WebTorrent(); app.get('/streamvid/:magLink', function(req, res){ //var torrentID = req.params.magLink; var […]