Сегодня таки собрал волю в кулак и заставил себя облизать и зарелизить новую версию программы для конвертирования видео в формат, подходящий для разных переносных устройств, не в последнюю очередь для N8x0.
Программа писалась в расчёте на мою 12-летнюю дочь, поэтому интерфейс не особо отягощён меганастройками а-ла avidemux :-)
Естественно, программа имеет полный русский перевод, просто скриншот с сайта berlios.de, поэтому расчитан на более широкую аудиторию.
Также в комплекте имеется командно-строчный скрипт, которым можно делать то же самое с командной строки.
Программа расчитана на Unix/Linux, и интегрируется с Гномом (возможно и с KDE, если он соблюдает desktop file specification).
Особо хочу отметить алгоритм расчёта результирующего видео: для этого берётся размер исходного видео (с учётом его aspect ratio), обрезаются чёрные края, затем оно втискивается в размер целевого устройства. Если при этом на экране целевого устройства остаются чёрные поля, видео немного сжимается/растягивается, чтобы чёрного места было поменьше. Естественно, нельзя просто тупо взять и смасштабировать до размера экрана конечного устройства, но 'слегонца' это можно и нужно делать - на глаз это не сильно заметно/терпимо, зато при этом добавляется детальности изображения.
GUI программа умеет использовать многопроцессорность для параллельного конвертирования файлов. Также имеется возможность выбрать между тремя уровнями сжатия (и, соответственно, качества). При необходимости можно подавить черезстрочноть (deinterlacing) и немного шум.
Программу берут с её сайта:
https://developer.berlios.de/project/sh … up_id=9512 
Там есть .deb файлы для Дебиана/Убунты, а также rpm для Fedora/Redhat. Для других дистрибутивов скачайте .tar.bz2 и выполните команду 'make install'.
Неактивен
Using target media player preset `Nokia N8x0 (High Resolution)'
Finding video length, crop and size ... 7377 (9999,9999 0x0)
Traceback (most recent call last):
File "/usr/bin/tavi", line 104, in <module>
s = app.AnalyseAVI (fn.decode (FNENC), options)
File "/usr/lib/python2.5/site-packages/tinyavi/autoconvert.py", line 171, in AnalyseAVI
srca = vp.aspect * ((float (vp.cw) * vp.vh) / (vp.ch * vp.vw))
ZeroDivisionError: float division
Проверил на одном mpeg:
ID_VIDEO_ID=0
ID_AUDIO_ID=0
ID_DEMUXER=mpegps
ID_VIDEO_FORMAT=0x10000001
ID_VIDEO_BITRATE=800000
ID_VIDEO_WIDTH=320
ID_VIDEO_HEIGHT=240
ID_VIDEO_FPS=30.000
ID_VIDEO_ASPECT=0.0000
ID_AUDIO_FORMAT=80
ID_AUDIO_BITRATE=0
ID_AUDIO_RATE=0
ID_AUDIO_NCH=0
ID_LENGTH=15.44
ID_VIDEO_CODEC=mpeg12
ID_AUDIO_BITRATE=64000
ID_AUDIO_RATE=32000
ID_AUDIO_NCH=2
ID_AUDIO_CODEC=mad
ID_VIDEO_ASPECT=1.3333
и одном avi:
ID_VIDEO_ID=0
ID_AUDIO_ID=1
ID_DEMUXER=avi
ID_VIDEO_FORMAT=XVID
ID_VIDEO_BITRATE=696904
ID_VIDEO_WIDTH=512
ID_VIDEO_HEIGHT=368
ID_VIDEO_FPS=29.970
ID_VIDEO_ASPECT=0.0000
ID_AUDIO_FORMAT=85
ID_AUDIO_BITRATE=120536
ID_AUDIO_RATE=0
ID_AUDIO_NCH=0
ID_LENGTH=73.77
ID_VIDEO_CODEC=ffodivx
ID_AUDIO_BITRATE=112000
ID_AUDIO_RATE=48000
ID_AUDIO_NCH=2
ID_AUDIO_CODEC=mad
ID_VIDEO_ASPECT=1.3913
Ubuntu 8.04, MPlayer 1.0rc2-4.2.3 и MEncoder 2:1.0~rc2-0ubuntu13+medibuntu1 работоспособны, и плотно используются для той же цели. tablet-encoder работает.
Неактивен
Странно, у меня Ubuntu 8.04, mplayer 1.0~rc2-0ubuntu13 и mencoder той же версии и всё работает.
а) Какая у тебя локаль? Почему-то не вижу русского языка
б) Приведи полный выхлоп от tavi, до ексепшна. У меня, например в убунте 8.04:
Анализируем файл 720x480 6mbps Girl.mpg
Используем профиль целевого устройства `Nokia N8x0 (Medium Resolution)'
Определяем длину, кадрирование и размер ... 4645 (3,0 713x473)
Добавляем видео фильтр: crop=713:473:3:0
Добавляем видео фильтр: scale=464:304
Анализ завершён
в) Приведи выхлоп строк [CROP] от команды:
mplayer -identify -benchmark -vo null -nosound -vf cropdetect -speed 100 -endpos 10:0 file.mpg
У меня, например, на тестовом mpeg файле выхлоп такой:
[CROP] Crop area: X: 4..714 Y: 0..472 (-vf crop=704:464:8:4).
У тебя mplayer какой-то странной версии, вполне возможно что эти джигиты в очередной раз поменяли формат строки. Увы, если хочется обратной связи, приходится парсить выхлоп mplayer'а, а иначе получится ещё один tablet-encoder ![]()
Неактивен
А .mkv эта штука осилит сходу ? Дофига в последнее время стало попадаться матроски...
http://www.larsen-b.com/Article/261.html 
Неактивен
zap : картинка тянется с https и "тащит с собой" предупреждение о сертификате другого хоста - может проще в файл архив форума положить ?
update/ закинул в файл архив и изменил ссылку на картинку
Отредактированно dik (15-07-2008 13:46:18)
Неактивен
dik говорит:
А .mkv эта штука осилит сходу ? Дофига в последнее время стало попадаться матроски...
http://www.larsen-b.com/Article/261.html
matroska = матрёшка
Неактивен
zap говорит:
Странно, у меня Ubuntu 8.04, mplayer 1.0~rc2-0ubuntu13 и mencoder той же версии и всё работает.
а) Какая у тебя локаль? Почему-то не вижу русского языка
б) Приведи полный выхлоп от tavi, до ексепшна. У меня, например в убунте 8.04:
Анализируем файл 720x480 6mbps Girl.mpg
Используем профиль целевого устройства `Nokia N8x0 (Medium Resolution)'
Определяем длину, кадрирование и размер ... 4645 (3,0 713x473)
Добавляем видео фильтр: crop=713:473:3:0
Добавляем видео фильтр: scale=464:304
Анализ завершён
в) Приведи выхлоп строк [CROP] от команды:
mplayer -identify -benchmark -vo null -nosound -vf cropdetect -speed 100 -endpos 10:0 file.mpg
У меня, например, на тестовом mpeg файле выхлоп такой:
[CROP] Crop area: X: 4..714 Y: 0..472 (-vf crop=704:464:8:4).
У тебя mplayer какой-то странной версии, вполне возможно что эти джигиты в очередной раз поменяли формат строки. Увы, если хочется обратной связи, приходится парсить выхлоп mplayer'а, а иначе получится ещё один tablet-encoder
Версии, которые я привёл, пишут проги при запуске. Пакеты - версии 1.0~rc2-0ubuntu13+medibuntu1 (отличаются поддержкой 3GP, вроде).
а) Локаль en_US.UTF-8
б) я и привёл полный, кроме первой строки "Analysing file /PATH/NAME.avi"
в) в этой операции
1) -identify не нужен
2) без -speed на моём слабом проце быстрее (41 сек --> 29 сек)
3) нужна -nouse-filedir-conf. В этом и была проблема. У меня в директории с каждым .avi лежит .avi.conf, в которой vf-clr=yes (которая и приводит к проблеме) и vf=... (которая не мешает). Конфигурации генерирую скриптом бенчмарка, определяя макс. постобработку без пропуска кадров, для каждого нового фильма.
4) я в своё время провёл много экспериментов с cropdetect, и определил, что достаточно замерить по "-frames 500" 4 раза (-ss 0/150/300/600).
Для mencoder нужны -vf-clr -af-clr для контролируемой обработки, на случай наличия фильтров в mencoder.conf.
Ещё вопрос: твой алгоритм не производит небольшого отрезания краёв полезного изображения?
И предложения:
Кроме кнопки + нужна и -. Я набрал большую очередь, и случайно добавил ненужный файл. Всё делать заново?
Я бы опции построил так:
Галочка "Нормализация звука", по умолчанию - да (-af volnorm=1:0.5 на N800 с динамиками вроде оптимально)
"Denoise: X" (0..4), "Temporal: Y" (0..4), по умолчанию 0, 0 (-vf-add hqdn3d=X:max(X-1,0):Y, не нужен, если X=0 и Y=0)
Галочка "Sharp". по умолч. - да (-vf-add unsharp=c4x4:0.3:l5x5:0.5)
"Качество сжатия: X (0...)" (каждая ступень добавляет новую ресурсоёмкую опцию в -lavcopts; для сохранения выходного размера ~50%, vqscale при быстрой обработке сделать около 4, снижая до 2)
-vf-add pp=ha:128:7/va/dr нужна всегда, т.к. никогда не портит даже идеальное видео, но малой ценой сильно улучшает артефакты сжатия.
Фильтры применяются в таком порядке: crop,scale,pp,hqdn3d,unsharp.
Звук я кодирую -oac mp3lame -lameopts vbr=2:aq=0:q=4 (в каких-нибудь железных плеерах vbr возможно не прокатит, но ни в одном плеере в линуксе и винде проблем не встречал).
Видео кодирую -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:v4mv:trell:qns=3:vqscale=2:aspect=$W/$H:vrc_maxrate=1200: \
vrc_buf_size=450:lumi_mask=0.2:dark_mask=0.2:tcplx_mask=0.2:naq:dia=2:cbp:qprd:umv:pbias=-32'
vrc_maxrate я проверил с N800 недостаточно, возможно надо уменьшать вплоть до 700-900, проверяя на динамических сценах.
Кодирую в один проход с постоянным максимальным качеством (vqscale=2). 2 прохода нужны только для контролируемого выходного размера, что не актуально, если не CD. Они не дают лучшего качества.
Разрешение для N800 фуллскрин - 400x240 действительно прекрасно выглядит при хорошем материале, и увеличивать не нужно и даже вредно. Разница заметна только на ББ.
Со всеми перечисленными опциями -lavcopts у меня на работе на AMD 2200 перекодирование фильма происходит около суток, но даёт офигенное качество, при сжатии примерно вдвое. А торопиться обычно причин нет.
Это мой опыт. Что-то ты сам знаешь, что-то и реализовано в твоей программе, с чем-то ты не согласишься.
Я пока применяю соответственно исправленный мною tablet-encode. Мне не нравится его урезание полезных краёв, а исправить пока руки не дошли.
Отредактированно Dali (15-07-2008 16:45:39)
Неактивен
Я думаю ваша дочь будет в восторге от Nokia Video Converter
Проще интерфейс придумать сложно)
Неактивен
wazd, а Вы пробовали запускать Nokia Video Converter под линуксом?
Плюс к тому, я точно могу сказать, моя программа её устраивает на все сто ;-) ибо учитывались её замечания.
Dali говорит:
в) в этой операции
1) -identify не нужен
конкретно tavi - нужен ![]()
Dali говорит:
2) без -speed на моём слабом проце быстрее (41 сек --> 29 сек)
Гм, у меня 7.9 секунд без и 7.2 с опцией. Хорошо, уберу - раз на слабых процах даёт существенный прирост.
Dali говорит:
3) нужна -nouse-filedir-conf. В этом и была проблема.
Вот оно в чём дело. Кстати, .conf файл в текущем каталоге используется только при использовании опции -use-filedir-conf, так что наверное конфиг у тебя был в каталоге ~/.mplayer/. Ну да ладно, спасибо что докопался :-)
Dali говорит:
4) я в своё время провёл много экспериментов с cropdetect, и определил, что достаточно замерить по "-frames 500" 4 раза (-ss 0/150/300/600).
А ежели дождь во время усушки титры слишком длинные? Я так посчитал, что титры вряд ли больше 10 минут тянутся. А 500 кадров это всего лишь 20 секунд, тут можно легко нарваться на белые титры на чёрном фоне и порезать фильм так, что мать родная аффтар с режиссёром не узнают.
Dali говорит:
Для mencoder нужны -vf-clr -af-clr для контролируемой обработки, на случай наличия фильтров в mencoder.conf.
Спасибо за идею, в следующей версии сделаю.
Dali говорит:
Ещё вопрос: твой алгоритм не производит небольшого отрезания краёв полезного изображения?
Этот скрипт - нет. Тут идея такая, что ежели хочется отрезать 'получёрные строки' по краям, может лучше слегка снизить чувствительность фильтра cropdetect? Вообще я отрезаю чутка в другом скрипте, которым уже года три рипаю DVD/HDTV фильмы на автомате. Но тут решил пока не делать.
Dali говорит:
Кроме кнопки + нужна и -. Я набрал большую очередь, и случайно добавил ненужный файл. Всё делать заново?
Я об этом думал. Вообще говоря, вовсе незачем нажимать "Convert" на всех фильмах, которые ты набрал в список ;-) Не хочется переусложнять интерфейс просто. Тулза в общем-то расчитана на использование из Наутилуса, выделил файлы -> правая кнопка -> "Открыть в программе TinyAVI".
Но если очень-очень надо, могу и добавить.
Dali говорит:
Я бы опции построил так:
Галочка "Нормализация звука", по умолчанию - да (-af volnorm=1:0.5 на N800 с динамиками вроде оптимально)
Хорошая мысль. Может, даже сделать эту опцию всегда активной? В конце концов, кодируем же не для долговременного хранения, а для одно- или двух-разового просмотра на планшете, на замысел режиссёра можно немного и поплевать :-)
Dali говорит:
"Denoise: X" (0..4), "Temporal: Y" (0..4), по умолчанию 0, 0 (-vf-add hqdn3d=X:max(X-1,0):Y, не нужен, если X=0 и Y=0)
Галочка "Sharp". по умолч. - да (-vf-add unsharp=c4x4:0.3:l5x5:0.5)
Переусложняешь сильно. Я не хочу делать ещё один клон Guardian Knot'а. Могу сделать несколько уровней денойза, скажем низкое среднее и сильное. Шарпенинг тоже можно сделать, это всё понятия доступные "average Joe". Всякие темпорал параметры - фтопку, только в рамках разного уровня денойза.
Dali говорит:
"Качество сжатия: X (0...)" (каждая ступень добавляет новую ресурсоёмкую опцию в -lavcopts; для сохранения выходного размера ~50%, vqscale при быстрой обработке сделать около 4, снижая до 2)
Трёх вариантов выбора качество/размер хватит любому (почти (С) биллгейц). Кстати, я lavc использую только для aac, а для MPEG4 использую кодек XviD. "vqscale" не нужен, я всегда делаю двухпроходное кодирование.
Dali говорит:
-vf-add pp=ha:128:7/va/dr нужна всегда, т.к. никогда не портит даже идеальное видео, но малой ценой сильно улучшает артефакты сжатия.
hd:128 слишком сильно. Лучше просто ha/va/dr, я думаю mplayer тоже не дураки делали и значения по умолчанию тоже не из пальца брали.
Dali говорит:
Фильтры применяются в таком порядке: crop,scale,pp,hqdn3d,unsharp.
pp надо использовать самым первым. Если сдвинуть его хотя бы после crop, макроблоки уже сьехали чёрт-знает-как (не будут на границах кратных 8), и фильтр будет работать соответственно чёрт-те-как. После scale я вообще молчу что станет с макроблоками.
Dali говорит:
Звук я кодирую -oac mp3lame -lameopts vbr=2:aq=0:q=4 (в каких-нибудь железных плеерах vbr возможно не прокатит, но ни в одном плеере в линуксе и винде проблем не встречал).
В данном случае меня волнует преимущественно возможности mplayer на планшете :-)
vbr=2 это значение по умолчанию, поэтому я его не указываю. aq у меня стоит 1, не вижу смысла уходить в экстремальные значения, например zip -9 пакует нифига не лучше чем zip -8. q у меня выбирается так: при 'Низком качестве/Малом размере' q=5, при 'Среднем качестве/размере' q=3, при 'Высоком качестве/Большом размере' q=5.
Кстати, все эти опции можно увидеть (и при желании исправить) в /usr/share/pyshared/tinyavi/presets.py.
Dali говорит:
vrc_maxrate я проверил с N800 недостаточно, возможно надо уменьшать вплоть до 700-900, проверяя на динамических сценах.
У меня N810 нормально играет вплоть до 1200-1300 килобит.
Dali говорит:
Кодирую в один проход с постоянным максимальным качеством (vqscale=2). 2 прохода нужны только для контролируемого выходного размера, что не актуально, если не CD. Они не дают лучшего качества.
Пардоньте, но это полная ерунда. Не говоря уж о том, что с твоими опциями кодирование _дико_ тормозное (примерно в 10 раз тормознее xvid в один проход).
Вот небольшой тестик даже провёл. На файле matrixbench_lowerdivx4_vbrmp3.avi, если что - его можно найти в гугле.
Исходные данные: размер файла 22258K, длительность 3м8с, видео 640x272, 800 килобит, масштабируем до 480x204, звук -nosound.
Итак, с твоими опциями:
mencoder -vf scale=480:204 -nosound -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:v4mv:trell:qns=3:vqscale=2:vrc_maxrate=1200:vrc_buf_size=450:lumi_mask=0.2:dark_mask=0.2:tcplx_mask=0.2:naq:dia=2:cbp:qprd:umv:pbias=-32 matrixbench_lowerdivx4_vbrmp3.avi -o test-lavc.avi
Результат кодирования:
Размер файла: 23228K (это при фуллсайз оригинале в 22258K :-\)
Средняя скорость кодирования: 5.95fps
Выходной видеопоток: 1009.896 kbit/s
Время кодирования: 13m7.959s
PSNR: Y:44.49, Cb:49.86, Cr:50.49, All:45.70
Теперь xvid в один проход:
mencoder -vf scale=480:204 -nosound -ovc xvid -xvidencopts psnr:bitrate=408:trellis:vhq=2 matrixbench_lowerdivx4_vbrmp3.avi -o test-xvid.avi
Значение битрейта 408 килобит я взял по формулам, которые использует TinyAVI.
Результат кодирования:
Размер файла: 9405K (почти в три раза меньше)
Средняя скорость кодирования: 83.59fps
Выходной видеопоток: 405.315 kbit/s
Время кодирования: 56.110s (в 14 раз быстрее)
Значения PSNR:
xvid: Min PSNR Y:35.23, Cb:45.80, Cr:47.94, All:36.84 in frame 2079
xvid: Average PSNR Y:40.50, Cb:48.14, Cr:49.05, All:41.94 for 4686 frames
xvid: Max PSNR Y:50.96, Cb:51.36, Cr:53.01, All:51.31 in frame 3303
Средний PSNR по каналу Y равный 40.50 это что-то примерно между 'хорошо' и 'отлично'.
И на десерт, xvid в два прохода:
mencoder -vf scale=480:204 -nosound -ovc xvid -xvidencopts psnr:turbo:bitrate=800:trellis:vhq=2:pass=1 matrixbench_lowerdivx4_vbrmp3.avi -o /dev/null mencoder -vf scale=480:204 -nosound -ovc xvid -xvidencopts psnr:bitrate=800:trellis:vhq=2:pass=2 matrixbench_lowerdivx4_vbrmp3.avi -o test-xvid2.avi
Результат кодирования:
Размер файла: 9033K
Средняя скорость кодирования: 226.29fps (первый проход), 85.92fps (второй проход)
Выходной видеопоток: 389.661 kbit/s
Время кодирования: 1m15.328s
Значения PSNR:
xvid: Min PSNR Y:36.60, Cb:48.99, Cr:50.13, All:38.25 in frame 3470
xvid: Average PSNR Y:40.51, Cb:47.92, Cr:48.85, All:41.93 for 4686 frames
xvid: Max PSNR Y:50.68, Cb:51.58, Cr:51.82, All:50.99 in frame 3302
---
Ну, с lavc в данном случае всё ясно, имхо это тот случай когда избыток знаний помогли перехитрить самого себя :-)
Теперь давай проанализируем двухпроходное кодирование против однопроходного.
- С одной стороны, мы получили 75.3 секунды против 56.1 (34% прирост)
- С другой стороны, мы получили конечный файл в 9033 против 9405 килобайт (4% выигрыш)
- Минимальный PSNR по каналу яркости вырос с 35.23 до 36.60 (учитывая что глазу заметно изменение в 0.5 децибелл).
Стоит ли овчинка выделки? Тут уже каждый решает для себя :-) Мне кажется, что в любом случае стоит. Всё-таки первый проход проходит существенно быстрее первого (тем более учитывая, что я первый проход всегда делаю с -nosound, а на втором свою лепту внесёт ещё и кодек звука).
Dali говорит:
Со всеми перечисленными опциями -lavcopts у меня на работе на AMD 2200 перекодирование фильма происходит около суток, но даёт офигенное качество, при сжатии примерно вдвое. А торопиться обычно причин нет.
Ну ни фига себе, около суток
У меня перекодирование одного фильма обычно занимает 20-30 минут, к тому же имея два процессора можно запускать два процесса параллельно. Итого за пару дней можно сконвертировать всю свою коллекцию :-) Мне кажется, глобальное потепление тебе этого не простит :-)
Dali говорит:
Я пока применяю соответственно исправленный мною tablet-encode. Мне не нравится его урезание полезных краёв, а исправить пока руки не дошли.
Учитывая всё вышесказанное, всё-таки подумай о переходе на TinyAVI :-) Естественно, после того как я поправлю глюки и учту все твои замечания.
А вообще - спасибо большое за длинный и обстоятельный анализ. Я вот, например, не видел в какую сторону дальше вести улучшения, а ты мне открыл целое новое поле для деятельности :-) Замыленный глаз - страшная сила.
Отредактированно zap (16-07-2008 11:31:29)
Неактивен
Касательно mkv - попробовал на одном фильме, в принципе работает но cropdetect слишком быстро (неверно) отрабатывает из-за каких-то особенностей Матрёшки. Будет исправлено в следующей версии.
Также попробовал flv, на том файле который у себя нашёл - работает.
Неактивен
Такс, вроде учёл почти все замечания (кроме кодека), вот тут лежит исправленная версия:
http://cs.ozerki.net/zap/pub/tinyavi/ 
changelog:
* Use by default -vf-clr and -af-clr to avoid any influence from user
config files.
* Use -frames 500 with -ss 0, 150, 300, 600 as suggested, instead of
-endpos 10:0. This is both faster and more reliable.
* Perform the deinterlacing as the very first filter. Some filters
may change the image and kerndeint, if inserted after them, can not
detect interlaced video.
* Denoise filter by default without parameters.
* Added the "sharpen" option, which enables -vf unsharp=l:3x3:1
* Added the volume normalization option, on by default
* Interface improved to include new options
* Added a "Remove" button to remove videos from queue
* Use the -nouse-filedir-conf switch for mplayer to avoid .conf files
to influence mplayer test run.
Конвертирование .mkv и .flv проверил (на том, что у меня есть) - всё пашинг.
Жду дальнейших коментариев :-)
Отредактированно zap (16-07-2008 15:41:43)
Неактивен
zap говорит:
Dali говорит:
3) нужна -nouse-filedir-conf. В этом и была проблема.
Вот оно в чём дело. Кстати, .conf файл в текущем каталоге используется только при использовании опции -use-filedir-conf, так что наверное конфиг у тебя был в каталоге ~/.mplayer/. Ну да ладно, спасибо что докопался :-)
Сомоса-бой, была опция, я ж говорю что использую конфиг для каждого фильма.
Dali говорит:
4) я в своё время провёл много экспериментов с cropdetect, и определил, что достаточно замерить по "-frames 500" 4 раза (-ss 0/150/300/600).
А ежели дождь во время усушки титры слишком длинные? Я так посчитал, что титры вряд ли больше 10 минут тянутся. А 500 кадров это всего лишь 20 секунд, тут можно легко нарваться на белые титры на чёрном фоне и порезать фильм так, что мать родная аффтар с режиссёром не узнают.
Титры на 10 минут никогда не встречал, а короткие замеры в 4 местах (0, 2.5, 5 и 10 мин) не дали ошибиться на десятках фильмов. В конце-концов, при наличии большой коллекции можно проверить в автоматическом режиме, и в случае чего скорректировать расстановку, кол-во и длительность замеров. Я старался уместить замеры в первые минуты в расчёте также на короткие ролики. Лучше использовать %% от длительности.
Dali говорит:
Ещё вопрос: твой алгоритм не производит небольшого отрезания краёв полезного изображения?
Этот скрипт - нет. Тут идея такая, что ежели хочется отрезать 'получёрные строки' по краям, может лучше слегка снизить чувствительность фильтра cropdetect? Вообще я отрезаю чутка в другом скрипте, которым уже года три рипаю DVD/HDTV фильмы на автомате. Но тут решил пока не делать.
Если и делать, то не много. tablet-encoder - слишком сильно.
Dali говорит:
Кроме кнопки + нужна и -. Я набрал большую очередь, и случайно добавил ненужный файл. Всё делать заново?
Я об этом думал. Вообще говоря, вовсе незачем нажимать "Convert" на всех фильмах, которые ты набрал в список ;-) Не хочется переусложнять интерфейс просто. Тулза в общем-то расчитана на использование из Наутилуса, выделил файлы -> правая кнопка -> "Открыть в программе TinyAVI".
Но если очень-очень надо, могу и добавить.
Я о кнопке Convert All, которую надо нажимать и идти домой. Не то чтобы очень-очень надо, но кнопка "-" вряд ли усложнит.
Dali говорит:
Я бы опции построил так:
Галочка "Нормализация звука", по умолчанию - да (-af volnorm=1:0.5 на N800 с динамиками вроде оптимально)Хорошая мысль. Может, даже сделать эту опцию всегда активной? В конце концов, кодируем же не для долговременного хранения, а для одно- или двух-разового просмотра на планшете, на замысел режиссёра можно немного и поплевать :-)
Замысел тут не причём, а причём вот что - большинство встреченных мною фильмов кодируются с очень низким уровнем громкости. Уж не знаю почему, может из-за применения простейших программ? Приходится вытягивать программным фильтром в mplayer (и что бы я без mplayer делал...) Я не предложил зашить опцию, потому что не все могут согласиться с этим мнением.
Dali говорит:
"Denoise: X" (0..4), "Temporal: Y" (0..4), по умолчанию 0, 0 (-vf-add hqdn3d=X:max(X-1,0):Y, не нужен, если X=0 и Y=0)
Галочка "Sharp". по умолч. - да (-vf-add unsharp=c4x4:0.3:l5x5:0.5)Переусложняешь сильно. Я не хочу делать ещё один клон Guardian Knot'а. Могу сделать несколько уровней денойза, скажем низкое среднее и сильное. Шарпенинг тоже можно сделать, это всё понятия доступные "average Joe". Всякие темпорал параметры - фтопку, только в рамках разного уровня денойза.
Denoise (2-мерный фильтр), и Temporal никак не связаны между собой. Я для разных фильмов применяю очень разные комбинации. Отличить после небольшой тренировки легко. Если кадр шумный, или много артефактов пережатия, усиливаю Denoise. Но тут можно замылить. Бывает, кадры уже отфильтрованы, или замылены, но шум скачет от кадра к кадру, тогда усиливаю Temporal. Он очень хорошо работает, не замылит, но могут возникнуть следы при быстрых движениях. Вот у меня в последних фильмах были комбинации: 0/0, 0/4, 2/1, 2/2, 2/4, 4/1, 4/2, 4/4.
Dali говорит:
"Качество сжатия: X (0...)" (каждая ступень добавляет новую ресурсоёмкую опцию в -lavcopts; для сохранения выходного размера ~50%, vqscale при быстрой обработке сделать около 4, снижая до 2)
Трёх вариантов выбора качество/размер хватит любому (почти (С) биллгейц). Кстати, я lavc использую только для aac, а для MPEG4 использую кодек XviD. "vqscale" не нужен, я всегда делаю двухпроходное кодирование.
1) Вообще отношение качество/размер - вторично. Главное - качество/скорость. Трёх вариантов хватит. Если разброс не слишком большой. У меня - от меньше часа до больше суток. Хорошие фильмы я заряжаю на сутки на работе. где комп и так круглосуточно работает. Не проблема во времени, если результат того стоит.
2) ИМХО xvid работает быстрее но менее качественно (по крайней мере, таких глубин не достигает). Но тут уже спорные моменты...
3) Надо хорошо понимать, что делает 2-проходное кодирование. Совсем кратко - оно УХУДШАЕТ качество (увеличивает vqscale) там, где посчитает возможным (на статичных сценах), чтобы уложиться в заданную длину файла (1 или 2 CD).
vqscale=2 (это максимум) при хорошей (и небыстрой) обработке и так сжимает фильмы примерно вдвое (1400Мб до 600-800Мб). Хотя лично для меня сжатие маловажно. Я ставлю задачу получить фильм, который в фуллскрин не требует масштабирования и постобработки, а значит не будет потери кадров. И чтобы изображение было вычищено максимально, но без потери качества. А при просмотре сырых левых фильмов при просмотре на PC всегда включена постобработка.
Dali говорит:
-vf-add pp=ha:128:7/va/dr нужна всегда, т.к. никогда не портит даже идеальное видео, но малой ценой сильно улучшает артефакты сжатия.
hd:128 слишком сильно. Лучше просто ha/va/dr, я думаю mplayer тоже не дураки делали и значения по умолчанию тоже не из пальца брали.
Дело в следующем. Это рекомендация разработчиков. Для качественной обработки. А по умолчанию стоит для realtime-обработки.
Dali говорит:
Фильтры применяются в таком порядке: crop,scale,pp,hqdn3d,unsharp.
pp надо использовать самым первым. Если сдвинуть его хотя бы после crop, макроблоки уже сьехали чёрт-знает-как (не будут на границах кратных 8), и фильтр будет работать соответственно чёрт-те-как. После scale я вообще молчу что станет с макроблоками.
Надо будет снова прокачать этот момент. Но у меня чётко отложился этот порядок после многого прочитанного. Мне кажется, pp работает более интеллектуально.
Dali говорит:
Кодирую в один проход с постоянным максимальным качеством (vqscale=2). 2 прохода нужны только для контролируемого выходного размера, что не актуально, если не CD. Они не дают лучшего качества.
Пардоньте, но это полная ерунда. Не говоря уж о том, что с твоими опциями кодирование _дико_ тормозное (примерно в 10 раз тормознее xvid в один проход).
Вот небольшой тестик даже провёл. На файле matrixbench_lowerdivx4_vbrmp3.avi, если что - его можно найти в гугле.
[ПОРЕЗАНО]
1) Мой набор опций - это экстремальная обработка, и применять ее надо на ценных фильмах, либо когда комп и так простаивает. Никто конечно не простит отсутствие выбора качества/скорости. Кстати, если опции после vrc_buf_size - перфенкционизм, то v4mv я бы оставил и в минимальном варианте.
2) Сравнивать обработку с минимальным сжатием (q=2), т.е. с максимальным к-вом и обработку с таким маленьким битрейтом (405кбит/с) некорректно. Такому битрейту есть своё соответствие q. Естественно, битрейт будет большой, потому что в твоём тесте не было фильтров, а они сильно снижают битрейт, очищая от шумовой информации. Кроме того, тестовые ролики и трейлеры - это очень динамичный материал и требует большого битрейта. А в среднем по больнице температура 36.6, включая реанимацию и морг.
Факт в том, что при максимальном качестве (q=2) фильм ужимается с 1400Мб до 600-800Мб.
3) Увлечение тестовыми цифрами (PSNR) и тестовыми роликами со временем перерастает в понимание, что глаз видит по-другому. Я остановился на q=2 потому что даже при q=3 есть моменты, видные на спокойных и красивых сценах, где глаз и замечает все артефакты. В сценах погони, боёв и пр. (Matrix, Terminator) видно конечно только очень сильные артефакты.
4) По сути, каждые кадр квантуется с определённым q, и если применяется однопроходное, то q увеличивается (качество ухудшается) где надо, чтобы не превысить битрейт, а при двухпроходном - вычисляется среднее q для достижение нужного среднего битрейта, вокруг этого q (целочисленное) и скачет. Так что можно выбрать себе q (2...31) и держать его весь фильм. На статичных сценах будет малый битрейт, на динамичных - большой.
У меня перекодирование одного фильма обычно занимает 20-30 минут, к тому же имея два процессора можно запускать два процесса параллельно. Итого за пару дней можно сконвертировать всю свою коллекцию :-)
Это разовая задача. Потом фильмы приходят постепенно. Всё определяется скоростью просмотра. Если я смотрю 2 фильма в неделю, ...
Учитывая всё вышесказанное, всё-таки подумай о переходе на TinyAVI :-) Естественно, после того как я поправлю глюки и учту все твои замечания.
А вообще - спасибо большое за длинный и обстоятельный анализ. Я вот, например, не видел в какую сторону дальше вести улучшения, а ты мне открыл целое новое поле для деятельности :-) Замыленный глаз - страшная сила.
Вообще это была не критика и не замечания, а советы на основании теоретического и практического опыта. Чтобы получить себе хорошую программу.
Неактивен
Dali говорит:
Титры на 10 минут никогда не встречал, а короткие замеры в 4 местах (0, 2.5, 5 и 10 мин) не дали ошибиться на десятках фильмов. В конце-концов, при наличии большой коллекции можно проверить в автоматическом режиме, и в случае чего скорректировать расстановку, кол-во и длительность замеров. Я старался уместить замеры в первые минуты в расчёте также на короткие ролики.
Я потом уже допёр и перечитал, в первый раз не обратил внимание на -ss 0, 150, 300, 600. Собственно, это уже реализовано, и работает достаточно хорошо :-)
Dali говорит:
Если и делать, то не много. tablet-encoder - слишком сильно.
Понятно, я думал наоборот - хочешь, чтобы отрезались края :-) В принципе 1-2 пикселя картины не испортят, а там частенько бывает полу-мусор. Но пока делать не буду, пока не встречу клинических случаев.
Замысел тут не причём, а причём вот что - большинство встреченных мною фильмов кодируются с очень низким уровнем громкости. Уж не знаю почему, может из-за применения простейших программ? Приходится вытягивать программным фильтром в mplayer (и что бы я без mplayer делал...) Я не предложил зашить опцию, потому что не все могут согласиться с этим мнением.
Это потому, что так кодируется звук в 6-канальный AAC на DVD, не знаю с чем это связано - возможно, договорились расширить динамический диапазон для всяких внезапных БАХ! (у нас же теперь вся киноиндустрия работает на эффекты). А потом когда всякие чайники перекодируют DVD в AVI не поднимая громкости, вот такая ерунда и получается.
Dali говорит:
Denoise (2-мерный фильтр), и Temporal никак не связаны между собой. Я для разных фильмов применяю очень разные комбинации. Отличить после небольшой тренировки легко. Если кадр шумный, или много артефактов пережатия, усиливаю Denoise. Но тут можно замылить. Бывает, кадры уже отфильтрованы, или замылены, но шум скачет от кадра к кадру, тогда усиливаю Temporal. Он очень хорошо работает, не замылит, но могут возникнуть следы при быстрых движениях. Вот у меня в последних фильмах были комбинации: 0/0, 0/4, 2/1, 2/2, 2/4, 4/1, 4/2, 4/4.
И всё-таки, не хочется вводить в интерфейс какие-то непонятные цифири. При кодировании в маленький размер не вижу особого смысла сильно париться с подбором параметров, посмотрел так, посмотрел сяк, выбрал наилучшее и привет.
Dali говорит:
1) Вообще отношение качество/размер - вторично. Главное - качество/скорость.
Естественно, что чем ниже качество кодирования, тем выше скорость кодирования. Но для меня, например, скорость кодирования вторична, так как не припомню случая, чтобы фильм кодировался дольше 30 минут :-)
Dali говорит:
2) ИМХО xvid работает быстрее но менее качественно (по крайней мере, таких глубин не достигает). Но тут уже спорные моменты...
При желании можно и поспорить, но лучше просто посмотреть сравнение кодеков:
http://www.doom9.org/index.html?/codecs-quali-105-1.htm 
Из выводов:
doom9 говорит:
XviD will make it very hard once again for the competition in the main round.
LMP4 (так у них обзывается lavc) can compete closely in still scenes, but the extended action scene showed a clear difference in favor of XviD. Still, I feel a definite improvement over the last time I tested the codec, so it will advance to the main round.
Да, сравнение 2005го года, но вроде с тех пор ffmpeg особо не развивался, да и xvid на месте не стоял.
3) Надо хорошо понимать, что делает 2-проходное кодирование. Совсем кратко - оно УХУДШАЕТ качество (увеличивает vqscale) там, где посчитает возможным (на статичных сценах), чтобы уложиться в заданную длину файла (1 или 2 CD).
Это неверно. При двухпроходном кодировании кодек имеет возможность ретроспективно посмотреть, где он отдал чересчур много битрейта в первом проходе (получив бессмысленно высокий PSNR на отдельных кадрах), и где ему просто не хватило битрейта (и пришлось закодировать кадр в хреновом качестве, только бы удержаться в заданных рамках).
Посмотри даже на мой маленький тест - при двухпроходном кодировании минимальный PSNR увеличился, максимальный PSNR понизился, средний остался примерно на том же уровне. То есть, заданный битрейт более оптимально размазывается по всему фильму. Да, он ухудшил кодирование слишком хороших кадров (где PSNR достигал 50), и за счёт этого битрейта подтянул плохие кадры, где PSNR падал до 35. Это же хорошо?
hd:128 слишком сильно. Лучше просто ha/va/dr, я думаю mplayer тоже не дураки делали и значения по умолчанию тоже не из пальца брали.
Дело в следующем. Это рекомендация разработчиков. Для качественной обработки. А по умолчанию стоит для realtime-обработки.
А, ясно, оно тормознее. Хорошо, поставлю 128/7, посмотрю как сильно это затормаживает процесс. В конце концов это тоже немаловажный параметр, как ты писал выше :-)
Dali говорит:
1) Мой набор опций - это экстремальная обработка, и применять ее надо на ценных фильмах, либо когда комп и так простаивает.
Мне кажется, для ценных фильмов куда важнее использовать двухпроходную обработку, чем экстремально тормозные параметры. Плюс к тому, какой резон хранить ценные фильмы с разрешением 512x304, когда есть оригинал почти-720x576.
Dali говорит:
2) Сравнивать обработку с минимальным сжатием (q=2), т.е. с максимальным к-вом и обработку с таким маленьким битрейтом (405кбит/с) некорректно. Такому битрейту есть своё соответствие q.
Я просто сравнил опции, которые ты предлагаешь для кодирования с теми опциями, которые использует TinyAVI.
На doom9, кстати, где я давал ссылку выше, есть сравнение lavc и xvid в идентичных условиях. lavc кодирует примерно в 4 раза медленнее при всех прочих равных.
Dali говорит:
Факт в том, что при максимальном качестве (q=2) фильм ужимается с 1400Мб до 600-800Мб.
Для меня это абсолютно неприемлемо. В 600Мб можно ужать целый фильм с неплохим качеством (без динамичных сцен), а тут 600Мб для урезанной карманной версии. У меня фильм в среднем ужимается в 300Mb, и он при этом весьма хорошо выглядит :-)
Dali говорит:
3) Увлечение тестовыми цифрами (PSNR) и тестовыми роликами со временем перерастает в понимание, что глаз видит по-другому.
Ох, давай не будет затрагивать прозрачность звука и вуалевые дымки :-) Я как инженер склонен доверять показаниями приборов и своим собственным глазам. Пощёлкай в ссылке выше по тестовым кадрам, сравни как кодирует XviD и как кодирует lavc, и всё станет понятно и без вуалевых дымок. К тому же, ты используешь опцию mbd=2 которая как раз и принимает решение на основании PSNR.
Dali говорит:
Я остановился на q=2 потому что даже при q=3 есть моменты, видные на спокойных и красивых сценах, где глаз и замечает все артефакты. В сценах погони, боёв и пр. (Matrix, Terminator) видно конечно только очень сильные артефакты.
Использование постоянного квантователя вообще глупость. При этом отключается половина логики кодека, которая как раз и расчитана на то, чтобы оптимально выбирать квантователь *по необходимости*. А со статичным квантователем без разницы - есть необходимость, нет необходимости - квантователь 2 и никаких гвоздей.
Dali говорит:
4) По сути, каждые кадр квантуется с определённым q, и если применяется однопроходное, то q увеличивается (качество ухудшается) где надо, чтобы не превысить битрейт, а при двухпроходном - вычисляется среднее q для достижение нужного среднего битрейта, вокруг этого q (целочисленное) и скачет.
У тебя оно не скачет - с опцией vqscale=2 особо не поскачешь.
Вообще у меня сложилось впечатление, что ты свою коллекцию фильмов долговременно хранишь в формате для наладонника ;-) Не делай этой глупости, храни оригиналы, а фильмы конвертируй быстренько (за 20-30 минут :-)) непосредственно перед просмотром. Потери качества оригинала ты уже никогда не возместишь (ты на телеке не смотришь свои фильмы? не говоря уж о мониторе), а в объёме ты выигрываешь не очень сильно.
Отредактированно zap (17-07-2008 00:51:02)
Неактивен
Кстати в голову пришла такая мысль - зачастую при 'подгонке' разрешения фильма под заданный экран остаются чёрные полосы по бокам либо сверху/снизу. Предположим, максимальный размер видео с которым справляется Нокия - скажем, 512x384. Но если видео масштабируется до 512x280 (из-за aspect ratio), почему бы не масштабировать его до 592x324? При этом количество пикселей одинаковое:
512*384=196608
592*324=191808
При этом aspect ratio сохраняется:
592/324=1.827
512/280=1.829
То есть в каждом профиле помимо целевого разрешения задавать ещё максимально допустимое разрешение вообще (т.е. физический размер экрана).
Как думаешь?
Отредактированно zap (17-07-2008 01:02:30)
Неактивен
Честно говоря - меня, как начинающего пользователя, настройки размеров экрана (в дополнительных свойствах уже после выбора таблетки как целевого устройста) несколько смутили. tablet-encode с пресетами - проще / ( я чисто про управление/настройки )
Например, не хочется совершенно вникать в тему - но знать что то типа "меньше размер, хуже качество" "лучше качество, больше - размер"
Дополнительные настройки без понимания их сути вносят в действия сомнения : "всё ли я правильно выставил ?"
Может это только у меня так...
Неактивен
:-)
Согласен, возможность выбора одновременно и профиля и разрешения как-то плохо стыкуются между собой. Просто в первой версии у меня ещё не было профилей, вместо этого просто задавалось разрешение, вот по наследству и осталось.
Может вообще выкинуть нафиг настройки разрешения? Или вак вариант - по умолчанию спрятать выбор разрешения, но иметь возможность включать их через редактирование ~/.config/tinyavi.conf и добавление какой-нибудь опции типа "advanced_settings = True" :-)
А остальные настройки - понятны? Я вот сомневаюсь насчёт деинтерлейса, нужен ли он в базовом варианте.
Отредактированно zap (17-07-2008 03:19:57)
Неактивен
Что сбоку - не помню.
Как пользователю : хотелось бы выбирать устройство и "качество". Всё.
> "advanced_settings = True"
имхо было бы идеально...
> деинтерлейса
если б ещё знал что это такое ![]()
вчера закинул два фильма на конверт с наивысшим качеством / утром, по прошествии часов 6-7ми у второго было 90% / ну у меня проц старый - 1.7
Неактивен
zap говорит:
В принципе 1-2 пикселя картины не испортят, а там частенько бывает полу-мусор. Но пока делать не буду, пока не встречу клинических случаев.
Кстати, crop надо бы выравнивать до 16, в большую сторону. Если например сверху поле 12 пикс, отрезать 16. Потому что эти оставшиеся 4 были закодированы с плохим качеством, из-за неоптимальной работы кодеков и фильтров в таких местах. Есть такая информация. Но её нужно проверять.
Но при этом надо не отрезать слишком много некачественной, но полезной площади. Наверно надо задать максимум в процентах от измерения (H или W).
И всё-таки, не хочется вводить в интерфейс какие-то непонятные цифири. При кодировании в маленький размер не вижу особого смысла сильно париться с подбором параметров, посмотрел так, посмотрел сяк, выбрал наилучшее и привет.
Отсутствие таких возможностей позиционирует программу для непродвинутых в видеообработке юзеров. Лучше сделать simple/advanced режимы (и добавить к движку "Quality" движки "Denoise" и "Temporal").
Dali говорит:
2) ИМХО xvid работает быстрее но менее качественно (по крайней мере, таких глубин не достигает). Но тут уже спорные моменты...
При желании можно и поспорить, но лучше просто посмотреть сравнение кодеков:
http://www.doom9.org/index.html?/codecs-quali-105-1.htm
Не хочу влезать в holy wars. Я видел много тестов и сравнений, совершенно противоположных. Это говорит о том, что они примерно равноценны, но каждый лучше в определённых случаях. Дело вкуса.
Скорость кодирования xvid неоспорима. И даже допускаю, что с одинаковыми стандартными настройками xvid даёт лучший PSNR. Но у него нет таких мощных настроек для углублённой обработки.
Вообще, стоит пока закрыть тему кодека, потому что они влияют меньше чем битрейт/квантизация.
Dali говорит:
Факт в том, что при максимальном качестве (q=2) фильм ужимается с 1400Мб до 600-800Мб.
Для меня это абсолютно неприемлемо. В 600Мб можно ужать целый фильм с неплохим качеством (без динамичных сцен), а тут 600Мб для урезанной карманной версии. У меня фильм в среднем ужимается в 300Mb, и он при этом весьма хорошо выглядит :-)
Самое интересное, что это мои слова, лет 5 назад. Сейчас, когда место на DVD болванках или на HDD стоит копейки, я предпочитаю скачивать фильмы размером 1400 Мб, чем 700 Мб, ибо разница в качестве меня очень радует.
Не надо забывать, что до 600-800 Мб сжимаю эти 1400 Мб (отличного качества). А фильм в 700 Мб (нормального к-ва) сжимается в те же 300-400 Мб.
Кроме того, речь идёт о высшем качестве сжатия (q=2).
какой резон хранить ценные фильмы с разрешением 512x304, когда есть оригинал почти-720x576.
Вообще у меня сложилось впечатление, что ты свою коллекцию фильмов долговременно хранишь в формате для наладонника ;-) Не делай этой глупости, храни оригиналы, а фильмы конвертируй быстренько (за 20-30 минут :-)) непосредственно перед просмотром. Потери качества оригинала ты уже никогда не возместишь (ты на телеке не смотришь свои фильмы? не говоря уж о мониторе), а в объёме ты выигрываешь не очень сильно.
У меня на диске (новые) и на болванках (коллекционные) вместе с оригиналом хранятся обработанные. Когда я захочу посмотреть дома, беру оригинал, если еду куда, беру несколько обработанных. Готовить их в нужный момент? Долго. Это на твоём компе твоя программа обрабатывает за 30 минут, а на среднем - 4-6 часов.
А теперь перейду к замечаниям по tavi.
1) -af-clr, про которую я сказал по аналогии с -vf-clr, на деле отсутствует как класс, за ненадобностью. Ты включил не проверив, и программа не работает.
2) В командной строке имя профиля - очень неудобно.
tavi -o ta.avi -t "Nokia N8x0 (High Resolution)" -S -n -q 2 t.avi
Надо бы алиас что-ли.
tavi -o ta.avi -t N8x0-HR -S -n -q 2 t.avi
3) Закодированый фильм содержит B-frames. Поскольку у тебя они не включены опциями, значит это где-то в файлах конфигурации xvid (которые остались издавна, когда я пользовался xvid). Пользовательские настройки вне программы надо блокировать.
Как ты понимаешь, B-фреймы противопоказаны родному плееру. Да и большинству плееров, кроме mplayer.
4) Ты для таблетки выбрал разрешение, некратное размеру экрана, 640*384. В то время, как все пришли к выводу, что масштабировать таблетка не успевает, и лучший вариант - 400*240. Я тоже убедился, что на таблетке (не на PC) разница в качестве для 400*240 незаметна при хорошем материале.
А бенчмарк ролика 88 сек (статичного причём) показал 22.5 сек для 400*240 моего кодирования и 62 сек для 640*384 твоего. И несмотря на то, что вроде 62 < 88, но это без звука, и в реальности видео постоянно подтормаживает.
Попробовал перекодировать кусочек в 88 сек с плавными панорамами и сплошными поверхностями (горизонт, небо), где я ловлю артефакты.
Проц у меня слабый, VIA 1 GHz, на мультимедии раз в 10 медленнее AMD 2200 (1.8 GHz).
Твоя программа с профилем Nokia N8x0 (High Resolution) и макс качеством отработала за 17 мин, на выходе 548 кбит/с, 8.4 Мб, SNR=47.66 дБ. Битрейт может быть чуть-чуть завышен из-за B-фреймов (хотя не факт).
С моими экстремальными настройками плюс hqdn3d=2:1:4, 400*240, q=2 - 25 мин, 328 кбит/с, 5.5 Мб, SNR=48.25 дБ.
Неактивен
Хотелось бы, чтобы движки, связанные с качеством, выставлялись для каждого фильма в очереди отдельно.
Но более важно, чтобы можно было опции затачивать под свой вкус. Для этого идеально было бы в файле конфигурации ~/.tavi.conf:
passes=2
bitsperpixel=0.15
vc = xvid -xvidencopts psnr:turbo:trellis:vhq=2:bi
vf = pp=ha/va/dr,crop=$C,unsharp=l:3x3:1,scale=$S
ac = mp3lame -lameopts q=2:mode=1:aq=1
af = volnorm=2
#passes=1
#quant=2
#vc = lavc -lavcopts vcodec=mpeg4:mbd=2:v4mv:trell:qns=3:vqscale=2:aspect=$W/$H:vrc_maxrate=1200:vrc_buf_size=450:\
lumi_mask=0.2:dark_mask=0.2:tcplx_mask=0.2:naq:dia=2:cbp:qprd:umv:pbias=-32
#vf = pp=ha:128:7/va/dr,crop=$C,scale=$S,unsharp=c4x4:0.3:l5x5:0.5
#ac = mp3lame -lameopts vbr=2:aq=0:q=4
#af = volnorm=1:0.5
Неактивен
zap говорит:
Кстати в голову пришла такая мысль - зачастую при 'подгонке' разрешения фильма под заданный экран остаются чёрные полосы по бокам либо сверху/снизу. Предположим, максимальный размер видео с которым справляется Нокия - скажем, 512x384. Но если видео масштабируется до 512x280 (из-за aspect ratio), почему бы не масштабировать его до 592x324?
[.....]
То есть в каждом профиле помимо целевого разрешения задавать ещё максимально допустимое разрешение вообще (т.е. физический размер экрана).
Как думаешь?
Убеждён, что надо вмещать в 400*240 (обычно по горизонтали).
Кстати, для широкоэкранного фильма боковые края можно чуток и подрезать.
Отредактированно Dali (17-07-2008 12:31:39)
Неактивен
zap говорит:
Может вообще выкинуть нафиг настройки разрешения?
Да. Они должны появляться для профиля "Custom".
zap говорит:
Я вот сомневаюсь насчёт деинтерлейса, нужен ли он в базовом варианте.
Нужно интерлейсный материал детектировать автоматически. Кажется transcode умеет определять. Или при помощи одной из программ, применяемых для DVD-рипинга.
Неактивен
Фух, немного подразобрался с текучкой.
Dali, пойми меня правильно, целевая аудитория моей программы - неискушённые в кодировании видео пользователи пользователи как dik. Если нужны тысячи опций настройки - полно готовых программ, начиная от avidemux2 и заканчивая Gordian Knot. Моя же цель - _простая_ программа, которая позволяет быстро, качественно и без осообого геммороя конвернтуть видео для просмотра на мелких устройствах.
Поэтому не обессудь, но особо сложных, а также противоречащих друг другу настроек (типа для простых пользователей - Denoise, а для продвинутых - отдельно все четыре параметра фильтра hqdn3d) я делать не буду. В командно-строчной версии есть опции -V и -A, ими можно задать любые дополнительные видео и аудиофильтры, вот они для продвинутых юзеров :-)
Я даже вывел их в интерфейс при включённой опции Advanced, специально для гиков :-) Можешь туда вписывать всё что твоей душе угодно, а то я запарюсь каждую опцию mencoder'а выводить в отдельный контрол.
Dali говорит:
1) -af-clr, про которую я сказал по аналогии с -vf-clr, на деле отсутствует как класс, за ненадобностью. Ты включил не проверив, и программа не работает.
Да, это я уже в последнюю минуту проглядел посты на форуме и по-быстрому добавил. Увы, бывает.
Dali говорит:
2) В командной строке имя профиля - очень неудобно.
Неудобно спать на люстре :-) В командной строке можно использовать частичное название профиля (например просто "Nokia" или "High" итп). Профили проверяются по очереди, первый в котором обнаруживается заданная подстрока используется.
Но сделал ещё и алиасы, так как я предвижу что по мере добавления новых профилей найти уникальное слово будет всё трудней и трудней :-)
Dali говорит:
3) Закодированый фильм содержит B-frames. Поскольку у тебя они не включены опциями, значит это где-то в файлах конфигурации xvid (которые остались издавна, когда я пользовался xvid). Пользовательские настройки вне программы надо блокировать.
Как ты понимаешь, B-фреймы противопоказаны родному плееру. Да и большинству плееров, кроме mplayer.
Это уже вопрос к профилям. B-фреймы используются для Нокии, но, к примеру, не используются для фоторамки Aero Vision, которая их физически не понимает.
Я переделал тут немного, вместо N8x0 (High res) и N8x0 (low res) сделал профили Nokia 8x0 (GStreamer engine) и Nokia 8x0 (MPlayer engine) - так будет проще для понимания. MPlayer на нокии легко тянет разрешение 512x304, поэтому в профиле для мплейера это разрешение задаётся в качестве целевого. А в профиле для нокиевского медиа плейера стоит разрешение 400x240 и отключены B-фреймы.
Касательно разрешений япоэкспериментировал, всё-таки 640x384 плохо тянет даже мплейер. Поэтому и сделал 512x304.
Зато реализовал свою мысль насчёт максимального физического разрешения, которую описывал выше. Теперь перекодировщик будет сохранять максимальное количество деталей, которое возможно на данном устойстве.
Dali говорит:
Твоя программа с профилем Nokia N8x0 (High Resolution) и макс качеством отработала за 17 мин, на выходе 548 кбит/с, 8.4 Мб, SNR=47.66 дБ. Битрейт может быть чуть-чуть завышен из-за B-фреймов (хотя не факт).
С моими экстремальными настройками плюс hqdn3d=2:1:4, 400*240, q=2 - 25 мин, 328 кбит/с, 5.5 Мб, SNR=48.25 дБ.
Это средний SNR такой высокий? Странно. Я обычно ориентируюсь где-то на 40.
Dali говорит:
Хотелось бы, чтобы движки, связанные с качеством, выставлялись для каждого фильма в очереди отдельно
Никто не мешает тебе выставить опции для фильма потом нажать 'Преобразовать', потом перейти ко второму и так далее. Мне это кажется вполне достаточным.
Dali говорит:
Но более важно, чтобы можно было опции затачивать под свой вкус. Для этого идеально было бы в файле конфигурации ~/.tavi.conf:
Не зня же я писал на Питоне. Открой файл usr/share/pyshared/tinyavi/presets.py и редактируй сколько твоей душе угодно, там даже Питон особо знать не надо. Если наредактир