Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用ffmpeg分割多个mp4视频?当前的解决方案太慢_Python_Video_Ffmpeg_Mp4 - Fatal编程技术网

Python 如何使用ffmpeg分割多个mp4视频?当前的解决方案太慢

Python 如何使用ffmpeg分割多个mp4视频?当前的解决方案太慢,python,video,ffmpeg,mp4,Python,Video,Ffmpeg,Mp4,我想把多个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

我想把多个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
其中10是每个文件的片段数量,30是每个片段的长度


这可能需要一些调试(还没有测试过),而且可能更复杂,比如自动检测每个文件的长度(以及可用片段的数量),根据需要在输出文件名中添加带零的焊盘段编号,等等。

请参阅链接线程答案中的第一个命令。
./massive_split.sh 10 30 /home/msz/Downloads/CartoonVideos/*.mp4