Форум / Рецепты / Команды для 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 &
PHPSIDСсылка на пост (Смотрели 13325)23.12.15 05:38     Ответить
Ваше имя*
 E-mail* (не публикуется)
 
 
Если пишете о проблеме, то приложите, пожалуйста, ссылку на свой плеер отсюда — Плеер: Файл > Код > Ссылка
Вставка кода — [code][/code] дублировать ответы на e-mail
1
eddstep 12.02.16 - 14:08
можете объяснить значение -vpre slower не нашел в сети
2
PHPSID 13.02.16 - 09:14
Я знаю кто Вы. FFMPEG -h отменили чтоли? Ух я даже не знал.
3
fender26 14.02.16 - 23:07
А если имеется несколько звуковых дорожек у фильма, то как выбрать определенную? И как вырезать субтитры? Благодарю за ответы заранее
4
PHPSID 02.03.16 - 20:08
К сожалению, с этим не сталкивался и подсказать не смогу, а вшитые субтитры никак не вырезать.
5
PHPSID 16.09.16 - 01:36
fender26С, сталкнулся сегодня с ЗД, вот команда:
fmpeg -i INPUT -map 0:0 -map 0:N OUTPUT

где N — номер звуковой дорожки
6
ApeJIsiN 27.04.16 - 23: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 - 08:39
Оставьте свой, я напишу.
8
ApeJIsiN 18.05.16 - 12:42
Zdrastvujte, izveni ujezal. moj skype moviego.official . Spasibo
Сообщить об ошибке на сайте
 Uppod © 2008–2017       Контактная информация   /  Соглашение  /  Twitter  /  Facebook
Сообщить об ошибке на сайте
Если ошибка относится к плееру, а не сайту, либо Вы хотите получить ответ на вопрос —
лучше написать на форуме