pre*_*pii 3 video ffmpeg video-conversion
我使用 Bandicam 和 MJPEG 编码器录制了一个视频,以获得最少的延迟。现在,我正在尝试使用 ffmpeg 将该大文件转换为 h264 avi。我知道视频流中有丢帧……前两分钟超过 100 个,我认为这仅仅是因为 Bandicam 在跟不上时丢了一些。因此,当我将文件转换为 h264 时,视频和音频不同步,并且随着输出视频的进行越来越不同步。这是我在 ffmpeg 中的基本命令:
ffmpeg -i "C:\...\input.avi" -vcodec libx264 -q 5 -acodec libmp3lame -ar 44100 -ac 2 -b:a 128k "C:\...\output.avi"
Run Code Online (Sandbox Code Playgroud)
我已经尝试了我能想到的一切,包括:
-itsoffset [-]00:00:01
Run Code Online (Sandbox Code Playgroud)
在输入文件之前和之后都试过这个。这不起作用,因为随着视频的进行,它变得越来越不同步。
-async 1
Run Code Online (Sandbox Code Playgroud)
不起作用。
-vsync 1
Run Code Online (Sandbox Code Playgroud)
不起作用,但它确实显示重复丢失的帧。
同一个文件的两个输入,使用-map 0:0 -map 1:1
. 不起作用。
源播放得很好。任何想法如何使用 ffmpeg 转换它并保持音频和视频同步?谢谢。
如果它们是重复的,它可能会丢帧,如果源播放正常,那么您的问题更有可能与 AVI 容器不能很好地处理 VBR 编码格式的事实有关(尤其是 h264 不能很好地与 AVI 配合使用)。我建议由视频倾销到压缩的AVI开始进行测试,因为它是最一致的格式来编码从
ffmpeg -i input.avi -acodec copy -vcodec rawvideo output.avi
Run Code Online (Sandbox Code Playgroud)
然后,假设同步播放,您应该尝试直接进行编解码器复制并将源重新混合为不同的格式,即:
ffmpeg -i input.avi -acodec copy -vcodec copy output.mkv
Run Code Online (Sandbox Code Playgroud)
MKV 通常可以毫无问题地处理您放入其中的任何内容。我什至在我的计算机上的各种 mkv 视频中隐藏了一些加密的 zip 文件,因为您可以在 MKV 中对文件附件进行编码。因此,如果其中任何一个都没有同步问题,那么尝试相同的方法但重新编码视频或音频,但只有一个或另一个启动并保持容器格式一致,以便您知道问题出在哪里。IE:
ffmpeg -i input.avi -acodec copy -vcodec libx264 output.mkv
Run Code Online (Sandbox Code Playgroud)
或者
ffmpeg -i input.avi -acodec libmp3lame -vcodec copy output.mkv
Run Code Online (Sandbox Code Playgroud)
尝试使每个测试转换尽可能简单,即不要更改比特率/采样率,使用我首先列出的示例参数。每完成一项之后,您就会更接近准确地知道自己能做什么和不能做什么。如果您必须使用 h.264,我建议使用 mp4 容器,因为它比 avi 兼容得多,另一方面,如果要求是 avi 容器,那么我建议使用 wmv3 或 msvideo1 作为视频最有可能正确编码。
归档时间: |
|
查看次数: |
21164 次 |
最近记录: |