# Ffmpeg. NOTE: Add info about av1/opus when I become sane again. # Encoders: * h264: SW - `libx264`, HW - `h264_vaapi`. * h265: SW - `libx265`, HW - `hevc_vaapi`. # VHS to h264. ```text ffmpeg -i 'concat:VTS_01_1.VOB|VTS_01_2.VOB|VTS_01_3.VOB|VTS_01_4.VOB|VTS_01_5.VOB' -c:v libx264 -c:a aac -standard NTSC -preset veryslow -vf yadif ./out.mkv ``` # Add audio. ```text ffmpeg -i video.mkv -i audio.mp3 -map 0 -map 1:a -c:v copy -shortest output.mkv ``` # Replace audio. ```text ffmpeg -i Episode\ S01E03.mkv -i RUS\ Sound/Episode\ S01E03.mka -c copy -map 0:v:0 -map 1:a:0 -shortest with_audio/Episode\ S01E03.mkv ``` # Add thumbnail to mkv. ```text ffmpeg -i video.mkv -attach cover.jpg -metadata:s:t:0 mimetype=image/jpeg -c copy out.mkv ``` # Hardware vaapi. Encode only: ```text ffmpeg -vaapi_device /dev/dri/renderD128 -i video.mkv -vf 'format=nv12,hwupload' -c:v hevc_vaapi out.mkv ``` Decode + encode: ```text ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -i video.mkv -c:v hevc_vaapi out.mkv ``` # Add image to music (Album cover). ```text ffmpeg -i audio.flac -i image.png -map 0:a -map 1 -codec copy -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" -disposition:v attached_pic output.flac ``` # Scale down video. ```text ffmpeg -i input4kvid.mp4 -vf scale=1920:1080 output1080vid.mp4 ``` This one may require using -2 or -4 in some cases. ```text ffmpeg -i input.avi -vf scale=720:-1 -c:a copy output.mkv // -1 for auto height. ``` For vaapi use `scale_vaapi=-1:720`. # Limit to specific CPUs. ```text taskset -c 0 ffmpeg... taskset -c 0,2 ffmpeg... ``` # Edit metadata. ```text ffmpeg -i input.mkv -codec copy -metadata "key=value" output.mkv ``` # Cut video. Drop -c:* to re-encode. ```text ffmpeg -i Input.mkv -ss 00:00:00 -t 00:15:00 -c:v copy -c:a copy Output.mkv ```