批量切割视频

系统: debian9
gcc: 9.2.1

sudo apt-get update
sudo apt-get install ffmpeg
ffmpeg -version

切割脚本

#!/bin/bash
#START=00:00:22
START=${1}
CUTTING=${2}

if [ "$2" -eq "0" ]; then 
    FFMPEG(){ ffmpeg -y -hide_banner -i "$i" -c copy -ss "$START" -sseof 0 CUT_"$i"; }
else
    FFMPEG(){ ffmpeg -y -hide_banner -i "$i" -c copy -ss "$START" -to "${END}.${SUFFIX}" CUT_"$i"; }
fi

for i in *.mp4; do
    DURATION=`ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 -sexagesimal ${i}`
    SUFFIX=${DURATION##*.}
    END=`date -d @$(($(date +%s -d ${DURATION})-${CUTTING})) +"%H:%M:%S"`
    FFMPEG
done
## 解压视频文件包 unrar e kj.rar
## 切割视频。(从视频00:00:08处开始切割,到视频结束前第6秒处结束。) 
  ./.cut.sh  00:00:08 6  
## 传送已经切割的文件。
  sz C*

使用ffmpeg的视频中的固定长度的开头/结尾部批量裁剪掉
由于时间仓促,脚本先简单书写并已经可以满足我自己的使用需求,其实可以把此脚本写地更完美。

应用场景有如下图,有一批视频文件,其视频开头处都有30秒固定长度的起始画面,结尾处都有20秒的固定长度结束画面,此时可以用这脚本快速(有多快?就相当于复制粘贴的速度)把多余部分裁剪掉。

脚本使用方法
保留视频「从开头」至「结束前10秒(即:舍弃原视频末尾10秒的视频长度)」的范围

./cut.videos.using.ffmpeg.sh 0 10

保留视频「从开头5分30秒」至「视频结束」的范围

./cut.videos.using.ffmpeg.sh 00:05:30 0

保留视频「从开头1小时00分59秒开始」至「视频结束前的30分钟(30分钟=1800秒)」的范围

./cut.videos.using.ffmpeg.sh 01:00:59 1800

注:如下可指定具体的「起始」和「结束」时间

ffmpeg -hide_banner a.mp4 -c copy -ss 00:10:30 -to 00:30:10 CUT_a.mp4
再批量转码压缩一下收藏起来 :)  批量完成后120秒电脑自动待机(sleep/suspend),Linux is awsome! Life is easier!
parallel -j1 ffmpeg -i {} -hide_banner -c:v libx265 -b:v 100k -vf scale=iw*0.75:ih*0.75 -preset slower -c:a aac -b:a 48k _{.}.mp4 ::: CUT*.mp4; sleep 120; echo password | sudo -S rtcwake -m mem -s 99999

正式转码前可先拿视频的一部分片段(比如截取视频的30秒时长)来测试下输出的效果是否是你理想中的,输出后可直接播放看看即心理有数

ffmpeg -i a.mp4 -c:v libx265 -b:v 100k -vf scale=iw*0.75:ih*0.75 -preset slower -c:a aac -b:a 48k -ss 00:00:00 -to 00:00:30 a.x265.mp4

举例1

ffmpeg -i 2招訓練有效.aac -i 2招訓練有效.mp4 -map 0:0 -map 1:0 out.mp4

举例2
使用的条件是:视频文件中没有音频

ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental output.mp4video.mp4,audio.wav分别是要合并的视频和音频,output.mp4是合并后输出的音视频文件。

下面的命令是用audio音频替换video中的音频

ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental -map 0✌️0 -map 1🅰️0 output.mp4

随机文章