用 ffmpeg 把目录 a 下的所有 mp4 文件切割成 8 秒一段,并且建立视频名称为名的文件夹。
比如 a 文件夹下 123.mp4 40 秒钟,234.mp4 80 秒, 运行后就变成目录下这 2 个 mp4 不变,a 目录内多了 2 个文件夹,分别是 123 和 234 。 123 存放了切成 5 段的 123.mp4 。 234 成放了切成 10 段的 234.mp4
a
├── 123.mp4
├── 234.mp4
├── 123
│   ├── 123+0001.mp4
│   ├── 123+0002.mp4
│   └── 123+0003.mp4
└── 234
    ├── 234+0001.mp4
   ├── 234+0002.mp4
    ├── 234+0003.mp4
    └── 234+0004.mp4
最后的输出最好是“目录名+0001.mp4”“目录名+0002.mp4”“目录名+0003.mp4”
shell 和 python 均可。
ffmpeg 写法是
ffmpeg -i /Users/abu/Movies/示例.mp4 -c copy -map 0 -segment_time 8 -f segment output%03d.mp4
|  |      1eason1874      2022-07-31 00:38:09 +08:00 大概这样,目录名最好别跟文件同名,我这里的格式是 123 对应 123-segments  ``` import os import glob mp4filelist = glob.glob("/opt/videos/*.mp4") for mp4file in mp4filelist: basename = os.path.basename(mp4file) segmentsdir= f"{mp4file}-segments" if not os.path.exists(segmentsdir): os.makedirs(segmentsdir) os.system(f"ffmpeg -i {mp4file} -c copy -map 0 -segment_time 8 -f segment {segmentsdir}/{basename}+%03d.mp4") ``` | 
|  |      2anlegong      2022-07-31 00:38:16 +08:00 a ├── 123.mp4 ├── 234.mp4 ├── 123 │ ├── 123+0001.mp4 │ ├── 123+0002.mp4 │ └── 123+0003.mp4 └── 234 ├── 234+0001.mp4 ├── 234+0002.mp4 ├── 234+0003.mp4 └── 234+0004.mp4 歪个楼,,, 这个是怎么生成的,有什么专用的小工具或脚本命令吗? | 
|  |      3eason1874      2022-07-31 00:39:09 +08:00  1 发出来空格被吞了,你自己加上吧,也就几句,应该不难 | 
|      6monzuguan      2022-07-31 17:40:25 +08:00  1 | 
|  |      7kkocdko      2022-08-01 02:53:19 +08:00 建议直接输出 m3u8 ,会自动切好 ts ,然后再批量转回 mp4 。 使用 -c copy 参数,不会重新编码。 | 
|      8ruidoBlanco      2022-08-01 10:45:06 +08:00  1 不能一行写了算我输。 for i in *.mp4; do name=${i%%.mp4} ; mkdir -p $name; ffmpeg -i $i -c copy -map 0 -segment_time 8 -f segment "${name}/${name}%03d.mp4"; done | 
|  |      9zjvbqla OP @ruidoBlanco 给力。 |