Терзания о кодеке h264

Вопросы, приемы и проблемы обработки видео

Модератор: Модераторы разделов

Ism
Сообщения: 1261
Статус: Никто, по сути быдло

Терзания о кодеке h264

Сообщение Ism »

Накорпал статейку, у кого есть, что сказать, пишите

Терзания о кодеке h264

За последнее время я провел большое число экспериментов по кодированию видео. Оказалось получить качественное видео без рывков и с хорошей детализацией с минимумом темпоральных эффектов очень непросто. В кодеке h264 множество опций многие из которых связаны друг с другом, причем это проявляется непредсказуемо.

Итак.
-g GOP в ffmpeg оказывается связаны с процессом контроля смены сцен. А именно с опциями -sc_threshold и -rc-lookahead , если коэффициенты будут не кратными или выставлены как попало, то видео будет хоть и хорошего качества, но будет дергаться, причина — алгоритм плохо понимает, где вставлять ключевые кадры, а это важно для плеера. Рекомендации указаны в ссылках указанных ниже.

Также есть варианты кодирования, а именно

1 Средний битрейт
b или vb или v:b , в разном софте по разному. То есть кодер сам решает, какие кадры как ужимать, пытаясь уложиться в указанный битрейт. Лучше использовать для двухпроходного кодирования. Это позволит кодировщику понять , как лучше сжать поток.

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

3 Постоянный поток.
-crf , то есть кодировщик всеми способами пытается сохранить битрейт в ущерб качеству в динамичных сценах.

Это только верхушка айсберга. В каждом режиме, чтоб получить хорошее качество, нужно тщательно настраивать опции, которые иногда взаимоисключающие. То есть при включении враждующих опций видео вообще не кодируется, хотя кодировщик молчит и кодирует.
Единственный способ в таком случае выдергивать опции по одной пока враг не будет найден. А читать тонны мануалов это еще хуже.

В итоге оказалось, что единственно вменяемый и малогеморройный вариант vb , тогда можно все взвалить на анализатор кодека и выставить нужные опции которые позволят улучшить какойто из аспектов видео.

Например из KdeNlive
f=mp4 hq=1 acodec=aac ab=%audiobitrate+'k' ar=48000 aq=100 pix_fmt=yuv420p vcodec=libx264 coder=1 vb=%bitrate+'k' aspect=%dar pass=%passes g=50 sc_threshold=50 preset=placebo refs=4 progressive=1

В данном случае мы выставили качество на максимум через пресет, но заменили отдельные опции для плавности видео. Смотрите справку в ссылке по sc_threshold.

Теперь о том как следует кодировать для видеохостингов.
Тут цензурных слов просто нет. Видеохостинги с вашим качественным видео делают такое, что даже подтереться не годится. То есть ужимают ролик через какие-то свои неведомые параметры. Опции кодирования на хостинге никто не знает, разве что шаманы в пещерах Бурятии (Вконтакт, это про вас).
Единственный способ повергнуть видео минимальной экзекуции это подобрать параметры кодирования близко к тому, что выдает хостинг. Для этого надо выкачать ролик с хостинга в разных градациях качества и посмотреть на сие уродство. Плагинов для браузеров для скачки дофига и больше. На худой конец можно выдрать файл из кэша браузера. Удобней всего это сделано в Опере.
Выдрав ролик смотрим параметры например этим http://mediainfo.sourceforge.net , оно расскажет всю гнусную сущность того, что делает видеохостинг с роликом.
Выяснив , какие параметры предпочитает хостинг нужно тупо выставить опции кодека для получения такого же видео. Хостинг все равно побьет ролик, но уже меньше.

Но на этом жесть не заканчивается. Если нужно сделать удобным просмотр ролика, то НЕ нужно заливать его в высоком качестве, если это не фильм. Видеохостинги любят всегда выставлять для пользователя качество на максимум, и если качество высокое , а интернет медленный начинается песец с подбором более низкого битрейта. А оно пользователю совсем не надо. Поэтому оптимум 854x480 , качество вменяемое но и хостинг уже выше не выставит, что и нужно было.

Теперь о способах работы с видео .
Как оказалось , лучше всего видео экспортировать из видеоредактора в формате без потерь. Это позволит спокойно потом перегнать в другие форматы не теряя качества.
Я выбрал matroska, так как там нет ограничений на форматы внутри.

Кодек h264 в режиме lossless и flac
Для KdeNlive параметры (верны и для ffmpeg)

f=matroska acodec=flac ar=48000 pix_fmt=yuv420p vcodec=libx264 preset=fast qp=0

Кстати так же можно заливать видео во Вконтакт, если он перекодирует ролик как хочет, то пусть жрет гигабайт видео без потерь. Теоретически это должно немного повысить качестве, так как данных в избытке

Теперь о способах подбора качества видео . Перебрав много вариантов самый простой вариант выкрутить качество видео через параметры на максимум и собрать эталонный ролик в разных битрейтах, этакий брутфорс . Для этого я сделал скрипт , он внизу (кодирует в webm). Скрипт кодирует ролики в разных битрейтах и вытаскивает из них по одному кадру. И вы можете сравнить качество по png картинкам. Даже по размеру картинок будет видно, чем меньше картинка, тем хуже, так как png сжатие без потерь.

Опции и теория по кодеку h264
http://www.videorip.info/x264/78-polnoe-op...ija-x264libx264
http://help.ubuntu.ru/wiki/ffmpeg
http://www.videorip.info/forum/16-obrabotk...chennaya-statya

Общая теория по видео
http://habrahabr.ru/post/111244/

Опции кодирования webm VP8
https://sites.google.com/a/webmproject.org/wiki/ffmpeg

Проверка на что способен браузер, какие форматы видит
http://hpr.dogphilosophy.net/test/

Как загрузить фото Вконтакте с нормальным качеством
https://vk.com/page-22884714_44457623

Плагин экспорта HTML , RTF и прочего в BBCode LibreoOffice, очень удобно для форума
http://extensions.libreoffice.org/extension-center/bbkode

Скрипт сборки

#!/bin/bash

txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White

function Start {
processor_cores=`grep -c '^processor' /proc/cpuinfo`
rm -f $4
echo -e "${txtgrn}Из $2"
echo -e "${txtgrn}В $4"
#echo -e "${txtred}Ядер процессора $processor_cores"

ffmpeg \
-i $2 \
-loglevel warning \
-f webm \
-vcodec libvpx \
-vb $3k \
-threads $processor_cores \
-pix_fmt yuv420p \
-acodec libvorbis \
-ar 48000 \
-ab 192k \
-pass $1 \
-lag-in-frames 25 \
-auto-alt-ref 1 \
-minrate 0 \
-slices 1 \
-qmin 0 \
-qmax 51 \
-qcomp 0.7 \
-g 300 \
-deadline best \
-mb_threshold 0 \
-skip_threshold 0 \
-keyint_min 0 \
-bt 5 \
-ac 2 \
-passlogfile $passlogfile $4
return 0
}

#-aspect 16:9 \
#r 30 \
# -threads \
function Encode {
BitrateName=_Bitrate_$2
OutVideo=./РезультатВидео/`basename $1`$BitrateName.webm
ScreenPict=./ПроверкаКачества/`basename $1`_$2_$3_2.png
echo -e "${txtwht}Первый проход ----------------------------------------------------------------------------------"
Start 1 $1 $2 $OutVideo

echo -e "${txtwht}Второй проход ----------------------------------------------------------------------------------"
Start 2 $1 $2 $OutVideo

echo -e "${txtylw}Сохраняем кадр ----------------------------------------------------------------------$ScreenPict"
ffmpeg -v 0 -i $OutVideo -an -ss $3 -vframes 1 -y $ScreenPict

return 0
}

# Путь к исходному файлу
SourceVideo=./ИсходноеВидео/ТупоЖизньВанМооНеПонимаю.mp4
# Разрешение видео соответствует исходному
# Внимание, наюлюдался глюк с воспроизведением webm в Firefox 22, воспроизведение соскакивало в конец ролика, наблюдалось при кодировании в mkv, из mp4 все нормально

VremyaKadra=00:00:35 # Время откуда брать тестовый кадр
FirstPict=./ПроверкаКачества/`basename $SourceVideo`_Исходник.png
OutVideoNoSound=./РезультатВидео/`basename $SourceVideo`_lossless_no_sound.mp4
OutAudio=./РезультатВидео/`basename $SourceVideo`.flac
passlogfile=./РезультатВидео/`basename $SourceVideo`

#----------------------------------------------------------------------------------------------------------------
rm -f ./РезультатВидео/*
rm -f ./ПроверкаКачества/*
echo -e "${txtylw}Сохраняем кадр из видео ----------------------------------------------------------------$FirstPict"
ffmpeg -v 0 -i $SourceVideo -an -ss $VremyaKadra -vframes 1 -y $FirstPict
echo -e "${txtpur}Сохраняем Звук без потерь ---------------------------------------------------------------$OutAudio"
ffmpeg -v 0 -i $SourceVideo -acodec flac -compression_level 8 -vn $OutAudio
#echo -e "${txtred}Сохраняем Видео без потерь без звука -------------------------------------------$OutVideoNoSound"
#ffmpeg -v 0 -i $SourceVideo -f mp4 -vcodec libx264 -qp 0 -preset veryfast -an $OutVideoNoSound

for Bitrate in 750 650 550 450 350 250
do
Encode $SourceVideo $Bitrate $VremyaKadra
echo -e "${txtgrn}Готово -----------------------------------------------------------------------------------------"
echo
done

http://dartveider.pp.ua/my_files/other/VideoConvert.tar.gz
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Терзания о кодеке h264

Сообщение Bizdelnick »

Не сказано главное: чтобы выставить оптимальные опции кодирования, нужно до мельчайших деталей понимать тонкости работы сего кодека. А для тех, у кого нет месяца на изучение, в libx264 есть куча пресетов, дающих весьма неплохие результаты (в 99% случае лучше, чем при подборе параметров методом тыка).

Ism писал(а):
21.07.2013 03:09
Лучше использовать для двухпроходного кодирования.

Наоборот. Двухпроходное кодирование надо использовать, чтобы точнее подогнать битрейт под нужное значение.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ism
Сообщения: 1261
Статус: Никто, по сути быдло

Re: Терзания о кодеке h264

Сообщение Ism »

Bizdelnick писал(а):
21.07.2013 23:37
Не сказано главное: чтобы выставить оптимальные опции кодирования, нужно до мельчайших деталей понимать тонкости работы сего кодека. А для тех, у кого нет месяца на изучение, в libx264 есть куча пресетов, дающих весьма неплохие результаты (в 99% случае лучше, чем при подборе параметров методом тыка).

Ism писал(а):
21.07.2013 03:09
Лучше использовать для двухпроходного кодирования.

Наоборот. Двухпроходное кодирование надо использовать, чтобы точнее подогнать битрейт под нужное значение.

Это да, но пресет не знает как лучше обработать именно это видео. Например увеличение GOP -g прилично увеличивает степень сжатия за счет того, что кодеку меньше нужно ключевых кадров.
Даже предельный пресет placebo не дал мне нужного. Изображение отличное, но чуть заметно дергается, так как слишком сложная упаковка с ref 8 выше , да и хостинги полюбляют GOP поменьше
Если добиваться нужного качества, поможет только эксперимент.
Если заливать ну ютуб , то экспорт без потерь и пусть ютуб сам разгребает

Ни один из хостингов кроме одного японского не позволяет без изменений заливать. Так зачем битрейт подгонять ?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Терзания о кодеке h264

Сообщение Bizdelnick »

Ism писал(а):
22.07.2013 02:26
Изображение отличное, но чуть заметно дергается

Причём тут кодек? Это обычно бывает, когда меняется частота кадров.

Ism писал(а):
22.07.2013 02:26
Ни один из хостингов кроме одного японского не позволяет без изменений заливать. Так зачем битрейт подгонять ?

Если это не требуется, то смысла в двухпроходном кодировании нет. Да и в кодировании с ABR, в общем-то, тоже. Логично?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ism
Сообщения: 1261
Статус: Никто, по сути быдло

Re: Терзания о кодеке h264

Сообщение Ism »

Bizdelnick писал(а):
22.07.2013 11:35
Ism писал(а):
22.07.2013 02:26
Ни один из хостингов кроме одного японского не позволяет без изменений заливать. Так зачем битрейт подгонять ?

Если это не требуется, то смысла в двухпроходном кодировании нет. Да и в кодировании с ABR, в общем-то, тоже. Логично?


Нет, кодировать нужно, чтоб подогнать параметры ролика под рекомендуемые хостингом, тогда качество будет выше, изза совпадения структуры. Специально сравнивал ролики обработанные Вконтактом, немного, но лучше
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Терзания о кодеке h264

Сообщение Bizdelnick »

Я не о нужности или ненужности говорю, а о причинно-следственной связи: не ABR для двухпроходного кодирования, а двухпроходное кодирование для ABR.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ism
Сообщения: 1261
Статус: Никто, по сути быдло

Re: Терзания о кодеке h264

Сообщение Ism »

Bizdelnick писал(а):
22.07.2013 20:07
Я не о нужности или ненужности говорю, а о причинно-следственной связи: не ABR для двухпроходного кодирования, а двухпроходное кодирование для ABR.

Не знаю, то , что знаю написано выше
Спасибо сказали:
Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux
Контактная информация:

Re: Терзания о кодеке h264

Сообщение Rodegast »

Не забывайте что x264 != libx264 & ffmpeg.

> Скрипт кодирует ролики в разных битрейтах и вытаскивает из них по одному кадру

Зачем? Просмотр отдельных кадров не имеет смысла.
Спасибо сказали:
Ism
Сообщения: 1261
Статус: Никто, по сути быдло

Re: Терзания о кодеке h264

Сообщение Ism »

Rodegast писал(а):
27.07.2013 15:23
Не забывайте что x264 != linx264 & ffmpeg.

> Скрипт кодирует ролики в разных битрейтах и вытаскивает из них по одному кадру

Зачем? Просмотр отдельных кадров не имеет смысла.

Имеет, можно по сжатию определить степень качества. Если указать проблемное место в ролике, то можно потом сравнить
Спасибо сказали:
Аватара пользователя
alkesta
Сообщения: 345
ОС: Fedora

Re: Терзания о кодеке h264

Сообщение alkesta »

Rodegast писал(а):
27.07.2013 15:23
Не забывайте что x264 != linx264 & ffmpeg.


На сколько я понимаю, библиотека x264, написанная x264-team - она и в Африке x264... Хоть в ffmpeg, хоть на шиндоуз. О чём речь?
Спасибо сказали:
Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux
Контактная информация:

Re: Терзания о кодеке h264

Сообщение Rodegast »

> Имеет, можно по сжатию определить степень качества. Если указать проблемное место в ролике, то можно потом сравнить

Ну сравнишь ты одну сцену... И что тебе это даст? Надо хотя бы мельком просматривать все сцены.

> На сколько я понимаю, библиотека x264, написанная x264-team - она и в Африке x264... Хоть в ffmpeg, хоть на шиндоуз. О чём речь?

О том что x264 ЭТО НЕ libx264 . На ЛОР-е я уже про это писал: http://www.linux.org.ru/forum/multimedia/8...d=1351238312936
Спасибо сказали:
Аватара пользователя
alkesta
Сообщения: 345
ОС: Fedora

Re: Терзания о кодеке h264

Сообщение alkesta »

Rodegast писал(а):
29.07.2013 18:44
О том что x264 ЭТО НЕ libx264 .

Во как!? Стесняюсь спросить, а что же это?
Спасибо сказали:
Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux
Контактная информация:

Re: Терзания о кодеке h264

Сообщение Rodegast »

> Во как!? Стесняюсь спросить, а что же это?

И правильно делайте! Потому что это костыль. См. сцылку выше.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Терзания о кодеке h264

Сообщение Bizdelnick »

Rodegast
Что-то не понимаю, о чём Вы. Да, ffmpeg использует libx264. Но её же использует и x264. По той причине, что libx264 - это не "кривой костыль", а собственно кодирующий бекенд.

Shell

% ldd `which x264` | grep libx264 libx264.so.132 => /usr/lib/x86_64-linux-gnu/libx264.so.132 (0x00007f701faeb000) libx264.so.124 => /usr/lib/x86_64-linux-gnu/libx264.so.124 (0x00007f701bf4e000)

Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux
Контактная информация:

Re: Терзания о кодеке h264

Сообщение Rodegast »

Что-то вы какие то непонятливые... Под libx264 я разумею костыль входящий в состав libavcodec. Вот тебе сцылка на исходники если на слово не веришь.
https://github.com/cehoyos/FFmpeg/blob/mast...codec/libx264.c
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Терзания о кодеке h264

Сообщение Bizdelnick »

Rodegast писал(а):
30.07.2013 00:23
Под libx264 я разумею костыль входящий в состав libavcodec. Вот тебе сцылка на исходники если на слово не веришь.

Ну верю. Но это же не отдельная библиотека, а часть libavcodec. Для каждого внешнего кодека нужна какая-то обвязка, это настолько само собой разумеется, что она даже звания костыля не заслуживает.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux
Контактная информация:

Re: Терзания о кодеке h264

Сообщение Rodegast »

> Но это же не отдельная библиотека, а часть libavcodec

А я нигде и не говорил что это "отдельная библиотека" ;)

> Для каждого внешнего кодека нужна какая-то обвязка,

Цитата с ЛОР ссылки:
Это не Mencoder такой хороший, а ffmpeg такой плохой. Проблема в том что у ffmpeg один набор опций для всех кодеков который не совместим с опциями x264. По этому он с ним работает через прокладку которая как раз и называется libx264. Ну и как результат наблюдается деградация производительности.

P.S. С Xvid-ом таже самая ситуация.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Терзания о кодеке h264

Сообщение Bizdelnick »

Rodegast писал(а):
30.07.2013 01:04
А я нигде и не говорил что это "отдельная библиотека"

Всё равно не худо бы уточнять, о чём речь. Я, когда читаю про libx264, понимаю, что речь о библиотеке libx264.so*, лежащей в пакете libx264*. А тут, оказывается, имеется в виду вовсе даже libavcodec.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
alkesta
Сообщения: 345
ОС: Fedora

Re: Терзания о кодеке h264

Сообщение alkesta »

Rodegast писал(а):
30.07.2013 01:04
Цитата с ЛОР ссылки:
Проблема в том что у ffmpeg один набор опций для всех кодеков который не совместим с опциями x264.


А можно какой-то пример в командной строке с набором опций, которые несовместимы с ffmpeg?
Спасибо сказали:
Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux
Контактная информация:

Re: Терзания о кодеке h264

Сообщение Rodegast »

> А можно какой-то пример в командной строке с набором опций, которые несовместимы с ffmpeg?

Хм... Я не специалист по ffmpeg, но сразу могу сказать что там как минимум нет опций для зон, маскировки/адаптивного квантования, мёртвых зон, матрицы квантования и профилей совместимости. Ну а за примером в командной строке с набором опций далеко ходить не надо, я так понимаю что у ТС большинство проблем как раз связаны с этой несовместимостью.
Спасибо сказали:
Аватара пользователя
alkesta
Сообщения: 345
ОС: Fedora

Re: Терзания о кодеке h264

Сообщение alkesta »

Rodegast писал(а):
30.07.2013 14:31
> А можно какой-то пример в командной строке с набором опций, которые несовместимы с ffmpeg?

Хм... Я не специалист по ffmpeg, но сразу могу сказать что там как минимум нет опций для зон, маскировки/адаптивного квантования, мёртвых зон, матрицы квантования и профилей совместимости. Ну а за примером в командной строке с набором опций далеко ходить не надо, я так понимаю что у ТС большинство проблем как раз связаны с этой несовместимостью.


Все таки хотелось бы понять, чем "ffmpeg такой плохой"... Из ссылки, которую Вы дали (https://github.com/cehoyos/FFmpeg/blob/master/libavcodec/libx264.c), видно, что libx264.c просто связующее звено между libavcodec и библиотекой x264:

Код: Выделить всё

/*
 * H.264 encoding using the x264 library
......................
#include <x264.h>

Т.е. используется все таже библиотека x264.

В ffmpeg можно сделать все тоже что и ...., короче тут одна и таже библиотека.
Из https://trac.ffmpeg.org/wiki/x264EncodingGuide :
2. Choose a preset
Current presets in descending order of speed are: ultrafast,superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo.... You can see a list of current presets with -preset help, and what settings they apply with x264 --fullhelp.

You can optionally use -tune to change settings based upon the specifics of your input.... You can see a list of current tunings with -tune help, and what settings they apply with x264 --fullhelp.

Another optional setting is -profile:v which will limit the output to a specific H.264 profile. This can generally be omitted unless the target device only supports a certain profile. For a list of supported profiles and their description, run x264 --fullhelp

Overwriting default preset settings
You can overwrite default preset settings with the x264opts option or by using the libx264 private options (see libx264 AVOptions in ffmpeg -h full). This is not recommended unless you know what you are doing. The presets were created by the x264 developers and tweaking values to get a better output is usually a waste of time.

Т.е пресеты есть, профили есть, при чем ссылки на x264 --fullhelp.
Вот пример, в котором используется адаптивное квантование, про который Вы тоже пишите - "что там как минимум нет опций":
ffmpeg -i input -c:v libx264 -preset slow -crf 22 -x264opts keyint=123:min-keyint=20:psy-rd=0.4,0.15:aq-mode=2:aq-strength=0.6 -c:a copy output.mkv


Или я что-то не так понимаю?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Терзания о кодеке h264

Сообщение Bizdelnick »

Rodegast писал(а):
30.07.2013 14:31
я так понимаю что у ТС большинство проблем как раз связаны с этой несовместимостью.

Вы нашли в топике описание какой-то проблемы? По-моему она там ровно одна - в его полной бессмысленности. Тем более что в конце вообще зачем-то дан скрипт, кодирующий webm...
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux
Контактная информация:

Re: Терзания о кодеке h264

Сообщение Rodegast »

> Вы нашли в топике описание какой-то проблемы?
> За последнее время я провел большое число экспериментов по кодированию видео. Оказалось получить качественное видео без рывков и с хорошей детализацией с минимумом темпоральных эффектов очень непросто. В кодеке h264 множество опций многие из которых связаны друг с другом, причем это проявляется непредсказуемо.

Бес комментариев.

>Тем более что в конце вообще зачем-то дан скрипт, кодирующий webm...

Ты не знаешь что такое контейнер?
Спасибо сказали:
Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux
Контактная информация:

Re: Терзания о кодеке h264

Сообщение Rodegast »

> Из ссылки, которую Вы дали (https://github.com/cehoyos/FFmpeg/blob/master/libavcodec/libx264.c), видно, что libx264.c просто связующее звено между libavcodec и библиотекой x264

Дык. Я же с самого начала говорил что "он с ним работает через прокладку которая как раз и называется libx264".

> -x264opts

Посмотрю вечером что это за опция новая. А то мне как то даже не верится что они начали отказываться от своего каличного интерфейса.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Терзания о кодеке h264

Сообщение Bizdelnick »

Rodegast писал(а):
30.07.2013 18:36
Ты не знаешь что такое контейнер?

webm - это не контейнер, а стандарт, определяющий совокупность контейнера и кодеков. Достаточно взглянуть на скрипт, впрочем, чтобы увидеть, какой видеокодек там используется:
Spoiler
Ism писал(а):
21.07.2013 03:09
ffmpeg \
-i $2 \
-loglevel warning \
-f webm \
-vcodec libvpx \
-vb $3k \
-threads $processor_cores \
-pix_fmt yuv420p \
-acodec libvorbis \
-ar 48000 \
-ab 192k \
-pass $1 \
-lag-in-frames 25 \
-auto-alt-ref 1 \
-minrate 0 \
-slices 1 \
-qmin 0 \
-qmax 51 \
-qcomp 0.7 \
-g 300 \
-deadline best \
-mb_threshold 0 \
-skip_threshold 0 \
-keyint_min 0 \
-bt 5 \
-ac 2 \
-passlogfile $passlogfile $4
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
alkesta
Сообщения: 345
ОС: Fedora

Re: Терзания о кодеке h264

Сообщение alkesta »

Rodegast писал(а):
30.07.2013 18:42
Посмотрю вечером что это за опция новая. А то мне как то даже не верится что они начали отказываться от своего каличного интерфейса.


Давно Вы батенька не заглядывали в ffmpeg. Параметр -x264opts появился больше 2 лет назад.
Спасибо сказали:
Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux
Контактная информация:

Re: Терзания о кодеке h264

Сообщение Rodegast »

> Достаточно взглянуть на скрипт, впрочем, чтобы увидеть, какой видеокодек там используется:

Да извиняюсь, я думал что этот чудак в контейнер webm h264 засовывает, а он действительно в webm кодирует.

> Давно Вы батенька не заглядывали в ffmpeg.

А что мне туда смотреть? Пока что он мне абсолютно не интересен.

> Параметр -x264opts появился больше 2 лет назад.

Код: Выделить всё

ffmpeg -i ./indigen.avi -vcodec libx264 -x264opts keyint=123:min-keyint=20 ./indigen.mkv
ffmpeg version 0.8.6-6:0.8.6-1, Copyright (c) 2000-2013 the Libav developers
  built on Mar 24 2013 18:40:26 with gcc 4.7.2
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.

Seems stream 0 codec frame rate differs from container frame rate: 30000.00 (30000/1) -> 25.00 (25/1)
Input #0, avi, from './indigen.avi':
  Duration: 00:06:25.08, start: 0.000000, bitrate: 658 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 360x288 [PAR 1:1 DAR 5:4], 25 fps, 25 tbr, 25 tbn, 30k tbc
    Stream #0.1: Audio: mp3, 44100 Hz, stereo, s16, 127 kb/s
Unrecognized option 'x264opts'
Failed to set value 'keyint=123:min-keyint=20' for option 'x264opts'

ЧЯДНТ?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Терзания о кодеке h264

Сообщение Bizdelnick »

Rodegast писал(а):
31.07.2013 18:27
ЧЯДНТ?

Используете avconv вместо ffmpeg. Они уже очень сильно разошлись по своим опциям.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
alkesta
Сообщения: 345
ОС: Fedora

Re: Терзания о кодеке h264

Сообщение alkesta »

Rodegast писал(а):
31.07.2013 18:27
> Параметр -x264opts появился больше 2 лет назад.

Код: Выделить всё

ffmpeg -i ./indigen.avi -vcodec libx264 -x264opts keyint=123:min-keyint=20 ./indigen.mkv
ffmpeg version 0.8.6-6:0.8.6-1, Copyright (c) 2000-2013 the Libav developers
  built on Mar 24 2013 18:40:26 with gcc 4.7.2
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.

Unrecognized option 'x264opts'
Failed to set value 'keyint=123:min-keyint=20' for option 'x264opts'

ЧЯДНТ?


-x264opts появилась в версии 0.7 Пруф Aug 13 2011
Спасибо сказали:
Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux
Контактная информация:

Re: Терзания о кодеке h264

Сообщение Rodegast »

> Используете avconv вместо ffmpeg. Они уже очень сильно разошлись по своим опциям.

Так в на trac.ffmpeg.org именно про ffmpeg написано.

> -x264opts появилась в версии 0.7

ffmpeg version 0.8.6-6:0.8.6-1
Спасибо сказали:
Ответить