LinuxForum.Fans
Тема

Blu-ray compressing

Автор: Peter 24 сообщений 7326 просмотров
#248799

Здравствуйте!

Просьба помочь советом, т.к. в мультимедии я практически не разбираюсь.
Есть желание получить сжатый видеофайл из Blu-ray диска с сохранением разрешения 1920x1080.
Как мне сказал знающий человек, сжимать для этого надо не более, чем в два раза или чуть больше,
иначе будет заметна потеря качества, а для желаемого коэффициента сжатия надо в одной и той же
пропорции уменьшить audio-/video bitrate, а также использовать audiocodec AC3, т.к.
предположительно именно он в оригинале и videocodec H.264.

Предположим, исходный audiobitrate - abr_ori, videobitrate - vbr_ori, тогда команда
предположително такая

text
mencoder br:/// -dev/sr0 -of mkv -o bluray.mkv -oac lavc -ovc lavc -lavcopts acodec=ac3:abitrate=abr_ori/2:vcodec=libx264:vbitrate=vbr_ori/2:vhq=4:threads=1:aspect=16/9:chroma_opt

Правильно ли это?
Если нет, чего не хватает?
Есть ли лишнее, например, aspect и chroma_opt?

Пётр.

#249121

Кодировать пока не пробовал, а в предполагаемой команде были
лишние опции: "-of mkv", chroma_opt, threads=1, т.к. по умолчанию 1,
vhq=4 -это для xvid, а для lavc можно, например, mbd=2, aspect=16/9,
а путь надо задавать так: br:////mount_point.

При этом mplayer пропускает какую-то заставку, а gnome-mplayer и vlc её играют.
mplayer масштабирует размер к размеру моего монитора, а два другие нет.
mplayer сообщает, что audio bitrate - 640kbit/41.67%, а vlc - 1536.
mplayer video bitrate не выводит, а vlc выодит непрерывно и он не постоянный,
а меняется до 40000kb/s.

Как же мне указать, чтобы сжатие при кодировании происходило
в желаемое число раз, в два, например? Воспользоваться другим способом
указания кодека, а именно x264 и пытаться сделать это с помощью его опций?
В них я ещё глубоко не вникал.

Пётр.

#249146

Хотя бы примерно известно, при использовании видеокодека x264enc какая
зависимость размера от опции crf?

Пётр.

#249282

Запустил 1-й проход, много сообщений вида

text
n duplicate frame(s)!

где n - 1, 2 или 3, это плохо или можно пренебречь?

Пётр.

#249290

Ну, по идее, это плохо -- компрессия страдает, хотя и могу ошибаться - в конвертации видео я ни в зуб копытом :(

#249291

Кодирование идёт приблизительно в 1.8 раза медленнее просмотра,
загружены оба ядра. Процессор AMD Athlon II X2 2800.
Запускал командой

text

mencoder br:////media/cdrom0 -mc 0.1 -o ${1}.mkv -vf scale 1920:1080 -nozoom \
-noaspect -ofps 23.976025 -oac copy \
-ovc x264 -x264encopts pass=1:turbo=1:subq=9:frameref=5:ratetol=8.0:trellis=2:\
vbv_maxrate=20000:vbv_bufsize=160000:crf=18

20000 - потому что при просмотре bitrate доходил до 40000.
Хотел вставить ещё b_frames=2 и b_pyramid, но забыл.
На качестве изображения эти дубликаты будут заметны?

Пётр.

#249295

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

#249303

Сам я в мультимедиа - полный невежда. Заодно не подскажете ли, как сделать 2-й проход
и получить результат?
В приведённой выше команде я установил pass=2, убрал crf и запустил снова, но получил
сообщение, что constant rate-factor несовместим с pass=2.
Временные файлы там создались. М.б., я вообще всё неправильно делаю?

Пётр.

#249309

Попробуйте не ограничивать видеобитрейт, т.е., не указывать vbv_maxrate.
Вот, кстати, интересная ссылка (хотя, вы уже, наверное, там были): OpenNET: скрипт для конвертации видео

#249311

Попробую, вообще мне желательно получить результирующей файл, сжатый
в указанное число раз, например, вдвое. Эту ссылку посмотрю, а вот ещё
более подробно, если сделать поиск по точной фразе
как выбрать оптимальный битрейт и ключевые параметры

Пётр.

#249428
yars написал:
Насколько я понимаю, вставка в поток дубль-кадров нужна при изменении частоты кадров в большую сторону по сравнению с оригиналом, т.е., получается, что быть их не должно. Насчет как это скажется на качестве - сложно сказать.

Я сначала нашёл в Интернете, а потом и в "man mencoder", что для исключения пропуска кадров
надо указывать "-vf harddup" или "-noskip -mc 0" и в некоторых случаях это прямо рекомендуется.
Я указал и то и другое, сейчас пробую. Этого сообщения нет.

Пётр.

#249672

Теперь не удаётся начать 2-й проход, сообщение, что constant rate-factor несовместим
с pass=2 и не может выбрать видеокодек. Команда такая:

text

mencoder br:////media/cdrom0  -nozoom -noaspect \
-noskip -mc 0 -vf harddup -o ${1}.avi \
-oac copy \
-ovc x264 -x264encopts pass=2:frameref=5:bframes=3:\
b_pyramid=strict:bluray_compat:ratetol=8.0:vbv_maxrate=21000:\
vbv_bufsize=168000:subq=9:trellis=2

т.е. опции crf здесь нет. А как сделать правильно?
Ещё при 1-м проходе было сообщение, что "turbo deprecated".
Так можно указывать turbo или нет и надо просто задавать значения опций,
увеличивающие скорость прохода?

Пётр.

М.б., при двухпроходном режиме и в 1-й раз нельзя задавать crf?

#249832

Сейчас делаю 1-й проход командой

text

mencoder br:////media/cdrom0 -nozoom -noaspect -noskip -mc 0 -vf harddup \
-o ${1}_1.avi -oac copy -ovc x264 -x264encopts preset=medium:pass=1:\
bluray_compat:b_pyramid=strict

идёт раза в полтора медленнее, чем просмотр, м.б., можно было задать другой preset?

Пётр.

#249837

И в этот раз 2-й проход не начался с сообщением, что constant rate-factor
несовместим со 2-м проходом. Команда для него была

text

mencoder br:////media/cdrom0  -nozoom -noaspect -noskip -mc 0 -vf harddup \
-o ${1}.avi -oac copy -ovc x264 -x264encopts pass=2:frameref=5:bframes=16:\
b_adapt=2:direct_pred=auto:nofast_pskip:me=umh:me_range=24:partitions=all:\
rc_lookahead=60:subq=10:trellis=2:b_pyramid=strict:bluray_compat:\
ratetol=8.0:vbv_maxrate=21000:vbv_bufsize=168000

Где именно здесь или в команде для 1-го прохода constan rate-factor?
preset=medim - это установки по умолчанию, которые для 2-го прохода я задал явно,
где здесь crf?

Пётр.

#250009

Я заметил, что вспомогательные файлы со статистикой имеют расширение .temp,
а его не должно быть после окончания прохода. Оно должно быть только во время
создания файлов, а если оно остаётся, это означает, что по какой-то причине их создание
не было завершено.
Попробовал делать другой командой, почти как в одном варианте, найдённом в Интернете,
опять эти файлы сохраняют расширение .temp, а 2-й проход не начинается с сообщением

text
x264 [error]: ratecontrol_init: can't open stats file

по-видимому, именно из-за этого. Команды были

text

mencoder br:////media/cdrom0 -nozoom -noaspect -noskip -mc 0 -vf harddup \
-o ${1}_1.avi -oac copy -ovc x264 -x264encopts pass=1:bitrate=18500:\
preset=medium:weight_b:direct_pred=auto:trellis=1:me=umh:partitions=all:\
b_pyramid=strict:bluray_compat

mencoder br:////media/cdrom0 -nozoom -noaspect -noskip -mc 0 -vf harddup \ -o ${1}.avi -oac copy -ovc x264 -x264encopts pass=2:bitrate=18500:\ preset=placebo:me=umh:weight_b:ratetol=8.0:b_pyramid=strict:bluray_compat

Пётр.

#250098

В любом случае не воспринимается часть команды, содержащая b_pyramid или threads,
например, в команде

text

mencoder br:////media/cdrom0 -nozoom -noaspect -noskip -mc 0 -vf harddup \
-o ${1}_1.avi -oac copy -ovc x264 -x264encopts pass=1:bitrate=17500:\
b_pyramid=strict:bluray_compat:threads=auto

насчёт этой части, уже после прохождения шага, выдаётся сообщение,
что не открыть файл b_pyramid=strict:bluray_compat:threads=auto
в чём тут может быть причина?

Пётр.

#250193

Поскольку осуществить двухпроходный режим не удалось, я попробовал выполнить
кодирование за один раз командой

text

mencoder br:////media/cdrom0 -nozoom -noaspect -noskip -mc 0 -vf harddup \
-o ${1}.avi -oac copy -ovc x264 -x264encopts bitrate=17500:frameref=6:\
bframes=16:b_adapt=2:b_pyramid=strict:bluray_compat:rc_lookahead=60:\
ratetol=8.0:direct_pred=auto:weight_b:partitions=all:me=umh:me_range=24:\
subq=10:trellis=2:nofast_pskip:threads=auto

кодирование продолжалось часов 14, со скоростью около трёх кадров в секунду.
файл создался, размер 13222M, я его ещё не смотрел, но после окончания процесса
было сообщение

text

File not found: 'bframes=16:b_adapt=2:b_pyramid=strict:bluray_compat:rc_lookahead=60:'
Failed to open bframes=16:b_adapt=2:b_pyramid=strict:bluray_compat:rc_lookahead=60:.
Cannot open file/device.

т.е., как и раньше, mencoder жалуется на параметры, помещённые после \.
Хотелось бы знать, почему это так? Их что, надо физически помещать в одной строке?
Я видел в Интернете примеры с использованием \ и никто на подобное не жаловался.
И были ли эти параметры восприняты?
М.б., mencoder не умеет обрабатывать \, тогда почему так долго кодировал?

Пётр.

#250201

Попробуйте всю строку с параметрами заключить в кавычки и не использовать перенос \
и да, какой шелл у вас? Bash?
Пробелы перед \ не забываем :)

#250240
yars написал:
Попробуйте всю строку с параметрами заключить в кавычки и не использовать перенос \
и да, какой шелл у вас? Bash?
Пробелы перед \ не забываем :)

Я так и собираюсь попробовать без \, но и без кавычек, т.к. в "man mencoder"
это не предусмотрено. Пробелов перед и после /, наоборот, не должно быть и их нет,
только LF=0xA после \, но ведь \ и должен отменять LF.

shell tcsh и мне уже сказали, что в нём \ не экранирует LF, даже и строку из "man tcsh"
привели. Действительно, надо или в одну строку или в кавычках.

Пётр.

#250308

С записью команды в одну строку всё работает, как и следует.
После 1-го прохода начался 2-й, но с очень низкой скоростью.
В 1-м fps была 12.xx, во 2-м - на порядок меньше, минут через 40 было 1.11.
Т.к. дисков много, то придётся сохранять образы или каталоги.

Пётр.

Войдите или зарегистрируйтесь, чтобы ответить.