用 ffmpeg 實現批量剪切視頻
The on what we do in the .
一直對編輯視頻很有興趣,上大學的時候學了一些視頻剪輯的軟件,已經好久沒用了,現在也都忘的差不多了。前段時間弄了個頭條號,想發一些視頻,就又想做視頻這回事了,要不還真快忘記自己曾經做過一些小視頻了(捂臉)。其實現在想要做的視頻,不需要做很多特效,也不需要做配字幕等這些內容,所以不是很難,但是要做的量比較多,算起來要花費的時間也不算少,但是又不想在這件事上浪費太多的時間,嗯,這個時候懶的特質就該展示它的作用了。既然自己不想做,那就只好想辦法讓機器做了,于是就發現還真不是我一個人這么懶(哈哈)。我用的是 mac,就以這個系統為例記錄一下這個過程,至于 怎么辦,自己試吧,因為我懶得試那個了。
既然是用 ,當然第一步就是要下載 。使用 下載。
brew
下載好之后就可以開始了
-i ".mp4" -ss 2 -to 3 - copy - copy ".mp4"
-i ,-ss,-to 等等都是 的命令。這樣一條命令只能操作一次,如果想要剪輯多條,這樣的命令就要重復多次,顯然不能用剪一次換個參數再輸入一次這條命令,這樣效率太差了不是我們想要的,那么該用什么方法呢?多次執行一個操作,我們第一個想到的就是循環, 但如何在終端里循環呢,這又是個問題。首先想到既然要寫循環,那么就需要使用一種語言來寫,面這種語言在運行時可以控制 執行循環里的命令。這時就想到用 來寫, 的教程可以參考菜鳥教程。
startTime=0
endTime=0
length=3697
i=0
while [ $endTime -le $length ]; do
?#statements
?i=$[$i+1]
?endTime=$[$startTime+280]
?ffmpeg -i /Users/dddd/Downloads/S01.E01.mp4 ?-ss $startTime -to $endTime -acodec copy -vcodec copy $i.mp4
?startTime=$[endTime]
?
?
done
這是我寫一個每隔 280s 切割一個視頻的腳本,一個多小時的視頻切成 14 個視頻也就只用了不到 5 分鐘,速度還是可以的,時間也很精確。對于視頻時間的問題,這幾天一直在遇到,在項目中也遇到了處理視頻的功能,有幾個功能需要根據一定的條件定位到相應的時間點去播放,但是由于視頻關鍵幀的問題,定位的時候,它總是會尋找與當前位置最近的關鍵幀,然后跳到關鍵幀的位置,這就會出現定位不準的問題,如果用過格式工廠的朋友肯定也遇到過這樣的問題,目前對于截視頻找到了這種方法,但是對于在項目中定位不準的問題還是沒能好的解決方法。在網上也找過一些資料,大多都是通過添加視頻關鍵幀的方法解決的,但這不是我想要的方法,還在尋找當中。。。
聲明:本站所有文章資源內容,如無特殊說明或標注,均為采集網絡資源。如若本站內容侵犯了原著者的合法權益,可聯系本站刪除。