連接音訊和影像 -> 使用 FFmpeg 輸出為視頻

連接音訊和影像 -> 使用 FFmpeg 輸出為視頻

我有 1 個圖像 (jpg) 和 1 個音訊檔案 (MP3),我想將其輸出為視訊檔案(例如 AVI)。

有誰知道如何使用FFMPEG將兩者結合?我想在音訊播放期間顯示影像。

有人有什麼想法嗎?

答案1

如果您使用的是 Windows,您也可以在 Windows Movie maker 中進行操作...如果您需要說明,請發表評論

對於 FFmpeg 使用這個

ffmpeg -loop_input -vframes 14490 -i imagine.jpg -i audio.mp3 -y -r 30 
    -b 2500k -acodec ac3 -ab 384k -vcodec mpeg4 result.mp4
  • vframes 14490 是為了讓整個audio.mp3 檔案具有連續影像而應循環的幀數

    例如:8分3秒((8m x 60s + 3s)x 30fps = 14490 vf)

資源來自這裡

答案2

有一種比這裡建議的方法更簡單的方法,不需要計算幀數或輸入單個檔案的長度(特別適合批次)。使用最新版本的 ffmpeg,您可以使用該-shortest選項,該選項在最短流結束時停止編碼 - 在本例中為 input.mp3(因為圖像將永遠循環,因此它具有無限長度):

ffmpeg -i input.mp3 -f image2 -loop 1 -r 2 -i input.jpg \
-shortest -c:a copy -c:v libx264 -crf 23 -preset veryfast output.mp4

這對影像/影片使用每秒 2 幀,這應該沒問題,但如果需要,您可以將其設定為更標準的 25。

答案3

蘇班基幾乎是對的。工作命令列如下;

ffmpeg -y -loop 1 -i image.jpg -i audio.mp3 -r 30 -b:v 2500k -vframes 14490 -acodec libvo_aacenc -ab 160k result.mp4
-y

覆蓋輸出檔案而不提示

-循環1

使用 -loop 1 時已棄用選項「-loop_input」。ffmpeg 文檔

-我

輸入檔

-r

每秒幀數
也可以表示為: -r 30000/1001 給出 29.97nnn 的 fps

-b:v

視訊比特率;數字越大,品質越好,但檔案大小越大。

-vframes

如上所述;取得音訊檔案的總時間(以秒為單位)(例如 00:02:41(2 分 41 秒)等於 161 總秒 (2 x 60) + 41)。然後將總秒數乘以您用 -r 指定的每秒幀數(例如 161 x 30 = 4830)。

-vframes 可以替換為 -t 161 (-t 持續時間記錄或轉碼音訊/視訊的「持續時間」秒)

-a編解碼器

針對您要建立的檔案類型使用正確的音訊編解碼器。對於 .mp4,它應該是 AAC 格式。編解碼器 libvo_aacenc 是我的 Windows 7 系統的正確編碼編解碼器。

-ab

音訊比特率

結果.mp4

這是輸出文件的名稱。它可以是您系統的任何合法檔案名稱。如果您未使用 -vcodec 指定視訊編解碼器,該擴充功能將幫助 ffmpeg 確定正確的視訊編解碼器。

答案4

下載虛擬配音,然後執行以下操作:

  1. 像打開普通視訊檔案一樣打開圖像。

  2. 計算音訊的持續時間(以秒為單位)並將其四捨五入到最接近的整秒(例如,78.34 秒變為 79 秒)。從現在開始,這個值稱為x。

  3. 前往“影片 > 幀速率”,選擇“變更為幀速率 (fps)”並輸入“1/x”作為值。此外,如果您希望產生的檔案具有正常的幀速率(例如 25 fps),請選擇“轉換為 fps”並在其中輸入所需的幀速率。

  4. 選擇“視訊>壓縮”並選擇您最喜歡的風格。您可能需要使用調整大小濾鏡來調整影像的大小。

  5. 前往“音訊 > 來自其他檔案的音訊”並在其中選擇您的音訊。如果需要,請選擇音訊壓縮方式。

  6. 儲存文件。

來源:史蒂芬五世

相關內容