Last active
January 20, 2024 17:49
-
-
Save hz37/501dfea61c894cad55dde83bc5cd8200 to your computer and use it in GitHub Desktop.
ffmpeg examples Hens Zimmerman
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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