批量去除影视剧中的片头片尾

1. 下载ffmpeg并配置环境变量

ffmpeg下载地址
Windows下配置ffmpeg环境变量

2. 运行脚本

Git下载地址
Windows系统下如何运行.sh脚本文件

在Windows上面可以安装git,然后使用Git Bash运行此脚本。
视频目录一定要用英文双引号括起来。

./cut.sh "视频目录" 片头长度(秒) 片尾长度(秒)
./cut.sh "E:\Downloads\x" 20 40

脚本内容

#!/bin/bash

# 用法
# 目录一定要用英文双引号括起来
# ./cut.sh "E:\Downloads\x" 20 40

filepath=$1                     #视频目录
beg=$2                          #片头秒
end=$3                          #片尾秒

# 将windows路径转换为linux路径
########################################################

win_path=$filepath # 脚本的第一个参数就是windows路径

tmp_path=${win_path/:/} # 将冒号删掉
tmp_path=${tmp_path//\\/\/} # 将\\替换为/

disk_id=${tmp_path:0:1} # 取出第一个字母,也就是C盘的C,冒号后面第一个0指的是从下标为0的地方开始提取,第二个冒号后面的1表示提取一个字母
disk_id=$(echo $disk_id | tr [:upper:] [:lower:]) # 大写转小写

other_path=${tmp_path:1} # 路径中除了磁盘以外的部分

filepath="/"${disk_id}${other_path} # 需要将/接在路径最前方

########################################################

# 进入视频目录
cd $filepath

# 解决文件名中有空格的问题
IFS=$'\n'

#用 for 循环直接获取当前目录下的 mp4、mp3、avi 等文件循环处理,单个文件可以去掉 for 循环
filename=`ls *.{mp4,mkv,avi,ts,flv,mov,mwv,webm}`

for i in $filename; do
    #将元数据信息临时保存到 tmp.log 文件中
    #echo $i
    ffmpeg -i "$i" > tmp.log 2>&1
    #获取视频的时长,格式为  00:00:10,10 (时:分:秒,微妙)
    time="`cat tmp.log |grep Duration: |awk  '{print $2}'|awk -F "," '{print $1}'|xargs`"
    #echo $time
    #求视频的总时长,先分别求出小时、分、秒的值,这里不处理微秒,可以忽略
    hour="`echo $time |awk -F ":" '{print $1}' `"
    min="`echo $time |awk -F ":" '{print $2}' `"
    sec="`echo $time |awk -F ":" '{print $3}'|awk -F "." '{print $1}' `"
    #echo $hour $min $sec
    num1=`expr $hour \* 3600`
    num2=`expr $min \* 60`
    num3=$sec
    #计算出视频的总时长(秒)
    sum=`expr $num1 + $num2 + $num3`  
      
    #总时长减去开头和结尾就是截取后的视频时长,并且这里不需要再转回 hour:min:sec 的格式,直接使用结果即可
    newtime=`expr $sum - $beg - $end`
    #echo $newtime
    #echo "-----------:"$newtime
      
    #截取新视频存放目录,哪果不存在则创建
    if [[ ! -d ./out ]];then
        mkdir ./out
    fi
    # pwd
    # -ss去掉片头,-t一直截到视频的尾部的总时长,减掉尾部时长的总时长,就是去掉了片尾
    ffmpeg -ss $beg -i "$i" -c copy -t $newtime ./out/"$i"
done
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
批量片头片尾batffmpeg是一种使用bat脚本和FFmpeg命令来实现批量去除视频片头片尾的方法。 首先,需要安装好FFmpeg软件,并将其路径添加到系统环境变量,以便能够在命令行直接使用FFmpeg命令。 接着,可以创建一个bat脚本文件,并使用文本编辑器打开它。在脚本文件,可以使用for循环遍历存放待处理视频文件的文件夹,并逐个处理视频文件。 在每个视频文件的处理过程,可以使用FFmpeg命令来去除片头片尾。对于片头,可以使用命令"ffmpeg -ss [片头时长] -i [输入文件路径] -c copy [输出文件路径]",这样可以截取掉片头部分,并将剩余的视频内容保存为一个新的文件。对于片尾,可以使用命令"ffmpeg -i [输入文件路径] -c copy -t [总时长-片尾时长] [输出文件路径]",这样可以截取掉片尾部分。 在完成去除片头片尾的处理之后,可以将处理后的视频文件保存到一个新的文件夹,或者直接覆盖原始视频文件。 最后,保存并运行bat脚本文件。脚本会自动遍历待处理视频文件夹的所有视频文件,并按照设定的规则去除片头片尾,从而实现批量处理的效果。 需要注意的是,由于视频文件的格式和编码不同,可能需要调整FFmpeg命令的参数来适应不同的视频文件。此外,对于批量处理大量视频文件时,可能需要考虑使用多线程或并行处理来提高处理速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值