这个问题在这里已经有了答案:
FFmpeg splitting large files
(1 个回答)
3年前关闭。
很多天后,我想将多个 mp4 视频拆分为 30-40 秒大小的小块,我找到了一个使用 ffmpeg 的答案,即
ffmpeg -i /home/msz/Downloads/CartoonVideos/1.mp4 -ss 180 -t 30 /home/msz/Downloads/NewCartoonVideos/1-7.mp4
但这是单行命令,占用太多,我每次都必须更改它。谁能告诉我其他方法或在脚本/循环中更改此代码?
最佳答案
嗯,
#!/usr/bin/bash
N_FRAGS=$1
SEG_LEN=$2
shift 2
for $FILE in "$@" ; do
SS=0
for (( segment = 1; segment <= N_FRAGS; ++segment )) ; do
OUTPUT=$(dirname $FILE)/(basename $FILE .mp4)-$segment.mp4
ffmpeg -i "$FILE" -ss $SS -t "$SEG_LEN $OUTPUT"
SS=$((SS + SEG_LEN))
done
done
将其保存在
massive_split.sh
下并将其称为./massive_split.sh 10 30 /home/msz/Downloads/CartoonVideos/*.mp4
其中 10 是每个文件的片段数量,30 是每个片段的长度。
这可能需要一些调试(尚未测试),并且可以更复杂,例如自动检测每个文件的长度(以及因此可用的片段数量),根据需要在输出文件名中用零填充段号等.
关于python - 如何使用 ffmpeg 分割多个 mp4 视频?当前解决方案太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51874544/