Last active
September 7, 2024 01:27
-
-
Save fritschy/be8ed6240fbc33b78243fe52f5442a5e to your computer and use it in GitHub Desktop.
ffmpeg one-liners
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
# For all snippets, check documentation for details and settings. | |
# encode video from a V4L2 device, using specified settings. | |
# x265 worked somewhat better here and produced less skips (although uses 10x CPU compared to x264) | |
ffmpeg -f video4linux2 -framerate 30 -input_format mjpeg -video_size 1920x1080 -i /dev/video6 -c:v libx265 -preset ultrafast -c:a none -crf 20 out.mp4 | |
# Convert a raw YUYV422 frame from my USB "microscope" to PNG: | |
# other valid pixel formats are e.g. rgb24 or yuv420p | |
ffmpeg -f rawvideo -video_size 2592x1944 -pixel_format yuyv422 -i input_yuyv422_2592x1944.dat -f image2 output.png | |
# copy a portion of a video, copying and not recoding. Might need to use the same container as the input | |
ffmpeg -i $input -ss $seek_to_seconds -t $output_length -c:v copy -c:a copy $output | |
# Export and show h.264 MVs | |
ffplay -flags2 +export_mvs input.mkv -vf codecview=mv=pf+bf+bb | |
# Show motion vector estimate on any input: | |
ffplay $input -vf mestimate=epzs:mb_size=16:search_param=32,codecview=mv=pf+bf+bb | |
# Select one frame every 10, set presentation time stamp to 10x (0.1*PTS), deshake, do not copy audio | |
ffmpeg -i MOV_3147.mp4 -vf 'select=not(mod(n\,10))',setpts=0.1*PTS,deshake=edge=blank:rx=64:ry=64:blocksize=4:contrast=31 -tune grain -crf 17 -an wolken-2-deshake.mkv | |
# Extreme high quality deshake: | |
ffmpeg -i input.mkv -vf 'select=not(mod(n\,20))',setpts=0.05*PTS,mestimate=hexbs,vidstabdetect=shakiness=10:result=transforms.trf | |
ffmpeg -i input.mkv -vf 'select=not(mod(n\,20))',setpts=0.05*PTS,mestimate=hexbs,vidstabtransform=crop=black:smoothing=0:optzoom=0 | |
# or for pass 2 | |
ffmpeg -i MOV_3147.mp4 -vf 'select=not(mod(n\,20))',setpts=0.05*PTS,vidstabtransform=crop=black:smoothing=180:optzoom=0:interpol=bicubic -an -vcodec libx265 -crf 16 -tune grain wolken-2-deshake.mkv | |
# Tonemap a ITU.2020 (HDR, high gamut, ususally 4K) video to ITU.709 (1080p) | |
# Also see: https://stevens.li/guides/video/converting-hdr-to-sdr-with-ffmpeg/ | |
ffmpeg -i file.mkv -vf zscale=t=linear:npl=100,format=gbrpf32le,zscale=p=bt709,tonemap=tonemap=hable,zscale=t=bt709:m=bt709:r=tv,format=yuv420p -crf 20 -acodec copy output.mkv | |
# Extract all frames as <pattern>.jpg | |
ffmpeg -r 1 -i file.mp4 -r 1 frames_%05d.jpg | |
# Create video from all the frames (missing any codec spec): | |
ffmpeg -r 30 -i frames_%05d.jpg output.mp4 | |
### XXX the following where copied from | |
### https://hbish.com/ffmpeg-one-liners/ | |
# Get infomation for a audio/video | |
ffmpeg -i file.mp3 | |
# Convert video into images | |
ffmpeg -i video.avi image_output%d.jpg | |
# Split audio files | |
# Generate a section of the audio from the 30 second mark (start) for 15 seconds (duration) | |
ffmpeg -f mp3 -i input.mp3 -t 00:00:30 -ss 00:00:15 output.mp3 | |
# Covert avi to animated gif | |
ffmpeg -i video.avi output.gif | |
# Add audio to a video file | |
ffmpeg -i music.mp3 -i video.avi output.mpg | |
# Extract audio from video file">## Useful for extracting music from youtube videos | |
# avi to mp3 | |
ffmpeg -i video.avi -vn -ar 44100 -ac 2 -ab 192k -f mp3 output.mp3 | |
# flv to mp3 | |
ffmpeg -i video.flv -ar 44100 -ac 2 -ab 192k -f mp3 output.mp3 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Can you please provide more examples for "mestimate"? Thanks.