我需要使用来自硬件编码器的数据创建一个MP4容器。编码器输出PCM 16位签名音频和原始H.264视频帧。
这个ffmpeg
命令行可以工作,但是音频和视频不同步。
我已经证实,应用itsoffset
没有任何效果。
这是命令行。有什么建议吗?
有一篇文章建议,如果你重新编码视频,itsoffset
就能工作。但是,这样做需要CPU的能力,并增加延迟。(那么,硬件编码器有什么意义呢?)
ffmpeg -f s16le -ar 44.1k -ac 2 -i Audio_20190110-165736.pcm
-fflags +genpts -itsoffset -5 -i Video_20190110-165736.264
-c:v copy -c:a aac -b:a 128k
-f mp4 -movflags +faststart output.mp4
编辑I
下面是指向上述命令中引用的音频/视频输入文件的链接。
发布于 2019-01-28 06:23:42
-itsoffset
适用于所有类型的文件--应用程序与媒体无关。
但是,ffmpeg在编写输出文件时间戳方面有两个问题:同步各种流和根据输出格式约束避免负时间戳。为了做到这一点,ffmpeg可以在偏移量被应用之后操纵一个或多个流的时间戳。这会产生意想不到的效果。
为了可靠地使用itsoffset,在可能的情况下,它应该是一个正数,最好在可能的情况下应用于音频输入。如果希望将音频向前移动,跳过前面的内容,请在音频输入之前使用-ss X
。为了对视频做同样的事情,你可以做同样的事情,但是通常需要转码才能达到预期的效果。
https://stackoverflow.com/questions/54126219
复制相似问题