我需要使用来自硬件编码器的数据创建一个MP4容器。编码器输出PCM 16位带符号音频和原始H.264 ES视频帧。
此ffmpeg
命令行有效,但音频和视频未同步。
从其他帖子中我知道itsoffset
only works with video,也许还有doesn't work with -v copy
我已经确认,应用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
编辑我
这里是上述命令中引用的指向the audio/video input files的链接。
答案 0 :(得分:0)
-itsoffset
适用于所有类型的文件-该应用程序与媒体无关。
但是,ffmpeg在编写输出文件时间戳方面有两个问题:同步各种流以及根据输出格式约束避免负时间戳。为了做到这一点,ffmpeg可以在应用偏移后处理一个或多个流的时间戳。这会产生意想不到的效果。
为了可靠地使用其偏移,在可能的情况下应为正数,最好在可能的情况下应用于纯音频输入。如果希望向前播放音频,跳过较早的内容,请在音频输入之前使用-ss X
。要对视频执行相同操作,您可以执行相同操作,但通常需要转码才能获得预期结果。