![ffmpeg mp4 文件无法播放完](https://linux22.com/image/1601411/ffmpeg%20mp4%20%E6%96%87%E4%BB%B6%E6%97%A0%E6%B3%95%E6%92%AD%E6%94%BE%E5%AE%8C.png)
我使用以下 ffmpeg 命令从图像和音频文件创建了一个 mp4:
ffmpeg -y -i tmp/part1/frame0.png -i tmp/part1/audio0.mp3 -i tmp/part1/frame1.png -i tmp/part1/audio1.mp3 -i tmp/part1/pause0.5.mp3 -shortest -filter_complex "[1:0][4:0]concat=n=2:v=0:a=1[a1];[3:0][4:0]concat=n=2:v=0:a=1[a3];[0:0][a1][2:0][a3]concat=n=2:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" -vcodec libx264 -qp 0 tmp/part1/out.mp4
这样会生成一个包含 2 帧和一个音轨的视频。但是,不知何故,在 VLC 中播放此视频时,最后一帧未显示,并且上传到 YouTube 时,视频长度显示不正确。
我该如何避免这个错误?有没有简单的解决方法?
答案1
在有限的时间内(少于音频片段)循环播放图像。
ffmpeg -y
-loop 1 -t 2 -i tmp/part1/frame0.png
-i tmp/part1/audio0.mp3
-loop 1 -t 2 -i tmp/part1/frame1.png
-i tmp/part1/audio1.mp3
-i tmp/part1/pause0.5.mp3
-shortest
-filter_complex "[1:0][4:0]concat=n=2:v=0:a=1[a1];
[3:0][4:0]concat=n=2:v=0:a=1[a3];
[0:0][a1][2:0][a3]concat=n=2:v=1:a=1[outv][outa]"
-map "[outv]" -map "[outa]" -vcodec libx264 -qp 0 tmp/part1/out.mp4