我目前使用此命令来合并视频、水印图像和音轨 -
ffmpeg -y -an -i L4472.mp4 -vn -i TTS-Audio-Music.mp4 -i IGR-Video-Service-75%.png -filter_complex "[0][2]overlay=10:10:format=yuv420" -c:v libx264 -crf 17 -pix_fmt yuv420p -c:a copy Z:\02Videos\Final\L4472.mp4
音频文件为 15 秒,但我的一些视频只有 5-6 秒,所以我需要循环播放视频才能播放整个音频文件。我首先尝试使用
ffmpeg -stream_loop -1 -i L4472.mp4 -t 15 -c copy Z:\02Videos\Final\L4472.mp4
然后运行第一个代码,但总是出现错误,并且输出文件无法播放。
我之前尝试使用 2 个单独的命令添加水印和音频时遇到过类似的问题。所以我想用一个代码来同时完成所有这些操作。
另外,我想确保视频文件中的原始音轨不会在输出中使用。所以请帮我找到一种方法,使用单个命令将这 3 个合并为 1 个输出:
- 视频(无原始音频),循环播放 15 秒
- 水印图像
- 音轨
您可以从此链接下载我使用的 3 个示例文件 -https://we.tl/t-HtyzDy7lAw
提前感谢您的时间和帮助。
答案1
-stream_loop -1
在 之前添加-i L4472.mp4
,并-shortest
在 之前添加-c:v
。
-stream_loop -1
对 之后的输入应用无限循环-i
。-shortest
当最短输入流结束时完成编码(由于视频持续时间无限,因此音频流将是最短的)。
示例命令:
ffmpeg -y -an -stream_loop -1 -i L4472.mp4 -vn -i TTS-Audio-Music.mp4 -i IGR-Video-Service-75.png -filter_complex "[0][2]overlay=10:10:format=yuv420" -shortest -c:v libx264 -crf 17 -pix_fmt yuv420p -c:a copy Final_L4472.mp4