找回密码
 立即注册
查看: 50|回复: 0

视频批量去片头片尾(FFmpeg+shell脚本)

[复制链接]
发表于 2023-8-25 07:45:14 | 显示全部楼层 |阅读模式
感谢@sbwfnhn提供的脚本,命令如下:
  1. #!/bin/bash
  2. #我这里要切除的开头8秒和结尾7 秒
  3. title_sequence="00:00:08"      #要去掉片头的时间
  4. beg=8                          #把title_sequence转化成秒
  5. end=7                          #片尾秒
  6.   
  7. #用 for 循环直接获取当前目录下的 mp4、mp3、avi 等文件循环处理,单个文件可以去掉 for 循环
  8. filename="*.mp4"
  9. for i in $filename; do
  10.     #将元数据信息临时保存到 tmp.log 文件中
  11.     echo $i
  12.     ffmpeg -i "$i" > tmp.log 2>&1
  13.     #获取视频的时长,格式为  00:00:10,10 (时:分:秒,微妙)
  14.     time="`cat tmp.log |grep Duration: |awk  '{print $2}'|awk -F "," '{print $1}'|xargs`"
  15.     echo $time
  16.     #求视频的总时长,先分别求出小时、分、秒的值,这里不处理微秒,可以忽略
  17.     hour="`echo $time |awk -F ":" '{print $1}' `"
  18.     min="`echo $time |awk -F ":" '{print $2}' `"
  19.     sec="`echo $time |awk -F ":" '{print $3}'|awk -F "." '{print $1}' `"
  20.     #echo $hour $min $sec
  21.     num1=`expr $hour \* 3600`
  22.     num2=`expr $min \* 60`
  23.     num3=$sec
  24.     #计算出视频的总时长(秒)
  25.     sum=`expr $num1 + $num2 + $num3`  
  26.       
  27.     #总时长减去开头和结尾就是截取后的视频时长,并且这里不需要再转回 hour:min:sec 的格式,直接使用结果即可
  28.     newtime=`expr $sum - $beg - $end`
  29.     #echo $newtime
  30.         echo "-----------:"$newtime
  31.       
  32.     #截取新视频存放目录,哪果不存在则创建
  33.     if [[ ! -d ./out_mp4 ]];then
  34.         mkdir ./out_mp4
  35.     fi
  36.     pwd
  37.     #####/usr/local/ffmpeg/bin/ffmpeg -ss 00:00:07 -i $i -t $newtime -c:v copy -c:a copy /data/tmp/$i -y
  38.     echo "文件名不能有空格"
  39.     #./ffmpeg.exe -i "$i" -map 0:v -c:v copy -bsf:v h264_mp4toannexb raw.h264 -y
  40.     #./ffmpeg.exe -fflags +genpts -r 27.2 -i raw.h264 -i "$i" -map 0:v -c:v copy -map 1:a -af atempo=0.90666 -movflags faststart ./out_mp4/"$i"  -y
  41.     # -ss去掉片头,-t一直截到视频的尾部的总时长,减掉尾部时长的总时长,就是去掉了片尾
  42.     ffmpeg -ss $title_sequence -i $i -t $newtime -c:v copy -c:a copy ./out_mp4/$i -y
  43. done
复制代码


软件下载地址:
游客,如果您要查看本帖隐藏内容请回复


使用教程如下:
1.命令复制保存为.sh文件(命令中默认获取的是MP4格式的文件,如其他格式需要修改)
2.命令放在你要处理的视频目录下
3.在目录下左击鼠标选择git Bash Here
4,执行  ****.sh
5.视频会输出到同目录的out_mp4下(输出目录可以在命令中修改)
回复

使用道具 举报

Archiver|小黑屋|CG分享网 CG教程 CG模型 设计素材

GMT+8, 2025-4-24 15:50 , Processed in 0.037025 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表