# ffmpeg

FFMPEG is a cross-platform solution to record, convert and stream audio and video. 
   
(Command Line Aplication)   
**URL**: https://www.ffmpeg.org/   
**Documentation**: https://www.ffmpeg.org/documentation.html

## Video Compression
___


### Constant Rate Factor (Compression)

ffmpeg -i input.mp4 -vcodec libx265 -crf 31 output.mp4 (does not work on chrome)

ffmpeg -i input.mp4 -vcodec libx264 -crf 31 output.mp4 (works for all main browsers)
    
         
### Frame Size (Scaling)
ffmpeg -i input.mp4 -vf "scale=iw/1.5:ih/1.5" output.mp4


### High Res
ffmpeg -i input.mp4 -vcodec libx264 -crf 21 output_high.mp4

### Mid Res
ffmpeg -i input.mp4 -vcodec libx264 -crf 26 output_mid.mp4

### Low Res
ffmpeg -i input.mp4 -vcodec libx264 -crf 29 output_low.mp4


# Codecs
## DNxHR

LINKS:
https://knowledge.raumgleiter.com/docs/knowledge-base/media/ffmpeg/
https://itectec.com/ubuntu/ubuntu-how-to-convert-a-video-with-ffmpeg-into-the-dnxhd-dnxhr-format/
https://www.tal.org/tutorials/ffmpeg_convert_to_dnxhd


<p><a href="https://avid.secure.force.com/pkb/articles/en_US/White_Paper/DNxHR-Codec-Bandwidth-Specifications">https://avid.secure.force.com/pkb/articles/en_US/White_Paper/DNxHR-Codec-Bandwidth-Specifications</a></p>


NOT NICE:
ffmpeg -i "input.mp4" -c:v dnxhd  -profile:v dnxhr_hq -pix_fmt yuv422p -c:a pcm_s16le "output.mxf"
ffmpeg -i input.mp4 -c:v dnxhd -vf "scale=1280:720,fps=30000/1001,format=yuv422p" -b:v 110M -c:a pcm_s16le output.mov
ffmpeg -i input.mp4 -c:v dnxhd -vf "format=yuv422p" -b:v 110M -c:a pcm_s16le output_simple.mov
ffmpeg -i input.mp4 -vf format=yuv422p,scale=-1:1080,pad=1920:1080:(ow-iw)/2:0 -r 24000/1001 -c:v dnxhd -b:v 115M out.mov

RUNNING
ffmpeg -i input.mp4 -c:v dnxhd -vf "scale=1280:720,fps=30000/1001,format=yuv422p" -b:v 110M -c:a pcm_s16le output.mov
ffmpeg -i input.mp4 -c:v dnxhd -profile:v dnxhr_hq -pix_fmt yuv422p -c:a pcm_s16le output_xr3.mov
ffmpeg -i input.mp4 -c:v dnxhd -profile:v dnxhr_lb -pix_fmt yuv422p -c:a pcm_s16le output_xr3_lb.mov

# GIFS

Video to GIF Variant 1:  
`ffmpeg -ss 30 -t 3 -i input.mp4 -vf "fps=10,scale=320:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 output.gif`

Video to GIF Variant 2:  
`ffmpeg -i input.mp4 -vf "fps=10,scale=600:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 output.gif`
