我是 FFMPEG 的新手,找不到專門關於此的明確文件。
我正在連接 3 個 mp3(我只想要混合,不需要編碼/轉碼)。
這兩個命令似乎都工作正常。使用“-c”和“-acodec”有什麼區別嗎?
ffmpeg -i "concat:a.mp3|b.mp3|c.mp3" -acodec copy out.mp3
ffmpeg -i "concat:a.mp3|b.mp3|c.mp3" -c copy out.mp3
我在 Google 上搜尋了幾個小時,找到了 ffmpeg 的各種文檔,但沒有一個文檔解釋了 -c 或 -acodec 的實際用途。我認為 -c 代表“編解碼器”,-acodec 代表“音頻編解碼器”?兩者的作用/有什麼差別/哪個比較好?
我發現文件沒有幫助:
https://ffmpeg.org/ffmpeg-all.html
https://gist.github.com/tayvano/6e2d456a9897f55025e25035478a3a50
另外,關於如何改進這一點的任何建議也非常受歡迎(我只需要依次將 3 個 mp3 連接在一起)。
謝謝。
答案1
解決你的標題。
這樣做 -c copy
將複製音訊編解碼器(acodec)和視訊編解碼器(vcodec)
-c copy
是相同的 -acodec copy -vcodec copy
-c:a copy
是相同的-acodec copy
。
-c:v copy
是相同的-vcodec copy
當然,您可以指定編解碼器,例如-vcodec libx264
或-c:v libx264
-c 代表編解碼器。你也可以寫 -codec https://ffmpeg.org/ffmpeg.html 例如 -codec:a copy
如果您不指定 例如-acodec copy
或-acodec blahblah
或-codec:a ...
,那麼它將選擇一些預設的編解碼器。您也可以說-vn
沒有影片。https://stackoverflow.com/questions/9913032/how-can-i-extract-audio-from-video-with-ffmpeg 所以它不會複製影片。或-an
沒有音訊使用 FFmpeg 從視訊檔案中刪除音頻
添加
-acodec
and的語法現已-vcodec
棄用。-c:a
-c:v
-codec:a
-codec:v
答案2
-c
or-codec
是通用串流選擇器,因此您可以使用它來設定任何串流(無論是音訊還是視訊)的編解碼器。
-acodec
是此功能的子集,可自動將範圍限定為音訊串流
-acodec:1
與 相同-codec:a:1
,表示您正在為第二個音訊串流設定編解碼器(第一個音訊串流為 0)。
從您的連結文件:-c,-codec
-c[:stream_specifier] 編解碼器(輸入/輸出,每個串流) -codec[:stream_specifier] 編解碼器(輸入/輸出,每個串流)
Select an encoder (when used before an output file) or a decoder (when used before an input file) for one or more streams. codec is the
解碼器/編碼器的名稱或特殊值副本(僅輸出)以指示流不被重新編碼。
-a編解碼器
-acodec 編解碼器(輸入/輸出)
設定音訊編解碼器。這是 -codec:a 的別名。
還有一個 -vcodec,其工作方式與視訊串流相同。
所以把它們放在一起考慮來自文檔的這個命令
ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT
這就是說,所有串流都使用原始編解碼器 ( -c copy
),但第二個視訊串流使用 libx264 ( -c:v:1 libx264
),第 138 個音訊串流使用 libvorbis ( -c:a:137 libvorbis
)。
因此,-c
您可以控制所有類型的串流,而-acodec
和-vcodec
只是其音訊或視訊子集的快捷方式。