FFMPEG在轉換影片格式時加入音軌

FFMPEG在轉換影片格式時加入音軌

背景

我需要將 AVI 檔案轉換為 H264 (MP4)。我透過以下方法成功做到了這一點:

-i mymovie.avi -c:v libx264 -crf 19 -preset slow -c:a libfaac -pix_fmt yuv420p -f mp4 -b:a 192k -y -an output.mp4

我透過 C# .Net Winforms 應用程式呼叫該命令,儘管我懷疑這對答案影響不大。

問題

如何添加音軌?我需要添加一個,因為我需要能夠將影片上傳到 Instagram,而 Instagram 似乎拒絕沒有音軌的文件(令我煩惱)。事實上,我不需要很長的音軌。我的想法是 MP3 格式的幾秒鐘的「沉默」。

我想我需要 AAC 音訊作為輸出。

作為記錄,我還意識到該-an命令不會提供任何音頻,我在後來的嘗試中將其刪除。

迄今為止的嘗試

我認為我需要使用該-shortest命令,因為音訊會比視訊短。實際上,我將添加一個空白 MP3(或類似的),以便在編碼時獲得嵌入視訊中的音訊串流。

我也嘗試過使用該-map命令但沒有成功。

答案1

好的,這是我正在工作的命令。我發現我libfaac的 ffmpeg 版本中沒有,所以我切換了。我也不需要這些-map選項,因為 FFMPEG 可以很好地處理 2 個輸入,無需額外的配置。

-i test.avi -i music.mp3 -c:v libx264 -crf 19 -preset slow -c:a libvo_aacenc -pix_fmt yuv420p -f mp4 -b:a 192k -y -shortest output.mp4

我的原作和我的作品的差別是:

  • libvo_aacenc 替換libfaac
  • -shortest添加是為了處理比視頻短的音頻
  • -i用於提供音訊輸入

更新

在評論中進行一些重要輸入後的命令現在是

-i test.avi -i music.mp3 -c:v libx264 -crf 19 -preset slow -c:a aac -strict experimental -pix_fmt yuv420p -f mp4 -b:a 192k -y -shortest output.mp4

答案2

您可以使用以下命令產生無聲音訊串流aevalsrc音訊來源:

ffmpeg -y -i test.avi -f lavfi -i aevalsrc=0 -c:v libx264 -crf 19 -preset slow \
-pix_fmt yuv420p -shortest output.mp4

這比使用空白音訊檔案作為輸入更容易。

相關內容