我正在嘗試使用帶有 FFmpeg 的 Shell 腳本對音頻和影像檔案進行批處理以創建視頻檔案。
- ffmpeg 腳本在終端中作業:
ffmpeg -loop 1 -i image.png -i audio.wav -c:v libx264 -tune stillimage -c:a aac -b:a 192k -pix_fmt yuv420p -shortest output.mp4
- 帶有通配符的嵌套 for 回圈用作批處理腳本:
#!/bin/sh
for img in *.png; do
for wav in *.wav; do
ffmpeg -loop 1 -i $img -i $wav -c:v libx264 -tune stillimage -c:a aac -b:a 192k -pix_fmt yuv420p -shortest ../mb/$img.mp4;
done
done
這里唯一的問題是它創建了比我需要的更多的組合。我希望能夠匹配通配符值并且只將它們混合在一起。我希望能夠提前準備檔案名以使其更容易匹配:例如,僅將 1.png 與 1.wav 匹配以制作 1.mp4,將 2.png 與 2.wav 匹配以制作 2., mp4 等。我可以修改腳本以匹配正則運算式中的通配符,但我不確定是否有辦法執行上述邏輯。這是我正在嘗試的:
#!/bin/sh
img=*.png
wav=*.wav
if [[ ${img%.*} == ${wav%.*} ]];
then
ffmpeg -loop 1 -i $img -i $wav -c:v libx264 -tune stillimage -c:a aac -b:a 192k -pix_fmt yuv420p -shortest $img.mp4;
else
echo "Failure"
fi
這首先覆寫影像檔案,因此它似乎沒有按計劃作業。有沒有更簡單的方法來做到這一點?也許回圈瀏覽一個檔案夾中的影像 {1..5} 和另一個檔案夾中的音頻檔案 {1..5}?
感謝您提供任何見解,并很高興提供更多背景資訊(對此非常新,所以仍在學習)。
uj5u.com熱心網友回復:
您可以像這樣回圈 *.png 并從中派生 *.wav:
for img in *.png; do
ffmpeg -loop 1 -i "$img" -i "${img%.*}.wav" -c:v libx264 -tune stillimage -c:a aac -b:a 192k -pix_fmt yuv420p -shortest "${img%.*}.mp4"
done
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/509826.html
標籤:重击壳声音的ffmpeg
上一篇:設計模式之策略模式
