FFmpeg 如何使用 bash 生成一系列视频
FFmpeg how generate a sequence of videos with bash
我尝试编写一个 .sh 来读取一个文件夹,创建一个 mp4 文件的播放列表,然后生成一个唯一的大视频,其中包含在该文件夹中找到的所有视频的序列,并将其编码为破折号:
printf "file '%s'\n" ./*.mp4 > playlist.sh
ffmpeg -f concat -safe 0 -i playlist.sh -c copy concat.mp4
直到现在我都按照 demux concat 官方 guido 到 ffmpeg 网站。
没有结果,还有以下给我 "more than 1000 frames duplicated between videos of the sequence"
ffmpeg -f concat -i playlist.sh -c:a aac -b:a 384k -ar 48000 -ac 2 -c:v libx264 -x264opts 'keyint=50:min-keyint=50:no-scenecut' -r 25 -b:v 2400k -maxrate 2400k -bufsize 1200k -vf "scale=-1:432 " out.mp4
非常感谢
抱歉,无法评论(还)...
你的命令是正确的,我可以连接一些示例视频。
你总是得到提到的错误,还是其他什么?视频是否有效,或者没有创建视频?
在大多数情况下,输入视频不正确。错误的输入格式(不适合文件扩展名)或更糟的是在错误的帧结束。
也许你可以提供视频?
PS:需要在第二个命令中添加-safe 0
以避免错误[concat @ 0x7fbfd1000000] Unsafe file name './small.mp4'
提示:不要为您的视频文件列表使用文件扩展名 .sh
。此扩展名用于 shell 脚本,因此可能会造成混淆。只需使用 .txt
.
更新@Massimo Vantaggio
我们不应该创建新的答案,但我不能评论你的,我也不知道如何继续我们的讨论,所以我编辑我的答案。
您的视频看起来并没有太大不同。看不到,第一个有什么问题
也许您可以使用 ffprobe -report input.mp4
获取更多信息。查找错误或警告。
我的假设仍然是视频被硬切(通过转换软件),所以关键帧被弄乱了或其他原因。
您也可以尝试先使用 ffmpeg 重新编码您的视频。之后,它应该完全兼容ffmpeg ;)
像这样:
ffmpeg -i small.mp4 -acodec aac -ab 192k -vcodec libx264 -vb 1024k -f mp4 output.mp4
使用输入视频中的 -ab
和 -vb
,或者至少使用输入的比特率。质量会下降一点,文件大小会增加,但应该没问题。
我尝试编写一个 .sh 来读取一个文件夹,创建一个 mp4 文件的播放列表,然后生成一个唯一的大视频,其中包含在该文件夹中找到的所有视频的序列,并将其编码为破折号:
printf "file '%s'\n" ./*.mp4 > playlist.sh
ffmpeg -f concat -safe 0 -i playlist.sh -c copy concat.mp4
直到现在我都按照 demux concat 官方 guido 到 ffmpeg 网站。 没有结果,还有以下给我 "more than 1000 frames duplicated between videos of the sequence"
ffmpeg -f concat -i playlist.sh -c:a aac -b:a 384k -ar 48000 -ac 2 -c:v libx264 -x264opts 'keyint=50:min-keyint=50:no-scenecut' -r 25 -b:v 2400k -maxrate 2400k -bufsize 1200k -vf "scale=-1:432 " out.mp4
非常感谢
抱歉,无法评论(还)...
你的命令是正确的,我可以连接一些示例视频。 你总是得到提到的错误,还是其他什么?视频是否有效,或者没有创建视频? 在大多数情况下,输入视频不正确。错误的输入格式(不适合文件扩展名)或更糟的是在错误的帧结束。 也许你可以提供视频?
PS:需要在第二个命令中添加-safe 0
以避免错误[concat @ 0x7fbfd1000000] Unsafe file name './small.mp4'
提示:不要为您的视频文件列表使用文件扩展名 .sh
。此扩展名用于 shell 脚本,因此可能会造成混淆。只需使用 .txt
.
更新@Massimo Vantaggio
我们不应该创建新的答案,但我不能评论你的,我也不知道如何继续我们的讨论,所以我编辑我的答案。
您的视频看起来并没有太大不同。看不到,第一个有什么问题
也许您可以使用 ffprobe -report input.mp4
获取更多信息。查找错误或警告。
我的假设仍然是视频被硬切(通过转换软件),所以关键帧被弄乱了或其他原因。
您也可以尝试先使用 ffmpeg 重新编码您的视频。之后,它应该完全兼容ffmpeg ;)
像这样:
ffmpeg -i small.mp4 -acodec aac -ab 192k -vcodec libx264 -vb 1024k -f mp4 output.mp4
使用输入视频中的 -ab
和 -vb
,或者至少使用输入的比特率。质量会下降一点,文件大小会增加,但应该没问题。