使用 FFMPEG 將 FLV 轉換為 MP4 並保持質量

使用 FFMPEG 將 FLV 轉換為 MP4 並保持質量

我嘗試使用 ffmpeg 將 flv 檔案轉換為 mp4,以便在 iOS 裝置上播放,但轉換後的影片品質比原始影片差很多。

這是我使用的命令:

ffmpeg -i input.flv -ar 22050 output.mp4

如果有人能為我提供 flv 到 mp4 轉換的最佳設置,我將非常感激。

答案1

根據 FLV 中使用的編解碼器,您可能只需將其重新包裝在 mp4 容器中即可。您將需要H.264視訊MPEG4 simple profileAAC音訊。您可以使用以下命令找到有關來源文件的一些信息ffmpeg -i input.flv

我不確定僅使用 H.264/MPEG4 Simple + AAC 是否足夠好,或者是否有支援的編解碼器的特定選項。測試起來很容易:

嘗試使用

ffmpeg -i input.flv -c copy -copyts output.mp4

-copytscopy timestamps。它將有助於音訊同步。

如果這不起作用,請嘗試強制使用音訊和視訊編解碼器。這將重新編碼文件:

ffmpeg -i input.flv -c:v libx264 -crf 23 -c:a aac -b:a 160k output.mp4

如果您只想更改音訊或視訊編解碼器,您可以使用-c:a copy-c:v copy複製您想要保留的編解碼器。

要提高轉碼時使用的視訊質量,您可以使用較低的 CRF 值,例如低至 18 的值。

若要提高音訊品質,請選擇更高的位元率(上例為 160k)。

對於音訊和視訊質量,您的結果將根據來源的品質而有所不同。請注意,您對任何原始來源所能做的事情都是有限的 - 最多,您最終會獲得與來源相同的品質。嘗試不同的品質水平和/或比特率絕對是值得的。

有關 FFMPEG aac 編碼的更多信息(我一直指的是 ffmpeg 網站上描述的「本機」編碼器)。


關於問題中建議的 ffmpeg 指令...

-ar指音頻取樣率。我建議根本不要弄亂這個參數。如果您想使用音訊編碼,請調整位元率(-b:a 160k上面)並讓編碼器根據該位元率選擇要執行的操作。

不過,作為背景,CD 品質是 44100Hz 取樣;典型視訊使用 48000Hz。

您可能會注意到,原始問題範例中的 22050 是 cd 品質取樣率的 1/2。如果您要對 CD 材料進行下轉換,這將是一個不錯的選擇。如果您從 48KHz 來源開始,我會使用 24Khz。 (但同樣,我建議只選擇目標位元率並讓編碼器根據需要更改取樣率。)

ffmpeg -i您應該從我在頂部建議的命令中獲取有關原始材料的採樣率的資訊。

相關內容