小编jan*_*s86的帖子

将静态文件转换为 h264/mp​​4 流会产生加速视频

我正在构建一个 NodeJS 应用程序,它将静态视频文件转换为可实时发送到客户端(iPad 或浏览器)的流式视频(使用 fluent-ffmpeg 模块)。

一切都设置好了,我现在需要的就是正确配置 ffmpeg。但是我在使用 ffmpeg 时遇到了很多问题。起初我构建了一个 flash 流(flv 使用 lib264 编解码器,效果很好,但当然不适用于 iPad)。

使用我当前的设置,我可以立即听到音频,但图片会在几秒钟后开始播放。然后,我的 30 秒测试文件已被压缩为 3 秒的高速图像。

我如何配置我的 ffmpeg 以便它正确地传输 mp4(当然是一次通过)。似乎它正在流式传输原始 h264,如果是这种情况,我该如何强制使用 mp4 容器。我以为我是通过使用“-f mp4”来做到这一点的

我的正确设置是:

   '-crf 22','-c:v libx264','-f mp4','-movflags','faststart+frag_keyframe'
Run Code Online (Sandbox Code Playgroud)

我也试过:

 '-r 30','-crf 30','-analyzeduration 0','-probesize 1000','-rc_lookahead 0','-fflags nobuffer','-g 75','-ss 0','-threads 0','-vcodec libx264','-qcomp 0.6','-qmin 10','-qmax 51','-qdiff 4','-b:v 400k','-maxrate 400k','-bufsize 800k','-acodec mp3','-ab 192k','-ar 44100','-tune zerolatency','-f mp4','-movflags','faststart+frag_keyframe'
Run Code Online (Sandbox Code Playgroud)

正如您从我尝试过的选项数量所看到的,我变得非常绝望。我基本上只是在黑暗中跑来跑去。

我认为这并不重要,但这些是我的请求标头:

                    res.writeHead(200, { 
                        'Content-Type':'video/mp4',
                        'Content-Length':stat.size,
                        'Content-Range':'bytes '+start+'-'+end+'/'+stat.size,
                        'Transfer-Encoding':'chunked'
                    });
Run Code Online (Sandbox Code Playgroud)

FFmpeg 日志:

            file conversion error ffmpeg version N-52458-gaa96439 Copyright (c) 2000-2013 the …
Run Code Online (Sandbox Code Playgroud)

ffmpeg streaming video-conversion

9
推荐指数
1
解决办法
3472
查看次数

标签 统计

ffmpeg ×1

streaming ×1

video-conversion ×1