User Tools

Site Tools


Sidebar

Public
Internal
public:it:ffmpeg

This is an old revision of the document!


ffmepg

Build

Manipulating audio channels

5.1 Surround downmix to stereo

FL, FC, FR, BL, BR, LFE → FL, FR

-ac 2 \
-af "pan=stereo|FL = 0.374107*FC + 0.529067*FL + 0.458186*BL + 0.264534*BR + 0.374107*LFE |FR = 0.374107*FC + 0.529067*FR + 0.458186*BR + 0.264534*BL + 0.374107*LFE" \

7.1 downmix to stereo

FL, FC, FR, SL, SR, BL, BR, LFE → FL, FR

-ac 2 \
-af "pan=stereo|FL = 0.274804*FC + 0.388631*FL + 0.336565*SL + 0.194316*SR + 0.336565*BL + 0.194316*BR + 0.274804*LFE | FR = 0.274804*FC + 0.388631*FR + 0.336565*SR + 0.194316*SL + 0.336565*BR + 0.194316*BL + 0.274804*LFE" \

6.1 downmix to stereo

FL, FC, FR, SL, SR, BC, LFE → FL, FR

-ac 2 \
-af "pan=stereo|FL = 0.321953*FC + 0.455310*FL + 0.394310*SL + 0.227655*SR + 278819*BC + 0.321953*LFE | FR = 0.321953*FC + 0.455310*FR + 0.394310*SR + 0.227655*SL + 278819*BC + 0.321953*LFE" \

5.0 downmix to stereo

FL, FC, FR, BL, BR → FL, FR

-ac 2 \
-af "pan=stereo|FL = 0.460186*FC + 0.650802*FL + 0.563611*BL + 0.325401*BR | FR = 0.460186*FC + 0.650802*FR + 0.563611*BR + 0.325401*BL" \

Quadraphonic Channel downmix to stereo

FL, FR, BL, BR → FL, FR

-ac 2 \
-af "pan=stereo|FL = 0.422650*FL + 0.366025*BL + 0.211325*BR | FR = 0.422650*FR + 0.366025*BR + 0.211325*BL" \

Linear Surround Channel downmix to stereo

FL, FC, FR → FL, FR

-ac 2 \
-af "pan=stereo|FL = 0.414214*FC + 0.585786*FL | FR = 0.414214*FC + 0.585786*FR" \

Scaling

QSV Scale to 1080p

Quality with QSV as not good at all, though this could have been my fault.

ffmpeg \
  -y \
  -hwaccel qsv \
  -qsv_device /dev/dri/card0 \
  -c:v hevc_qsv \
  -i input.mkv \
  -c:v hevc_qsv \
  -vf 'scale_qsv=w=1920' \
  -preset slow \
  -global_quality 25 \
  -c:a copy \
  -c:s copy \
  output.mkv

4k to 1080p

  • libx264
  • libx265
ffmpeg \
  -i MyMovie_4K.mkv \
  -vf scale=1920:-1 \
  -c:v libx265 \
  -preset veryslow \
  -c:a copy \
  MyMovie_1080p.mkv

Not sure if these are necessary.

-crf 28

Subtitles

MKV Embed soft subtitles

ffmpeg \
  -i in.mkv \
  -f srt \
  -i in.srt \
  -map 0:0 \
  -map 0:1 \
  -map 1:0 \
  -c:v copy \
  -c:a copy \
  -c:s srt \
  out.mkv

MKV hardcode subtitles

http://diantokam.blogspot.com/2016/12/adding-subtitle-and-scaling-film-using.html

ffmpeg \
  -i "input.mkv" \
  -vf subtitles=fullsubs.srt \
  "output.mkv"

MKV to MP4 hardcode subtitles and downmix 5.1 to stereo

  # export english subs
  ffmpeg \
    -y \
    -i "./${name}" \
    -map 0:s:0 \
    eng.srt

  # create a version with hardsubs
  # si=0
  ffmpeg \
    -y \
    -i "./${name}" \
    -vf subtitles="${name}":si=0 \
    -ac 2 \
    -af "pan=stereo|FL = 0.374107*FC + 0.529067*FL + 0.458186*BL + 0.264534*BR + 0.374107*LFE |FR = 0.374107*FC + 0.529067*FR + 0.458186*BR + 0.264534*BL + 0.374107*LFE" \
    -c:a aac \
    "${name}-hardsubs.mp4"

Delay subtitle by 1 second

ffmpeg \
  -itsoffset -1 \
  -i full8.srt \
  -c copy \
  full8_delayed.srt

Video Streaming

Clips

ffmpeg \
  -i  input.mkv \
  -ss 29:36 \
  -to 29:50 \
  -c:v copy \
  -c:a aac \
  output.mp4

h264 to hevc using nvenc

  1. Install docker
docker run \
  -v $(pwd):$(pwd) \
  -w $(pwd) \
  --runtime=nvidia jrottenberg/ffmpeg:4.1-nvidia \
  -hwaccel cuvid \
  -c:v h264_cuvid \
  -i input.mkv \
  -c:v hevc_nvenc \
  -c:a copy \
  -c:s copy \
  -preset slow \
  output_hevc.mkv
public/it/ffmpeg.1643340052.txt.gz · Last modified: 2022/01/27 21:20 by phil