我正在尝试使用 ffmpeg 将三个视频文件(每个 16 秒长)合并到一个文件中。由于它们是 mpeg 格式,我只是尝试使用cat
命令将它们连接到一个文件中。问题是当我运行生成的文件 ( video.mpg
) 时,它被报告为大约 16 秒长(与第一个连接的视频相同)。有趣的是,当我在 VLC 中播放文件时,我可以观看整个 48 秒的视频,即使视频进度条也最多只报告 16 秒。
cat
在使用命令添加另外两个视频后,文件“属性”(例如持续时间等)似乎没有更新。
希望有任何关于我如何解决这个问题的建议。
以下是我创建的 BASH 脚本的相关部分:
mkfifo intermediate1.mpg
mkfifo intermediate2.mpg
mkfifo intermediate3.mpg
ffmpeg -i "./tmp/final01.mp4" -qscale 1 -y intermediate1.mpg < /dev/null &
ffmpeg -i "./tmp/final02.mp4" -qscale 1 -y intermediate2.mpg < /dev/null &
ffmpeg -i "./tmp/final03.mp4" -qscale 1 -y intermediate3.mpg < /dev/null &
echo "[audioforge] Stitching files "
cat intermediate1.mpg >> ./tmp/video.mpg
cat intermediate2.mpg >> ./tmp/video.mpg
cat intermediate3.mpg >> ./tmp/video.mpg
# Convert back to mp4 format.
ffmpeg -i "./tmp/video.mpg" -qscale 1 -y "./tmp/video.mp4"