A: ffmpeg -ss 00:10:10.050 -t 15 -i TEST.mkv -y E1.mpeg
B: ffmpeg -i TEST.mkv -y -ss 00:10:10.050 -to 00:10:25.050 E1.mpeg
C: ffmpeg -ss 00:10:10.010 -to 00:10:25.050 -i TEST.mkv -y E1.mpeg
想要把一個影片檔的其中一段剪下來
A這個指令語法正確 可是需要知道duration(15sec)
B這個指令語法正確 可是要等很久(精準定位)
C這個指令語法錯誤
想請問各位大大 要如何修正C的語法 使其結合A跟B的優點
謝謝!!
donotforget0156 wrote:
A這個指令語法正確 可是需要知道duration(15sec)
B這個指令語法正確 可是要等很久(精準定位)
設定選項的所在位置會影響到它的功能
-ss 作為輸入選項 (位於 -i 之前) 直接從指定時間開始讀取/輸出
-ss 作為輸出選項 (位於 -i 之後) 從頭開始讀取,但從指定時間開始輸出
也就是說以下兩種命令都會得到相同的結果:
ffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 cut1.mp4
ffmpeg -i video.mp4 -ss 00:01:00 -to 00:02:00 cut2.mp4
但是如果要不重新編碼 (使用 "copy") 的情況下直接切割影片:
ffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy cut1.mp4
ffmpeg -i video.mp4 -ss 00:01:00 -to 00:02:00 -c copy cut2.mp4
前者因為 ffmpeg 被迫只能從I畫格 (i-frame) 開始,所以實際的分割點是取最接近的I畫格。
後者精準時間但可能會因為輸出 (cut.mp4) 的第一張畫格不是I畫格,而造成無法正常播放的情況。
改用重新編編碼改變GOP結構可以避免此問題。
donotforget0156 wrote:
C這個指令語法錯誤
-to 只能作為"輸出選項"
輸出設定必須位在 -i 與 輸出檔案之間
例如:
ffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy cut.mp4
ffmpeg -i video.mp4 -ss 00:01:00 -to 00:02:00 -c copy cut.mp4
詳情:
http://www.mobile01.com/topicdetail.php?f=510&t=4461015