FFMPEG中的「-acodec」和「-c」有什麼區別

FFMPEG中的「-acodec」和「-c」有什麼區別

我是 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 從視訊檔案中刪除音頻

添加

-acodecand的語法現已-vcodec棄用。-c:a-c:v-codec:a-codec:v

答案2

-cor-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只是其音訊或視訊子集的快捷方式。

相關內容