Skip to content

Instantly share code, notes, and snippets.

@hz37
Last active January 20, 2024 17:49
Show Gist options
  • Save hz37/501dfea61c894cad55dde83bc5cd8200 to your computer and use it in GitHub Desktop.
Save hz37/501dfea61c894cad55dde83bc5cd8200 to your computer and use it in GitHub Desktop.
ffmpeg examples Hens Zimmerman
# MacOS shell script om alle wav bestanden in een dir te checken op EBU loudness in LUFS. Don't forget to chmod +x
#!/bin/bash
for f in *.wav
do
echo "$f"
ffmpeg -i "$f" -af ebur128=framelog=verbose -f null - 2>&1 | awk '/I:/{print $2}'
done
# De typische multichannel audio/MXF export voor promo makers (gebaseerd op de DNXHD Op1A voor uitzending):
sox --combine merge /Volumes/Projects/NTR/BTTH/OUTPUT/FROM\ PT/STEM\ BTTH\ Afl.\ 01\ BM.wav /Volumes/Projects/NTR/BTTH/OUTPUT/FROM\ PT/STEM\ BTTH\ Afl.\ 01\ FX.wav /Volumes/Projects/NTR/BTTH/OUTPUT/FROM\ PT/STEM\ BTTH\ Afl.\ 01\ MX.wav /Volumes/Projects/NTR/BTTH/OUTPUT/FROM\ PT/STEM\ BTTH\ Afl.\ 01\ VO.wav 8ch.wav
ffmpeg -i /Volumes/Projects/NTR/BTTH/OUTPUT/AVMIXDOWN_BTTH_AFL01.mxf -i /Volumes/Projects/NTR/BTTH/OUTPUT/8ch.wav -c copy -map 0:v:0 -map 1:a:0 PROMO_BTTH_AFL01.mxf
(dit maakt een DNXHD met 1 audio stream met 8 mono kanalen)
# 25 fps to 24 fps for DCP:
ffmpeg -fflags +genpts -r 24 -i 25sec_BIOSCOOP_16-9.mxf -map 0:v -c:v copy -an 24fps.mxf
# h264 client video from separate audio and video files with burnt-in timecode using Apple GPU:
ffmpeg -i video.mxf -i audio.wav -vf "drawtext=fontfile=arial.ttf:timecode='00\:00\:00\:00':rate=25:fontsize=40:fontcolor=white:x=10:y=10: box=1: boxcolor=0x00000000@1" -map 0:v:0 -map 1:a:0 -s 1920x1080 -b:v 5000k -r 25 -c:v h264_videotoolbox -pix_fmt yuv420p -c:a aac -strict -2 output.mov
# Make EBU R128 compliant:
ffmpeg -i in.wav -af loudnorm=I=-23:TP=-2 -ar 48k -acodec pcm_s24le out.wav
# Convert 8 channel NPO MXF (with 6 dummy channels) to stereo wav 24 bit.
ffmpeg -i PW_AFL32_01A_PAUL.mxf -ar 48k -acodec pcm_s24le -ac 2 PW_AFL32_01A_PAUL.wav
# Non linear loudness normalization:
ffmpeg -i hitme.wav -af loudnorm=I=-23:TP=-2:linear=false -ar 48k -acodec pcm_s24le out.wav
# Batch mp3 to 16 bit 44.1 kHz CD Mastering:
ffmpeg -i "Gloria Estefan - Dr. Beat.mp3" -af loudnorm=I=-17:TP=-.3 -ar 44.1k -acodec pcm_s16le "Gloria Estefan - Dr. Beat.wav"
ffmpeg -i "Gloria Estefan, Miami Sound Machine - Conga (Official Video).mp3" -af loudnorm=I=-17:TP=-.3 -ar 44.1k -acodec pcm_s16le "Gloria Estefan, Miami Sound Machine - Conga (Official Video).wav"
ffmpeg -i "Kate Ryan - Ella Elle L'a (Official Video 2008).mp3" -af loudnorm=I=-17:TP=-.3 -ar 44.1k -acodec pcm_s16le "Kate Ryan - Ella Elle L'a (Official Video 2008).wav"
# Make a prores:
ffmpeg -i test.mov -c:v prores -profile:v 3 output.mov
ffmpeg -y -f mov -i input-file.mov -vcodec prores_ks -pix_fmt yuva444p10le -profile:v 4444 -bits_per_mb 8000 -s 1920x1080 output-file.mov
# Measure loudness stats (must use last dash) and print to console output:
ffmpeg -i hit.wav -af loudnorm=I=-23:TP=-1.5:LRA=7:linear=false:print_format=json -f null -
# Input statistics from above to command line:
ffmpeg -i hit.wav -af loudnorm=I=-23:TP=-1.5:LRA=7:measured_I=-21.22:measured_LRA=12.30:measured_TP=-1.98:measured_thresh=-31.82:offset=-0.41:linear=false:print_format=summary -ar 48k -acodec pcm_s24le out.wav
# More extreme (LRA can't be smaller than 1; results in error):
LRA=1
# Convert mp4 50 fps to mxf dnxhd 25 fps:
ffmpeg -i “blah.mp4” -c:v dnxhd -s 1920x1080 -r 25 -b:v 115M blah.mxf
# Same w/o audio:
ffmpeg -i “blah.mp4” -c:v dnxhd -s 1920x1080 -r 25 -an -b:v 115M blah.mxf
ffmpeg -i RODRIGUES_LEAL_COMBI.mp4 -c:v dnxhd -s 1280x720 -r 25 -an -b:v 75M rod.mxf
# Extract hi q wav from mp4
ffmpeg -i input.mp4 -vn -acodec pcm_s16le -ar 44100 -ac 2 output.wav
ffmpeg -i "DE_BUITENDIENST_113[GRUWLIJK_ENG][TO_PT_DEEL1].mov" -vn -acodec pcm_s24le -ar 48000 -ac 2 output.wav
# Dnxhd to mov:
ffmpeg -i input.MXF -acodec copy -vcodec libx264 -s 1920x1080 -b:v 5000k 09-1080-pcm24.mov
# 1280p to 720p:
ffmpeg -i video.mp4 -s hd720 -c:v libx264 -crf 23 -c:a aac -strict -2 video_720p.mp4
# MXF to smaller h264 w/o black video:
ffmpeg -i SLAAPWANDELEN_v1_V60EF6464V.mxf -map 0:0 -s hd720 -r 25 -c:v h264_nvenc -pix_fmt yuv420p aap.mov
# MXF to small h264 with on Kamatera cloud virtual Linux server:
ffmpeg -i DHZ\ Kleikunst\ promo\ V1.1.mxf -map 0:0 -s hd720 -r 25 -crf 28 -c:v h264 -pix_fmt yuv420p test.mov
# Convert QTRLE or Apple Animation Codec pixel format to YUV DNxHD MXF w/o audio:
ffmpeg -i "bumper inscience_final2.mov" -c:v dnxhd -s 1920x1080 -r 25 -an -b:v 115M -pix_fmt yuv420p dkvn.mxf
# Convert badly behaving mp4 to hispeed sync mxf w/o audio:
ffmpeg -i EDIT_RT_MUZIEK.mp4 -c:v dnxhd -s 1920x1080 -r 25 -an -b:v 75M -pix_fmt yuv422p hispeed.mxf
# Dynamic control:
ffmpeg -i 12p.wav -af "dynaudnorm=f=500:p=0.71:m=25:s=12:g=15:r=1.0:b=1" -acodec pcm_s24le 12x.wav
# Video capture w/ NVidia h264 encoder, Adobe Premiere compatible (q to stop):
ffmpeg -video_size 1920x1057 -framerate 25 -f gdigrab -i title="Stellarium 0.18.2" -c:v h264_nvenc -qp 0 output1.mov
# Convert whatever mp3 to 48 kHz stereo wav (-n skip if exists).
ffmpeg -n -i "Filter2.mp3" -ar 48k -acodec pcm_s24le -ac 2 out.wav
# Info about wav file:
ffprobe "WhatADrag _26.wav" -show_streams
# WMA rips to CD wavs:
ffmpeg -n -i "01 Nummer 1.wma" -ar 44.1k -acodec pcm_s16le -ac 2 01.wav
# Stripping metadata from BWF WAV:
dir /B /S *.wav > a.bat
ffmpeg -i "MD Are you kidding Fiore.wav" -map 0 -map_metadata 0:s:0 -c copy temp.wav
del "MD Are you kidding Fiore.wav"
ren temp.wav "MD Are you kidding Fiore.wav"
# Burn TCR into a video file:
ffmpeg.exe -i sunflower.mp4 -vf "drawtext=fontfile=C\\:/Windows/Fonts/arial.ttf:timecode='00\:20\:10\:00':rate=25:text='TCR\:':fontsize=46:fontcolor=white:x=500:y=50: box=1: boxcolor=0x00000000@1" -c:v libx264 -crf 23 -c:a aac -strict -2 video_720p.mp4
ffmpeg -i dkvn.mxf -i "MIX DKVN bumper stereo downmix HZA 12-10-2019.wav" -vf "drawtext=fontfile=C\\:/Windows/Fonts/arial.ttf:timecode='00\:00\:00\:00':rate=25:text='Hens Zimmerman Audio\:':fontsize=28:fontcolor=white:x=10:y=10: box=1: boxcolor=0x00000000@1" -map 0:v:0 -map 1:a:0 -s 1920x1080 -b:v 5000k -r 25 -c:v h264_nvenc -pix_fmt yuv420p -c:a aac -strict -2 bumper_stereo2.mov
# Replace audio mix in video:
ffmpeg -i v.mp4 -i a.wav -c:v copy -map 0:v:0 -map 1:a:0 new.mp4
# Make a client video with burned in TC from MXF + WAV:
ffmpeg -i t1.mxf -i t1.wav -vf "drawtext=fontfile=C\\:/Windows/Fonts/arial.ttf:timecode='00\:00\:00\:00':rate=25:text='TCR\:':fontsize=46:fontcolor=white:x=500:y=50: box=1: boxcolor=0x00000000@1" -map 0:v:0 -map 1:a:0 -s 1920x1080 -b:v 5000k -r 25 -c:v h264_nvenc -pix_fmt yuv420p -c:a aac -strict -2 "check video.mov"
# Super fast h264 encoding via GTX 1080 GPU:
# (compared to ffmpeg -i "edit Diourgi final.mp4" -c:v h264 test.mov)
ffmpeg -i "edit Diourgi final.mp4" -c:v h264_nvenc test.mov
# Make file smaller (-b:v can be adjusted to taste of course)
ffmpeg -i "Two minutes silence.mp4" -s 1280x720 -b:v 2000k -r 25 -c:v h264_nvenc -c:a aac -strict -2 3m.mp4
# Create 3 second black dnxhd video
ffmpeg -f lavfi -i color=c=black:s=1920x1080:r=25/1 -c:v dnxhd -b:v 120M -pix_fmt yuv422p -r 25 -t 3 out.mxf
# Add wav file to existing file
ffmpeg -i out3.mxf -i 4ch.wav -map 0 -map 1 -vcodec copy -acodec pcm_s24le out4.mxf -y
# Multiplexing video + audio into dnxhd 1080i
ffmpeg -i "Coming Back FINAL 28dec ENG hires.mov" -i /Volumes/COMING\ BACK\ 2/Hens\ Zimmerman\ Audio/MIX\ Coming\ Back\ 4\ channel\ 08-02-2020.wav -c:v dnxhd -b:v 120M -r 25 -pix_fmt yuv422p -s 1920x1080 -flags +ildct -c:a pcm_s24le -ar 48k -map 0:v:0 -map 1:a:0 ~/Desktop/cb.mxf
# Rendering social video's.
ffmpeg -i input.mov -c:v h264_nvenc -vf scale=iw*sar:ih -s "1280x720" -r 25 -c:a aac -ar 48K -strict -2 facebook.mov
ffmpeg -i "AJOUAD2_Square_NPO 3 en SUBS.mp4" -c:v h264_nvenc -vf scale=iw*sar:ih -s "1280x1280" -r 25 -c:a aac -ar 48K -strict -2 insta.mov
ffmpeg -i "AJOUAD2_Square_NPO 3 en SUBS.mp4" -c:v h264_nvenc -vf scale=iw*sar:ih -s "1280x1280" -r 30 -c:a aac -ar 48K -strict -2 twitter.mov
# Still image + sound as YouTube video.
ffmpeg -loop 1 -y -i /Users/henszimmerman/Desktop/tbs.jpg -i /Volumes/Projects/KRO\ NCRV/TBS/OUTPUT/MIX\ Podcast\ TBS\ Afl.\ 10\ v1\ -17\ LUFS\ HZA\ 21-03-2021.mp3 -shortest -pix_fmt yuv420p tbs10.mp4
# Render on built-in gpu in MacOS
ffmpeg -hwaccel videotoolbox -i Digitale_Kunst_PT.mxf -i MIX\ Klokhuis\ Afl.\ Digitale\ kunst\ R128\ 24\ bit\ HZA\ 06-09-2020.wav -vf "drawtext=fontfile=C\\:/Windows/Fonts/arial.ttf:timecode='00\:00\:00\:00':rate=25:text='TCR\:':fontsize=22:fontcolor=white:x=0:y=0: box=1: boxcolor=0x00000000@1" -map 0:v:0 -map 1:a:0 -s 1920x1080 -b:v 5000k -r 25 -c:v h264 -pix_fmt yuv420p -c:a aac -strict -2 "yvonne.mov"
# Add cover art to mp3 w/o re-encoding
ffmpeg -i gerard_1_v2.mp3 -i coverart.png -c:a copy -c:v copy -map 0:0 -map 1:0 -id3v2_version 3 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" gerard_1_v2_ca.mp3
# Make CBR 192 kbps mp3 from wav
ffmpeg -i GGP_Martin_Sitalsing.wav -codec:a libmp3lame -b:a 192k GGP_Martin_Sitalsing.mp3
# Convert huge square mov with sound to small social mp4:
ffmpeg -hwaccel videotoolbox -i /Volumes/Projects/Boerhaave/OUTPUT/Grote\ Vragen\ social\ 5.mov -c:v h264 -pix_fmt yuv420p -c:a aac -strict -2 Grote\ Vragen\ social\ 5.mp4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment