«

»

Янв 28 2019

Распечатать Запись

FFmpeg. Справочник полезных команд

За время работы в разных проектах у меня накопился список полезных команд, связанных с использованием программы FFmpeg. Поэтому я решил оформить эти команды в справочник. Также планирую постепенно добавлять новые команды.

FFmpeg

Все команды запускались под ОС Linux Ubuntu 16.04.

В ОС Window они будут выглядеть примерно также.

Кодирование YUV, MP4 видео с определенным битрейтом (в данном примере с битрейтом 3000 Кбит/сек)

ffmpeg -video_size 1936×1088 -r 30 -i input-video.yuv -b:V 3000k -vcodec libx264 -preset fast -g 30 output-video.mp4

ffmpeg -i input-video.mp4 -b:V 3000k -vcodec libx264 -preset fast -g 30 output-video.mp4

Кодирование MP4 в YUV

ffmpeg -i input-video.mp4 -c:v rawvideo -pix_fmt yuv420p output-video.yuv

Кодирование YUV в MP4

ffmpeg -s 1024×768 -r 30 -i input-video.yuv -b:V 3000k -pix_fmt yuv420p -c:v libx264 -s:v 1024×768 -preset veryfast -g 30 output-video.mp4

Вычисление метрики PSNR

ffmpeg -s:v 256×144 -r 30 -i original.yuv -s:v 256×144 -r 30 -i measure.yuv -lavfi «[0:v][1:v]psnr» -f null —

Вычисление метрики SSIM

ffmpeg -s:v 256×144 -r 30 -i original.yuv -s:v 256×144 -r 30 -i measure.yuv -lavfi «[0:v][1:v]ssim» -f null —

Вычисление метрики VMAF

ffmpeg -i original.mpg -i measure.mpg -lavfi libvmaf -f null —

Разделить видео на сегменты длительностью 4 секунды

ffmpeg -i video.y4m -f segment -segment_time 4 output%d.y4m

без перекодирования: ffmpeg -i video.mp4 -c copy -segment_time 4 -f segment ./segments/output%04d.mp4

Конвертация 10-ти битного видео в 8-ми битное

ffmpeg -i input-video_10bit.y4m -pix_fmt yuv420p output-video_8bit.y4m

Вырезать часть видео (начиная с пятой секунды, 15 секунд)

ffmpeg -i input-video.y4m -ss 00:00:05 -t 00:00:15 output-video-15sec.y4m

для yuv видео надо указывать разрешение и FPS для входного видео

ffmpeg -s 1024×768 -r 30 -i input-video.yuv -ss 00:00:05 -t 00:00:15 output-video-15sec.yuv 

Объединить PNG картинки в видео, при этом использовать lossless кодирование (без потери качества)

ffmpeg -framerate 30 -i ./images/1/%04d.png -c:v libx264 -crf 0 -r 30 -preset ultrafast -pix_fmt yuv420p output-video.mp4

Конкатенация MPEG-DASH init сегмента с MPEG-DASH видео сегментом

ffmpeg -i «concat:init.mp4|segment_1.m4s» -c copy output-video.mp4

ffmpeg -i «concat:init.mp4|segment_1.m4s» -c copy -bsf:a aac_adtstoasc output-video.mp4 // если есть AAC аудио

Lossless кодирование (без потери качества)

ffmpeg -i input-video.y4m -c:v libx264 -preset fast -crf 0 output-video.mp4

Добавить яркость в видео

ffmpeg -s 1920×1080 -r 30 -i input-video.yuv -vf eq=brightness=0.3:saturation=2 -b:V 5000k -pix_fmt yuv420p -c:v libx264 -s:v 1920×1080 -preset veryfast -g 30 output-video.mp4

Разделить видео на последовательности Group of Pictures (GOPs), каждый начинается с I-frame

ffmpeg -i input-video.mp4 -acodec copy -f segment -vcodec copy -reset_timestamps 1 -map 0 ./GOPs/OUTPUT%d.mp4

 

vlc —demux rawvideo —rawvid-fps 60 —rawvid-width 384 —rawvid-height 216 —rawvid-chroma I420 measure.yuv

Полезные ссылки

FFmpeg Encoding and Editing Course

FFmpeg streaming guide

Split video

h265_mp4toannexb

hevc_mp4toannexb 

Успехов!

Если у вас появились какие-то вопросы по медиа-серверам, пишите нам. Если вам нужно что-то настроить или получить консультацию по медиа-серверам и системам видео-вещания, также можете обращаться ко мне и нашей команде.

Приглашаю всех подписаться на новости моей публичной страницы ВКонтакте, ее адрес http://vk.com/itmultimedia. Буду рад видеть Вас в своих подписчиках.

 


Комментарии:

1 ping

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>