Форум / Рецепты / Команды для FFMPEG без значительных потерь качества видео
Localtime!

Данная тема, решение для тех, кто хочет конвертировать видео и/или накладывать логотип (watermark) при помощи FFMPEG без значительных потерь со значительным уменьшением размера видеофайла.

Встала передо мной задача, уменьшить "вес" видеофайла без значительных потерь. Нашел решение в Гугле, но в некоторых версиях FFMPEG, найденное мной решение не работало. Пришлось "играть" с ключами и прочими командами FFMPEG. Решил поделиться, кому-нибудь пригодится.

Исходный файл: 137 МБ,(результат и сравнение ниже)

Команда без наложения логотипа:
ffmpeg -i input_file.mov -f mp4 -r 25 -crf 25.0 -vcodec libx264 -vpre slower -bufsize 8M -b 9000k -acodec copy -coder 1 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -me_method hex -subq 6 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -threads 0 out_file.mp4


На выходе файл: 8.07 Mb, сравнение: ссылка, сам файл на выходе (если кому интересно): ссылка


Команда с наложением логотипа:

ffmpeg -i input_file.mov -f mp4 -r 25 -crf 25.0 -vcodec libx264 -vpre slower -bufsize 8M -b 9000k -acodec copy -coder 1 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -me_method hex -subq 6 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -threads 0 -vf "movie=0:png:ПУТЬ_ДО_ЛОГОТИПА.png [logo]; [in][logo] overlay=main_w-overlay_w-10:10 [out]" out_file.mp4


Значения для наложения логотипа:

overlay=main_w-overlay_w-10:10 // Правый верхний угол
overlay=main_w-overlay_w-10:main_h-overlay_h-10 // Правый нижний угол
overlay=10:10 // Левый верхний угол
overlay=10:main_h-overlay_h-10 // Левый нижний угол


FFMPEG был собран так:


cd /usr/src/
svn checkout svn://svn.ffmpeg.org/soc/libavfilter libavfilter
cd libavfilter
./checkout.sh
cd ffmpeg
./configure --enable-avfilter --enable-libfaac --enable-libmp3lame --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared
--enable-swscale --enable-vdpau --enable-version3 --enable-x11grab --enable-avfilter --enable-filter=movie --enable-libtheora --enable-libvorbis
make
make install


Установилась версия FFMPEG:

FFmpeg version SVN-r26400, Copyright (c) 2000-2011 the FFmpeg developers
built on Dec 21 2015 20:56:18 with gcc 4.4.7 20120313 (Red Hat 4.4.7-16)
configuration: --enable-avfilter --enable-libfaac --enable-libmp3lame --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared
--enable-swscale --enable-vdpau --enable-version3 --enable-x11grab --enable-avfilter --enable-filter=movie --enable-libtheora --enable-libvorbis
libavutil 50.36. 0 / 50.36. 0
libavcore 0.16. 1 / 0.16. 1
libavcodec 52.108. 0 / 52.108. 0
libavformat 52.93. 0 / 52.93. 0
libavdevice 52. 2. 3 / 52. 2. 3
libavfilter 1.74. 0 / 1.74. 0
libswscale 0.12. 0 / 0.12. 0
libpostproc 51. 2. 0 / 51. 2. 0
Hyper fast Audio and Video encoder


О сжатие и передачи данных: ссылка

UPD: 13 января 2016:
Небольшой скрипт для конвертирования (массово) видео из папки:

for f in /ПУТЬ_ДО_ПАПКИ_С_ВИДЕО/*.avi ; do
ffmpeg -i ${f} -r 25 -crf 25.0 -vcodec libx264 -s 852x480 -vpre slower -bufsize 8M -b 9000k -acodec libfaac -ar 44100 -ab 128K -coder 1 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -me_method hex -subq 6 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -threads 0 -aspect 16:9 -vf "movie=0:png:/ПУТЬ_ДО_ЛОГОТИПА.png [logo]; [in][logo] overlay=main_w-overlay_w-10:10 [out]" -pass 1 -y ${f}.mp4
MP4Box -hint ${f}.mp4
rm -if ${f}
done

Значения свои подставляйте, либо команады с лого и без выше. Скрипт конвертирует видео в MP4, прописывает хинты (если не нужно, то удалите строчку MP4Box -hint ${f}.mp4), удаляет оригинал (если не нужно чтобы удалялся оригинал, то удалите строчку rm -if ${f}).
Если нужно чтобы в фоновом режиме работал скрипт (можно выйти из SSH), то команда запуска скрипта:
nohup ./convert.sh &


UPD: 29 мая 2017:
Команда для наложения логотипа для новых версий FFMPEG:

ffmpeg -i input_file.mov -i /ПУТЬ_ДО_ЛОГОТИПА.png -filter_complex "overlay=main_w-overlay_w-10:10" -r 25 -crf 25.0 -vcodec libx264 -s 720x576 -aspect 16:9 -preset slower -bufsize 8M -b 9000k -acodec aac -ac 2 -ar 44100 -ab 128K -vol 256 -coder 1 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -me_method hex -subq 6 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -threads 0 -pass 1 -y out_file.mp4


Верcия FFMPEG:

ffmpeg version 3.3.1 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-11)
configuration: --enable-avfilter --enable-libfdk-aac --enable-libmp3lame --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared --ena
ble-swscale --enable-version3 --enable-libxcb --enable-avfilter --enable-filter=movie --enable-libtheora --enable-libvorbis
libavutil 55. 58.100 / 55. 58.100
libavcodec 57. 89.100 / 57. 89.100
libavformat 57. 71.100 / 57. 71.100
libavdevice 57. 6.100 / 57. 6.100
libavfilter 6. 82.100 / 6. 82.100
libswscale 4. 6.100 / 4. 6.100
libswresample 2. 7.100 / 2. 7.100
libpostproc 54. 5.100 / 54. 5.100


Пресеты:


- ultrafast,superfast,veryfast,faster,fast
- medium,slow,slower,veryslow,placebo
PHPSIDСсылка на пост (Смотрели 30255)23.12.15 08:38     Ответить
Ваше имя*
 E-mail* (не публикуется)
 
 
Если пишете о проблеме, то приложите, пожалуйста, ссылку на свой плеер отсюда — Плеер: Файл > Код > Ссылка
Вставка кода — [code][/code] дублировать ответы на e-mail
1
eddstep 12.02.16 - 17:08
можете объяснить значение -vpre slower не нашел в сети
2
PHPSID 13.02.16 - 12:14
Я знаю кто Вы. FFMPEG -h отменили чтоли? Ух я даже не знал.
3
fender26 15.02.16 - 02:07
А если имеется несколько звуковых дорожек у фильма, то как выбрать определенную? И как вырезать субтитры? Благодарю за ответы заранее
4
PHPSID 02.03.16 - 23:08
К сожалению, с этим не сталкивался и подсказать не смогу, а вшитые субтитры никак не вырезать.
5
PHPSID 16.09.16 - 03:36
fender26С, сталкнулся сегодня с ЗД, вот команда:
fmpeg -i INPUT -map 0:0 -map 0:N OUTPUT

где N — номер звуковой дорожки
6
ApeJIsiN 28.04.16 - 01:18
Zdrastvujte mozno vash skype ? xotel bi poprositj u vas pomoshi i sovetov. Realjno nuzen cehlovek znajushij kak vi, s oplatoj dogovorimsja. Spasibo
7
PHPSID 28.04.16 - 10:39
Оставьте свой, я напишу.
8
ApeJIsiN 18.05.16 - 14:42
Zdrastvujte, izveni ujezal. moj skype moviego.official . Spasibo
Сообщить об ошибке на сайте
 Uppod © 2008–2020
Сообщить об ошибке на сайте
Если ошибка относится к плееру, а не сайту, либо Вы хотите получить ответ на вопрос —
лучше написать на форуме