无法在转换后重定向视频流(从mkv到mp4)

问题描述 投票:0回答:1

我目前正在实现一个学校项目,该项目旨在使用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个回答
0
投票

MP4不能像这样流式传输。您必须等到文件完成后再进行流传输。如果您想即时转换代码,请使用支持这种格式的格式,例如hls。

© www.soinside.com 2019 - 2024. All rights reserved.