Ffmpeg
使用 FFmpeg 自動將大型 mp3 文件拆分為文本文件中提供的不同時間點的多個文件
我有一個很大的 mp3 文件;我想在不同的時間點將其拆分為 480 個 mp3 文件。我想知道除了一個一個拆分之外,是否有一種簡單的方法可以做到這一點。我可以在文本文件中提供不同的拆分時間,然後在 FFmpeg 中執行一個命令嗎?
使用這個腳本
#! /bin/bash x="00:00:00" z=0 filename=$(basename -- "$2") ext="${filename##*.}" filename="${filename%.*}" initcmd="ffmpeg -nostdin -hide_banner -loglevel error -i $2" while read y do initcmd+=" -ss $x -to $y -c copy $filename$z.$ext" let "z=z+1" x=$y done < $1 $initcmd
使其可執行
chmod +x
並使您的時間配置文件像這樣,時間戳用空格分隔。
00:02:30 00:05:40
記得在最後一次輸入後按輸入鍵。
然後語法是
./splitter.sh ./time ./Big_Buck_Bunny.mp4
它將產生兩個文件
1.mp4
,2.mp4
第一個是從 00:00:00 到 00:02:30,第二個是從 00:02:30 到 00:05:40。如果要在輸出中保留文件,請執行此命令ffprobe -v error -show_entries format=duration -sexagesimal -of default=noprint_wrappers=1:nokey=1 Big_Buck_Bunny.mp4 >> ./time
(這會獲取文件的長度並添加到您的時間配置中)
解釋
第 2 行:設置初始開始時間
第 3 行:設置輸出文件名編號
第 4、5 和 6 行:設置副檔名(來自SO 文章)
第 7 行:帶有初始參數的字元串
while 循環:逐行讀取(來自SO)
行ffmpeg:
-nostdin
停止 ffmpeg 吃第一個字元
-hide_banner -loglevel panic
抑制 ffmpeg 消息
-i
設置輸入文件名Line initcmd+=:添加輸出名稱和參數
-ss
start time-to
end time-c copy
使用相同的編解碼器作為輸入,沒有質量損失並且最快。第 10 行:增加文件名編號(來自AskUbuntu Post)
第 11 行:設置新起點
編輯: