Грамотный кодинг видео в Linux

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

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

Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Грамотный кодинг видео в Linux

Сообщение sspphheerraa »

Спасибо, по образу и подобию написал скрипт для себя:

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

#!/bin/bash

mencoder video.dv\
                   -sws 9\
                   -vf kerndeint,scale,harddup\
                   -ovc x264\
                   -x264encopts deblock:trellis=1:subq=6:partitions=all:8x8dct:me=umh:frameref=6:bframes=4:b_pyramid:weight_b:bime:mixed_refs:brdo:direct_pred=auto:keyint=750:qp=20\
                   -nosound\
                   -of rawvideo\
                   -o compressed-video.264

я жму в один проход задавая значение квантизера (qp=20 - для наглядности, его я меняю в зависимости от материала).

Что смущает - так это то что при кодировании фильтры открываются в обратной последовательности, чем я написал (см. последние три строчки):

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

$ sh x264-script.sh
MEncoder dev-SVN-rUNKNOWN-4.1.2 (C) 2000-2007 MPlayer Team
CPU: AMD Athlon(tm) 64 Processor 3000+ (Family: 15, Model: 47, Stepping: 0)
CPUflags: Type: 15 MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 1 SSE2: 1
Compiled with runtime CPU detection.
success: format: 0  data: 0x0 - 0x22e84780
libavformat file format detected.
[lavf] Video stream found, -vid 0
[lavf] Audio stream found, -aid 1
VIDEO:  [dvsd]  720x576  0bpp  25.000 fps  28800.0 kbps (3515.6 kbyte/s)
[V] filefmt:35  fourcc:0x64737664  size:720x576  fps:25.00  ftime:=0.0400
Opening video filter: [expand osd=1]
Expand: -1 x -1, -1; -1, osd: 1, aspect: 0.000000, round: 1
Opening video filter: [harddup]
Opening video filter: [scale]
Opening video filter: [kerndeint]
...

Просто в манах пишут, что harddup надо ставить в самом конце, а вот деинтерлейс-фильтр наоборот в начале...
В манах описаны опции определяющие последовательность фильтров, но нужного эффекта с помощью них добиться не удалось :(
Буду признателен, если кто-нибудь объяснит в чем здесь дело.


По поводу упаковки в mp4 - все равно ругается, но файл создает нормальный (во всяком случае mkvmerge видео из него выдирает).

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

$ mp4creator -create=compressed-video.264 -rate=25 compressed-video.mp4
Error decoding sei message
$

Может стоит попробовать ffmpeg для этого :D

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

$ ffmpeg -i compressed-video.264 -an -vcodec copy -f mp4 compressed-video.mp4
FFmpeg version SVN-rUNKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et al.
  configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --enable-static --enable-shared --cc=x86_64-pc-linux-gnu-gcc --disable-altivec --disable-debug --disable-v4l --disable-v4l2 --disable-network --disable-opts --enable-libmp3lame --enable-libvorbis --enable-libogg --enable-dc1394 --enable-xvid --enable-x11grab --enable-libogg --enable-x264 --enable-gpl --enable-pp --disable-strip
  libavutil version: 49.4.0
  libavcodec version: 51.40.2
  libavformat version: 51.11.0
  built on Apr 17 2007 23:18:42, gcc: 4.1.1 (Gentoo 4.1.1-r3)
Input #0, h264, from 'compressed-video.264':
  Duration: N/A, bitrate: N/A
  Stream #0.0: Video: h264, yuv420p, 720x576, 25.00 fps(r)
Output #0, mp4, to 'compressed-video.mp4':
  Stream #0.0: Video: h264, yuv420p, 720x576, q=2-31, 25.00 fps(c)
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop encoding
frame= 4067 fps=1157 q=8853316.0 Lsize=   26248kB time=162.7 bitrate=1321.5kbits/s
video:26185kB audio:0kB global headers:0kB muxing overhead 0.241991%
$

здесь в роде все ок :)

sda писал(а):
28.08.2007 14:08
буду признателен, если кто-нить доступно изложит параметры vbr кодирования в x264 при помощи ffmpeg (а также преимущества по сравнению с изложенным выше способом).

в манах упоминается, но как-то поверхностно...
а можно этот самый текст :) где много букаф
Sspphheerraa
Спасибо сказали:
Аватара пользователя
sda
Сообщения: 419
ОС: SuSE
Контактная информация:

Re: Грамотный кодинг видео в Linux

Сообщение sda »

MAA

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

$ ffmpeg -i compressed-video.264 -an -vcodec copy -f mp4 compressed-video.mp4
******
frame= 4067 fps=1157 q=8853316.0 Lsize=   26248kB time=162.7 bitrate=1321.5kbits/s

вот тут как раз и засада (как обойти описал в посте ранее). ты можешь ставить .mp4, .h264, но имеешь vbr с поганым качеством кодинга (bitrate=1321.5kbits/s). если есть кто может показать параметры vbr для качества, аналогичного:

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

ffmpeg -i sound.mp3 -i motion_demo1_2_1.avi -map 1:0 -map 0:0 -acodec copy -vcodec libx264 -crf 20  motion_demo1_2_2.avi

то было бы интересно пофтыкать.

imho - если делаешь

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

mencoder -ovc x264 -x264encopts qp=20

то всё остальное - и есть "многа букафф", которые теряют смысл. также есть чудная гуёвина - x264_gtk_encode - для тестов и т.п.
Вложения
shot1.png
А форумокъ всёжъ таки с гнiльцой...©
Спасибо сказали:
minder
Сообщения: 331
ОС: AIX, Solaris,RHEL,SLES,Gentoo

Re: Грамотный кодинг видео в Linux

Сообщение minder »

Вот еще хорошая ссылка http://www.linuxjournal.com/article/9005. Используется сразу mp4.

2 MAA,
По поводу упаковки в mp4 - все равно ругается, но файл создает нормальный (во всяком случае mkvmerge видео из него выдирает).
Код
$ mp4creator -create=compressed-video.264 -rate=25 compressed-video.mp4
Error decoding sei message
$

Ну это он и у меня выдавал
Спасибо сказали:
Аватара пользователя
sda
Сообщения: 419
ОС: SuSE
Контактная информация:

Re: Грамотный кодинг видео в Linux

Сообщение sda »

minder писал(а):
28.08.2007 23:21
Вот еще хорошая ссылка http://www.linuxjournal.com/article/9005. Используется сразу mp4.

опять же - это именно то, о чём я и говорил. используется -crf для однопроходного кодирования. может кто видел толковое описание для vbr с анализом и сравнениями с -crf ?
А форумокъ всёжъ таки с гнiльцой...©
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Грамотный кодинг видео в Linux

Сообщение sspphheerraa »

sda писал(а):
28.08.2007 18:29
всё остальное - и есть "многа букафф", которые теряют смысл

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

На счет vbr, не совсем понял, что ты имеешь в виду. Если постоянный квантизер, то битрейт автоматически будет "variable", если постоянный битрейт - будет переменный квантизер. Это для линейных зависимостей. Но в инете упоминается и о "не линейных" зависимостях, т.е. когда и битрейт и квантизер переменны (изменяются нелинейно; делается в 2-3 и более проходов).
Вот, например, статья о кодировании в 3 прохода:
http://strannick.blogspot.com/2007/04/x264.html


зы
х264 все еще в разрабртке, возможно того что ты спрашиваешь еще и нет вовсе...
Sspphheerraa
Спасибо сказали:
Аватара пользователя
sda
Сообщения: 419
ОС: SuSE
Контактная информация:

Re: Грамотный кодинг видео в Linux

Сообщение sda »

сегодня весь день шёл процесс:

mencoder file.vob -oac copy -ovc x264 -x264encopts pass=1:qp=20:bframes=4:subme=7 -o file_mencoder_x264.avi

результаты:

было
VIDEO: MPEG2 720x576 (aspect 3) 25.000 fps 8000.0 kbps (1000.0 kbyte/s)
size 4167890944 byte
стало
VIDEO: [h264] 720x576 24bpp 25.000 fps 981.0 kbps (119.8 kbyte/s)
size 1192040862 byte

а если выкинуть звук, то получим 782 Мб (т.е. если пожать звук в ogg, то влезет на болванку). качество - норм.

Предлагаю здесь где-то в таком же ключе делиться опытом.
А форумокъ всёжъ таки с гнiльцой...©
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Грамотный кодинг видео в Linux

Сообщение sspphheerraa »

sda писал(а):
30.08.2007 01:56
mencoder file.vob -oac copy -ovc x264 -x264encopts pass=1:qp=20:bframes=4:subme=7 -o file_mencoder_x264.avi

а что имеет смысл несколько проходов если "qp=..."? этож если тока битрейт указывать...
расческу не убираешь?

У меня исходный материал - отснятое на DVC, т.е. разрешение и fps тоже, но в силу снимаемого контента качество конечно ниже. Я когда подбирал настройки для менкодера выделил наиболее динамичный фрагмент длительностью в 15 сек (375 кадров) у меня получалось:
при qp=20 - 20Мб
при полном дефолте (ничего в -x264encopts не указывал) - 8,8Мб
при qp=30 - 4,7Мб
при qp=33 - 3,1Мб
при qp=35 - 2,2Мб
На счет качества скажу так, артефактов очень мало даже при qp=35, в x264 ухудшение_качества=увеличение_размытости. Могу предположить что если снимать со штатива (где камера не дергается), и не увлекаться трансфокатором (зумом), то можно жать и выше qp=35 :)

sda, честно сказать не понимаю как у тебя при qp=20 получилось 981kbps

sda писал(а):
30.08.2007 01:56
а если выкинуть звук, то получим 782 Мб (т.е. если пожать звук в ogg, то влезет на болванку). качество - норм.

В матрешке оно будет весить еще на 5-10 метров меньше :)
Если звук жать в ogg, то смысла класть видео в avi я не вижу - ogg туда все равно не зашьешь (а про возможные глюки народ отзывается). Теоретически можно кодировать ffmpeg"ом сразу и видео и звук, но какой контейнер для этого выбрать, для x264+ogg :) ? На других форумах пишут, что mp4 не может содержать ogg, что есть хаки аналогичные как для avi, но это костыли и зажимать лучше по отдельности.
К тому же ogg в ffmpeg'е специфический - когда я пережимал mp3'хи, то в полученных файлах amarok не определял битрейт... В прочем если исходный звук не PCM, то выбор не велик (ну еще Audacity умеет). PCM лучше жать с помощью oggenc.

Все вышенаписанное IMHO
Этапов получается достаточно много, если набирать из консоли... а если скрипт напедалить, то тогда какая разница? :)
Sspphheerraa
Спасибо сказали:
Аватара пользователя
sda
Сообщения: 419
ОС: SuSE
Контактная информация:

Re: Грамотный кодинг видео в Linux

Сообщение sda »

MAA
ок. если не против - давай подумаем вместе...
1. imho - даже при qp= несколько проходов имеют смысл. первый проход ессно с turbo, benchmark etc... но потом (после первого прохода) появляется файл divx2pass.log и дальнейший анализ/кодирование идёт по этому файлу (там на первой строке к тому же есть инфа по активным параметрам кодирования - очень полезно). из этого к тебе есть вопросы:
а) зачем "-sws 9", scale и harddup если не указываешь параметры при scale? (не пользуешь ssf?)
б) указываешь trellis=1 без указания pass=1. imho = более разумно указать pass=1:trellis=2
в) keyint=750 - ... ??? imho - ппц... потом кроме как в mplayer/ffplay невозможно смотреть, да и картинка страдает
2. звук пожал в mp3 с 128 kb/s (стерео из 5.1) - на 800 в авишке закатал таки :). так что можно в один проход всё собрать.
3. 981kbps - это без звука. как-то получилось. только вот расчёт estimated size - на глаз....
4. всё дополнительное мультиплексирование (добавление/замена аудиодорожек) делаю в ffmpeg - пока норм...
5. "расчёски" на progressive не заметил
А форумокъ всёжъ таки с гнiльцой...©
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Грамотный кодинг видео в Linux

Сообщение sspphheerraa »

sda писал(а):
30.08.2007 13:37
MAA
ок. если не против - давай подумаем вместе...
1. imho - даже при qp= несколько проходов имеют смысл. первый проход ессно с turbo, benchmark etc... но потом (после первого прохода) появляется файл divx2pass.log и дальнейший анализ/кодирование идёт по этому файлу (там на первой строке к тому же есть инфа по активным параметрам кодирования - очень полезно).

Ну хорошо, допустим.
sda писал(а):
30.08.2007 13:37
а) зачем "-sws 9", scale и harddup если не указываешь параметры при scale? (не пользуешь ssf?)

без параметра scale пишет:

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

==============================================
VDec: vo config request - 720 x 576 (preferred colorspace: Planar YV12)
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
The selected video_out device is incompatible with this codec.
Try appending the scale filter to your filter list,
e.g. -vf spp,scale instead of -vf spp.
VDec: vo config request - 720 x 576 (preferred colorspace: Planar YV12)
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
The selected video_out device is incompatible with this codec.
Try appending the scale filter to your filter list,
e.g. -vf spp,scale instead of -vf spp.

Exiting...
$

scale осуществляет YUV<−>RGB преобразование пространства цветов, ничего не указываю, потому что ничего обрезать не надо (с DVC черных полей нет).
По умолчанию - оригинальная ширина/высота.

sda писал(а):
30.08.2007 13:37
б) указываешь trellis=1 без указания pass=1. imho = более разумно указать pass=1:trellis=2

попробую...

sda писал(а):
30.08.2007 13:37
в) keyint=750 - ... ??? imho - ппц... потом кроме как в mplayer/ffplay невозможно смотреть, да и картинка страдает

а что? каждые 30 сек, у меня видео низкодинамичное (иногда ставлю и более).
да и потом этож не жесткое условие интервала I-кадров, а максимальное - как часто их ставить кодек все равно сам решает ;)
На WMP пороигрывается, глюков не замечал.

sda писал(а):
30.08.2007 13:37
2. звук пожал в mp3 с 128 kb/s (стерео из 5.1) - на 800 в авишке закатал таки :). так что можно в один проход всё собрать.

800Mb на CD? это как, с overburn что ли?

sda писал(а):
30.08.2007 13:37
3. 981kbps - это без звука. как-то получилось. только вот расчёт estimated size - на глаз....

понятно что без звука, x264 звук же не кодирует :)
удивил не размер, а соотношение qp/bitrate, у меня при qp=20 битрейт насчитывает 11181.5kbits/s (15 сек - 20 Мб)

sda писал(а):
30.08.2007 13:37
4. всё дополнительное мультиплексирование (добавление/замена аудиодорожек) делаю в ffmpeg - пока норм...

если не иметь дело с ogg - да

sda писал(а):
30.08.2007 13:37
5. "расчёски" на progressive не заметил

у тебя прогрессивный DVD? - он же в нативе должен быть interlaced
Sspphheerraa
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Грамотный кодинг видео в Linux

Сообщение sspphheerraa »

minder писал(а):
14.03.2007 08:47
Т.к. я использую Vorbis для звука, то перегоняю в Matroska.

К стати, а не возникало ли у тебя такого, что матрешка с x264 и ogg проигрывалась без звука?
Мплеер твердит следующее

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

Too many video packets in the buffer: (1555 in 8391105 bytes).
Maybe you are playing a non-interleaved stream/file or the codec failed?
For AVI files, try to force non-interleaved mode with the -ni option.

звука нет, попытка промотки фильма приводит к закрытию :(
Как побороть?
Sspphheerraa
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Грамотный кодинг видео в Linux

Сообщение sspphheerraa »

MAA писал(а):
30.08.2007 23:15
Как побороть?

сам же и отвечаю :)
не правильно укладывал в mp4

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

$ ffmpeg -i video.x264 -an -vcodec copy -f mp4 video.mp4

похоже надо параметры потока в ручную задавать, на вскидку решил уложить вот так

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

$ mp4creator -create=video.x264 -rate=25 video.mp4

и теперь воспроизводится нормально :)
единственное что - mplayer не определяет битрейты ни видео, ни звука... буду курить дальше, видно их тоже как-то надо обозначить при муксе
Sspphheerraa
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Грамотный кодинг видео в Linux

Сообщение sspphheerraa »

sda, вот нарыл шаблон скрипта для кодирования с помощью ffmpeg в x264 (в 2 прохода):

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

ffmpeg -i INPUT -an -pass 1 -vcodec libx264 -b BIT_RATE -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -flags2 -8x8dct-wpred -me epzs -subq 1 -trellis 0 -refs 1 -bf 3 -b_strategy 1 -coder 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt BIT_RATE -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 OUTPUT.mp4

ffmpeg -i INPUT -acodec libfaac -ab 128k -pass 2 -vcodec libx264 -b BIT_RATE -flags +loop -cmp +chroma -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -flags2 +bpyramid+wpred+mixed_refs+8x8dct+brdo -me umh -subq 7 -trellis 2 -bidir_refine 1 -refs 5 -bf 3 -b_strategy 1 -coder 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt BIT_RATE -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 OUTPUT.mp4

опции теже что и в mencoder (только задаются другими буквами), следовательно для подбора их значений можно руководствоваться маном менкодера :)
Sspphheerraa
Спасибо сказали:
Аватара пользователя
sda
Сообщения: 419
ОС: SuSE
Контактная информация:

Re: Грамотный кодинг видео в Linux

Сообщение sda »

ничё так... но терпелки на 2 прохода нехватат... нужен quad opteron походу с надцатью ОЗУ...
А форумокъ всёжъ таки с гнiльцой...©
Спасибо сказали:
minder
Сообщения: 331
ОС: AIX, Solaris,RHEL,SLES,Gentoo

Re: Грамотный кодинг видео в Linux

Сообщение minder »

MAA писал(а):
30.08.2007 23:42
... единственное что - mplayer не определяет битрейты ни видео, ни звука... буду курить дальше, видно их тоже как-то надо обозначить при муксе

А зачем он должен определять битрейт? при муксе нет возможности задавать подобное... просто mplayer не доконца поддерживает matroska.
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Грамотный кодинг видео в Linux

Сообщение sspphheerraa »

minder писал(а):
02.09.2007 19:49
просто mplayer не доконца поддерживает matroska.

битрейт видео в mp4 тоже не определяет...
а MediaInfo определяет?

зы Для MediaInfo есть ebuild?
Sspphheerraa
Спасибо сказали:
minder
Сообщения: 331
ОС: AIX, Solaris,RHEL,SLES,Gentoo

Re: Грамотный кодинг видео в Linux

Сообщение minder »

MAA писал(а):
02.09.2007 23:04
minder писал(а):
02.09.2007 19:49
просто mplayer не доконца поддерживает matroska.

битрейт видео в mp4 тоже не определяет...
а MediaInfo определяет?

зы Для MediaInfo есть ebuild?

Определяет, но ebuild'a нету для него.
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Грамотный кодинг видео в Linux

Сообщение sspphheerraa »

Заметил, что при ужатии x264 хуже кодирует малодинамичные области кадра. Даже при высоких значениях crf на сером небе, к примеру, или на голубом море видны границы макроблоков. А там где high-motion сцена - там всегда получается лучше.
В Xvid были такие опции (High bitrate scenes degradation %, Low bitrate scenes improvement %), позволяющие указывать на какие сцены отдавать больше битпотока, на какие меньше.
А вот в x264 я что-то не могу найти ничего подобного :(
Кроме того, в доках xvid'а было описано (хоть и в кратце) об особенностях матриц, так матрица mpeg больше отдавала битпотока статичным объектам, матрица h263 - одинаково на все кадры.
В x264 можно менять матрицу квантования, но какая из них лучше для низкодинамичного видео?
Sspphheerraa
Спасибо сказали:
Аватара пользователя
sda
Сообщения: 419
ОС: SuSE
Контактная информация:

Re: Грамотный кодинг видео в Linux

Сообщение sda »

imho - попробуй с дефолтных значений, а то смотрю ты дюже борзо разогнался на me, partitions и т.п.
-x264encopts pass=1:qp=20:bframes=4:subme=7
в divx2pass.log смотри на параметры (кадров по 600-900 на низкую динамику) и будет счастье...
А форумокъ всёжъ таки с гнiльцой...©
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Грамотный кодинг видео в Linux

Сообщение sspphheerraa »

sda писал(а):
07.09.2007 19:12
imho - попробуй с дефолтных значений, а то смотрю ты дюже борзо разогнался на me, partitions и т.п.
-x264encopts pass=1:qp=20:bframes=4:subme=7
в divx2pass.log смотри на параметры (кадров по 600-900 на низкую динамику) и будет счастье...

не заметил особой разницы :(
Вот гляньте, вырезка из кадра - листья выглядят хорошо, а однотонное море с артефактами. Тоже самое с движениями - где они есть, все четко и красиво, где их нет - там "непожвижные квадратики"
6.png



зы А как читать divx2pass.log? что зазначения пишутся в правых колонках?
Sspphheerraa
Спасибо сказали:
Аватара пользователя
sda
Сообщения: 419
ОС: SuSE
Контактная информация:

Re: Грамотный кодинг видео в Linux

Сообщение sda »

а можешь метров 5-10 исходника кинуть на депозит или куда-нить кроме рапиды и yourfilelink (зоны WebAir мне недоступны за плохое поведение)... ?
А форумокъ всёжъ таки с гнiльцой...©
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Грамотный кодинг видео в Linux

Сообщение sspphheerraa »

не :( у меня канал вход/исход зарезан на 32/16 kbps - по сему, рапида и другие депозиты отпадают (соединение рвется).
Буду пробовать методом тыка... попробую матрицу jvt.
Sspphheerraa
Спасибо сказали:
Аватара пользователя
sda
Сообщения: 419
ОС: SuSE
Контактная информация:

Re: Грамотный кодинг видео в Linux

Сообщение sda »

MAA писал(а):
07.09.2007 22:01
зы А как читать divx2pass.log? что зазначения пишутся в правых колонках?

не-не-не! смотри на первую строчку, она закомментирована и содержит параметры кодирования (пример)

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

#options: 720x480 fps=30000/1001 cabac=1 ref=1 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=5 brdo=0 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 chroma_qp_offset=0 threads=1 nr=0 decimate=1 mbaff=0 bframes=0 keyint=250 keyint_min=25 scenecut=40 rc=cqp qp=20 ip_ratio=1.40
А форумокъ всёжъ таки с гнiльцой...©
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Грамотный кодинг видео в Linux

Сообщение sspphheerraa »

Получилось добиться более-менее приемлемого результата с опцией deblock=3,3 :) Теперь границ блоков практически не видно.

И еще решил попробовать не убирать расческу, а кодировать с опцией interlaced (чтоб потом смотреть на телеке через TV-OUT с компа). Все-таки плавность есть плавность :tongue:
Единственное что меня терзает, а не перепутается ли порядок полей?
Sspphheerraa
Спасибо сказали:
Аватара пользователя
sda
Сообщения: 419
ОС: SuSE
Контактная информация:

Re: Грамотный кодинг видео в Linux

Сообщение sda »

вроде не должон... кстати, покажи полностью deblock (3:3:0 или по-другому)?
А форумокъ всёжъ таки с гнiльцой...©
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Грамотный кодинг видео в Linux

Сообщение sspphheerraa »

В логе deblock=1:3:3
1 значит опция включена, 3:3 значения для AlphaC0 и Beta соответственно.
В -x264encopts просто пишется :deblock=3,3:

К стати, на счет артефактов на однотонных областях - это психовизуалистическая модель... Артефакты есть везде, просто глаз их лучше видит на монотонном цвете, чем на перемежающихся или там где есть движение.
В общем, без уменьшения квантизера не обойтись.
Sspphheerraa
Спасибо сказали:
Аватара пользователя
sda
Сообщения: 419
ОС: SuSE
Контактная информация:

Re: Грамотный кодинг видео в Linux

Сообщение sda »

что-то многовато ты нарезал... 1,1... ну 2,2... на 3-х уже как-то... есть подозрения, что всему виной тип матрицы... эх...
А форумокъ всёжъ таки с гнiльцой...©
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Грамотный кодинг видео в Linux

Сообщение sspphheerraa »

Решил сделать немного по другому, исходя из bbp=0,20 (bits per pixel).
Кодировал в 3 прохода (на ночь оставил), результат очень хороший (а на телеке - вообще супер), даже лучше чем при crf=20. Фильм 720x576@25i-42min ужат в 620 Mb
Скрипт такого содержания:

Код:

#!/bin/bash INPUT_FILE=/mnt/video/Video-edited.dv echo "****************************" echo "Pass one" echo "****************************" mencoder $INPUT_FILE -nosound \ -of rawvideo -o /dev/null \ -aspect 4:3 \ -ovc x264 \ -x264encopts pass=1:interlaced:bframes=3:b_pyramid:weight_b:me=umh:partitions=all:trellis=1:q comp=0.7:deblock=1,1:psnr:subq=7:frameref=6:bitrate=2110:turbo \ echo "****************************" echo "Pass two" echo "****************************" mencoder $INPUT_FILE -nosound \ -of rawvideo -o /dev/null \ -aspect 4:3 \ -ovc x264 \ -x264encopts pass=3:interlaced:bframes=3:b_pyramid:weight_b:me=umh:partitions=all:trellis=2:q comp=0.7:deblock=1,1:psnr:subq=7:frameref=6:bitrate=2110 \ echo "****************************" echo "Pass three" echo "****************************" mencoder $INPUT_FILE -nosound \ -of rawvideo \ -aspect 4:3 \ -ovc x264 \ -x264encopts pass=3:interlaced:bframes=3:b_pyramid:weight_b:me=umh:partitions=all:trellis=2:q comp=0.7:deblock=1,1:psnr:subq=7:frameref=6:bitrate=2110 \ -o Final-video.264

Матрица дефолтовая, deblock уменьшил до 1,1, но ключевая опция оказалась - interlaced. Качество стало лучше (границ блоков не видно), и инфа о движении сохранена :)

IMHO нужно делать так:
Исходя из контента видео подбираем bbp (источник). Хорошие значения 0,20-0,25. В прочем, для высокодинамичных фильмов (например, запись прохождения Doom III :) ), нужно ставить более 0,30, а для очень статичных хватит и 0,15.
И вычисляем битрейт (B) по формуле:
B = (fbxy)/1024
где b - bpp, f - framerate, x,y - разрешение по ширине и высоте соответственно.
Полученную цифру задаем в опциях, и кодируем в несколько проходов - битрейт будет переменным со средним значением равным B. Коэффициент размаха значений битрейта задаем через опцию qcomp.

По соотношению размер/качество этот метод лучший :) (опять же IMHO)
Sspphheerraa
Спасибо сказали:
Аватара пользователя
Arceny
Сообщения: 378
ОС: Debian Lenny/Sid
Контактная информация:

Re: Грамотный кодинг видео в Linux

Сообщение Arceny »

Вот попало мне в руки HD 1080i видео. Весит 14 гигов файлик. Кодек - mpeg2. Сижу и ломаю голову как его правильно закодировать? так как оно i то при кодировании как прогрессивное получается кака. Есть желание сделать 720p рип на 1 ДВД болванку. Кодек, естественно, x264. Может кто нибудь подскажет как бороться с этим i ?
Спасибо сказали:
xfn
Сообщения: 112

Re: Грамотный кодинг видео в Linux

Сообщение xfn »

Arceny писал(а):
27.11.2007 12:10
Вот попало мне в руки HD 1080i видео. Весит 14 гигов файлик. Кодек - mpeg2. Сижу и ломаю голову как его правильно закодировать? так как оно i то при кодировании как прогрессивное получается кака. Есть желание сделать 720p рип на 1 ДВД болванку. Кодек, естественно, x264. Может кто нибудь подскажет как бороться с этим i ?


в постпроцессинге указать нужный параметр, например:

-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1200:vme=4:vqscale=3:vb_strategy=1:keyint=300 -vf pp=lb

pp - и есть постпроцессинг, параметры которого варьируются
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Грамотный кодинг видео в Linux

Сообщение sspphheerraa »

IMHO не стоит овчинка выделки...
В плане рипа - в качестве потеряете (причем серьезно!), ресурсов, времени и нервов займет очень много...
Насколько я понимаю, у Вас видео 1920х1080@25i т.е. разные строки имеют разный временной отпечаток. При переводе i->p потеряете временное разрешение (движения будут дерганными), а если одновременно с этим еще и разрешение уменьшите (с 1080 до 720) - потеряется информация о разных временных строках как таковых. Будут артефакты типа "волнистой" расчески, которые уже потом НИЧЕМ не уберешь.

ps Просто пережмите его, уменьшив битрейт (разрешение и флаг interpolated оставьте как в оригинале). Я бы сделал так.
Sspphheerraa
Спасибо сказали:
Ответить