
我有 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
下載虛擬配音,然後執行以下操作:
像打開普通視訊檔案一樣打開圖像。
計算音訊的持續時間(以秒為單位)並將其四捨五入到最接近的整秒(例如,78.34 秒變為 79 秒)。從現在開始,這個值稱為x。
前往“影片 > 幀速率”,選擇“變更為幀速率 (fps)”並輸入“1/x”作為值。此外,如果您希望產生的檔案具有正常的幀速率(例如 25 fps),請選擇“轉換為 fps”並在其中輸入所需的幀速率。
選擇“視訊>壓縮”並選擇您最喜歡的風格。您可能需要使用調整大小濾鏡來調整影像的大小。
前往“音訊 > 來自其他檔案的音訊”並在其中選擇您的音訊。如果需要,請選擇音訊壓縮方式。
儲存文件。
來源:史蒂芬五世