Search code examples
audiovideoffmpegwav

ffmpeg : how to take wav as audio input for creating a video?


I'm trying to use ffmpeg for rendering video where an audio file and image are taken as inputs, and turned into a video with the same dimensions as the image with the audio file playing for the duration of the video (basically a music video).

I have this working for flac and mp3 files, my ffmpeg command for mp3 is below:

ffmpeg -loop 1 -framerate 2 -i "front.png" -i "testMP3file.mp3" -vf "scale=2*trunc(iw/2):2*trunc(ih/2),setsar=1" -c:v libx264 -preset medium -tune stillimage -crf 18 -c:a copy -shortest -pix_fmt yuv420p -strict -2 "testMP3fileOutput1.mp4" 

How can I take wav audio files as input instead of mp3? Is there a different codec I need to specify? This post talks about download libfaac and using that, is there any way to take wav audio file as input using just ffmpeg without downloading a separate library?


Solution

  • Just use a WAV file as input and change -c:a copy to -c:a aac (or omit -c:a if you want to use the default encoder which is -c:a aac for MP4 output):

    ffmpeg -loop 1 -framerate 2 -i "front.png" -i "testMP3file.wav" -vf "scale=2*trunc(iw/2):2*trunc(ih/2),setsar=1,format=yuv420p" -c:v libx264 -preset medium -tune stillimage -crf 18 -c:a aac -shortest "testMP3fileOutput1.mp4"
    

    Other changes:

    • No need for -strict -2: it does nothing. You can remove that from your command too.
    • I replaced -pix_fmt yuv420p with format=yuv420p so all your filtering is contained in the filtergraph.