问题描述
我有一张图片和一个很长的视频(1.5 小时)。 现在我想通过循环图像生成一个大约 5 秒的标题视频,然后将它与长视频连接起来。由于视频很长,我不想重新编码视频。 我尝试使用
生成标题视频ffmpeg -loop 1 -i image.png -c:v libx264 -t 5 -pix_fmt yuv420p head.mp4
然后
ffmpeg -f concat -i list.txt -c:v copy concat.mp4
list.txt 包含的位置
file head.mp4
file longvideo.mp4
我已经在两台机器上尝试过这些操作。 在一台机器上,连接的视频没有音频。而且卡在5-10秒,直接跳到11秒。 在另一台机器上,视频和音频不同步。
为了提供更多信息,我检查了两个视频的编解码器
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name \
-of default=noprint_wrappers=1:nokey=1 xxxxx.mp4
两者都是h264。
我的问题是,如何使用 ffmpeg 正确生成它?如果使用 ffmpeg 很难,有什么方法可以快速完成吗?据我所知,Adobe Premiere 和 Final Cut Pro 的导出速度没有我预期的那么快,因为它们对视频进行了重新编码。
解决方法
使用:
ffmpeg -framerate 60 -loop 1 -t 5 -i image.png -f lavfi -i anullsrc=cl=stereo:r=48000 -vf "scale=1920x1080,setsar=1,format=yuv420p" -c:v libx264 -c:a aac -video_track_timescale 16k -shortest head.mp4
这将匹配 longvideo.mp4
attributes required for proper concatenation。