背景
我需要將 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
這比使用空白音訊檔案作為輸入更容易。