【问题标题】:Impossible to redirect video stream after conversion (mkv to mp4)转换后无法重定向视频流(mkv 到 mp4)
【发布时间】:2020-04-10 01:35:38
【问题描述】:

我目前正在实现一个学校项目,该项目旨在使用 torrent-stream(带有磁力链接)的流媒体视频网站(如 Netflix)。我将 NodeJS 用于流部分。

我的问题是:当我尝试同时流式传输和转换(使用 ffmpeg)视频时,我无法将流重定向到 HTML 5 播放器。我认为这是因为我只是不知道转换后文件的最终大小是多少。 在浏览器的控制台中,我收到以下消息:net::ERR_CONTENT_LENGTH_MISMATCH 200 (OK)

我试图把它放在标题中:Transfer-Encoding: chunked 而不是 Content-Length 我指定流(转换前)完美运行

这是我的代码:

getTorrentFile.then(function (file) {
                res.setHeader('Content-Type', 'video/mp4');
                res.setHeader('Content-Length', file.length);
                const ranges = parseRange(file.length, '15' /* variable à comprendre */, { combine: true });
                console.log(ranges);
                if (ranges === -1) {
                    // 416 Requested Range Not Satisfiable
                    console.log('416')
                    res.statusCode = 416;
                    return res.end();
                } else if (ranges === -2 || ranges.type !== 'bytes' || ranges.length > 1) {
                    // 200 OK requested range malformed or multiple ranges requested, stream ent'ire video
                    if (req.method !== 'GET') return res.end();
                    console.log('200')
                    stream = file.createReadStream()
                    ffmpeg(stream)
                    .videoCodec('libx264')
                    .audioCodec('aac')
                    .output(res)
                    .output('./video/' + film + '_s' + season + '_e' + episode + '.mp4')
                    .outputFormat('mp4')
                    .outputOptions('-movflags frag_keyframe+empty_moov')
                    .on('error', function(err) {
                        console.log('An error occurred: ' + err.message);
                    })
                    .on('progress', function(progress) {
                        console.log('Processing: ' + progress.targetSize + 'kb done');
                      })
                    .on('end', function() {
                        console.log('Processing finished !');
                    })
                    .addOutputOption('-acodec')
                    .run()


对不起,如果我不是很清楚,如果您需要更多信息,请问我一些问题:)

谢谢你的帮助,再见:)

【问题讨论】:

    标签: node.js ffmpeg stream torrent nodejs-stream


    【解决方案1】:

    Mp4 不能像那样流式传输。您必须等到文件完成后才能进行流式传输。如果您想即时转码,请使用可以支持的格式,例如 hls。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-25
      相关资源
      最近更新 更多