如何通过循环图像生成视频,然后在不使用 ffmpeg re-encoding 的情况下与另一个很长的视频连接?
How to generate a video by looping an image and then concat with another very long video without re-encoding using ffmpeg?
我有一张图片和一段很长的视频(1.5 小时)。
现在我想通过循环图像生成一个大约5秒的标题视频,然后将它与长视频拼接起来。由于视频很长,我不想re-encode 视频。
我尝试使用
生成标题视频
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 的导出速度不如我预期,因为它们 re-encode 视频。
使用:
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.
我有一张图片和一段很长的视频(1.5 小时)。 现在我想通过循环图像生成一个大约5秒的标题视频,然后将它与长视频拼接起来。由于视频很长,我不想re-encode 视频。 我尝试使用
生成标题视频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 的导出速度不如我预期,因为它们 re-encode 视频。
使用:
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.