transcoding
#copy all audio into h264 mp4 video with static image (useful for playing back audio with video players (shows cover while playing))
for i in *.mp3;
do ffmpeg -loop 1 -i image-file.jpg -i $i -c:a copy -c:v h264 -q:v 255 -shortest -y -s cif -pix_fmt yuv420p mp4/$i.mp4;
done #audio_to_mp4
Make h264 mp4 video loop from gif looping it 4 times (fix if width / height aren't divisible by 2)
for i in *.*;
do ffmpeg -stream_loop 4 -i $i -q:v 0 -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" $i.mp4;
done #gif_trunc
Make a 5 second h264 mp4 video from static images with resize
for i in *.*; do ffmpeg.exe -loop 1 -t 5 -i $i -pix_fmt yuv420p -vf "scale=-2:1080" -q:v 0 $i.mp4 -y; done #static_resize
Make a 5 second h264 mp4 video from static images no resize (fix if width / height aren't divisible by 2)
for i in *.*; do ffmpeg.exe -loop 1 -t 5 -i $i -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" -q:v 0 $i.mp4 -y; done; #static_trunc
Show all file resolutions in a directory
for i in *.*; do ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 $i; done #list_sizes
Letterbox into desired resolution assign TARGET_HEIGHT=1920 and TARGET_WIDTH=1080 (or whatever else) before executing command.
ffmpeg.exe -i input.mp4 -vf "scale=min(iw*$TARGET_HEIGHT/ih\,$TARGET_WIDTH):min($TARGET_HEIGHT\,ih*$TARGET_WIDTH/iw), pad=$TARGET_WIDTH:$TARGET_HEIGHT:($TARGET_WIDTH-iw)/2:($TARGET_HEIGHT-ih)/2" -q:v 0 out.mp4
Waveform visuals from audio 1920x1080 (copy audio without reencoding)
ffmpeg -i input.mp3 -filter_complex "[0:a]showwaves=s=1920x1080:mode=line:colors=#CE6FE9" -pix_fmt yuv420p -c:v libx264 -q:v 0 -preset slow -c:a copy -shortest output_video.mp4 -y
No Comments