Сайт | Пользователи | Кто в онлайне? | Поиск
AKPOCC Форум » ОСНОВНЫЕ ФОРУМЫ » ТЕХНИЧЕСКАЯ ЧАСТЬ » Тупое приспособление для кодирования АМВ
 Логин
 Пароль
 Регистрация :: Забыли пароль?
Страницы: (3) « [1] 2 3 » ответить новая тема новое голосование
 Тема: Тупое приспособление для кодирования АМВ ((нужны тестирование и советы))« Предыдущая тема | Следующая тема » 
zzerg 
 Сообщений: 682
 Начинающий автор
 
Смотрит:
Dexter
Слушает:
Укоры совести
Профиль Личные сообщения ICQ   ЦИТАТА
Задача: сделать примитивный туториал современного кодирования АМВ для ленивых и/или нубов.
С минимальными дополнительными усилиями со всех сторон.
Мне не нравится идея "туториала по MeGUI", потому что он сложный, глюкавый, требует дотНет2, и нормального интернета.
Свою программу писать влом.

Вариант решения: набор заготовленных скриптов + ависинт + обычные енкодеры.

Скачать тут: http://www.zzerg.com/amv/amv264/
Файл amv264-v04-pack.zip (2,8 МБ) содержит все скрипты, плюс утилиты x264.exe, faac.exe, mkvmerge.exe и хрень разную (нужна мквмержу).
Разобраться там несложно.

Нужен ещё установленный avisynth.
Возможно, что нужно что-то ещё, но я об этом не знаю. Какая-нибудь DLL в системных папках.
Если у вас не работает поэтому -- жалуйтесь.

Предварительная версия туториала (без картинок) прилагается.

С вниманием отнесусь к конструктивным советам по поводу реализации умного ресайза.
С особым интересом выслушаю мнения по поводу параметров кодирования х264, а то я в них не разбирался.

=============================================================

Набор обеспечивает продвинутое 3-х проходное кодирование видео в х264, аудио в ААС, и MKV как выходной контейнер.
Для кодирования требуются минимальные умственные и физические усилия. Самое сложное, пожалуй, это предварительно установить AviSynth.
(Внимание: возможно также, что для некоторых программ необходим dotNET framework, но я не уверен.)
Ну и терпение понадобится, потому что качественное кодирование будет идти долго.
Настройки жёстко зафиксированы, но продвинутый пользователь может их легко изменить, покопавшись в скриптах. Непродвинутым пользователям изменять настройки не нужно.
Цель данного набора: прилично закодировать АМВ-клип, уложившись в рамки 1,5 мегабайт на минуту для превью и 8 мегабайт на минуту для полной, при этом совершив минимум телодвижений.

=============================================================

Набор для кодирования юного АМВ-шника "amv264".
Инструкция пользователя.

1 Предварительная подготовка (выполняется один раз)
1.1 Обязательно должен быть установлен AviSynth. Это абсолютно необходимо. (подробная инструкция тут будет, я надеюсь)
1.2 Распаковать архив набора, получив папку "amv264"с под-папками "in", "out" и "stuff" (в последней будет много файлов).

2 Подготовка клипа
2.1 Клип желательно экспортировать (рендерить) из видеоредактора в максимально хорошем качестве, используя НЕсжатие видео и аудио (uncompressed), или используя беспотерьный кодек для видео (huffyuv или другой). Формат файла желательно avi. Внимание: несжатое видео занимает много места!
Если твой клип в другом формате, то есть не-avi, или avi, но с закодированным видео/аудио, то он должен проигрываться на твоём компьютере обычным медиа-проигрывателем (Media Player Classic, Light Alloy, Windows Media Player или т.п.)
Если нет -- значит, не установлены необходимые кодеки. Проигрывание в плейерах mplayer и VideoLAN ничего не значит, у них свои встроенные декодеры.
2.2 Исходный клип нужно поместить в подпапку "in" папки "amv264". Внимание: в папке "in" не должно быть больше никаких файлов! Только исходный клип.
2.3 Не используйте русские буквы в названии файла. К сожалению, такие файлы скорее всего не будут обрабатываться.
2.4 На диске должно быть свободное место для временных файлов и окончательно закодированного клипа (100 мегабайт должно хватить для АМВ разумной длительности.)

3 Кодирование клипа (простой путь)
3.1 Запустить файл "!auto_all.bat" из папки "amv264". (Например, сделав на нём двойной клик.)
В процессе кодирования будут открываться чёрные окна командной строки. Не нужно их трогать. Нужно просто подождать. (Разумеется, если не происходит каких-нибудь ошибок.) Ждать иногда придётся долго, потому что настройки ориентированы на высокое качество кодирования.
3.2 По окончании кодирования в подпапке "out" папки "amv264" будут созданы файлы с названиями как у исходного, но с окончаниями ".prev.mkv" (превью-версия) и ".full.mkv" (полная версия) -- закодированные версии исходного клипа.
3.3 Рекомендуется просмотреть полученные файлы, и, если всё в порядке, переименовать их и переместить в надёжное место.

4 Для продвинутых пользователей
4.1 Если вы хотите сделать только превью, или только полную версию, запускайте файлы "!make_preview.bat" или "!make_full.bat", соответственно. Они находятся в подпапке "stuff".
4.2 Если вам кажется, что процесс кодирования слишком длинный (он вполне может занять несколько часов!), и вы готовы пожертвовать качеством, то в подпапке "stuff" переименуйте файл "main.bat.fast" в "main.bat" (при этом старый main.bat" будет переписан).
Чтобы восстановить настройки для медленного и более качественного кодирования, в подпапке "stuff" переименуйте файл "main.bat.slow" в "main.bat" (при этом текущий main.bat" будет переписан).


Исправил(а): zzerg, 21 августа 2007, 18:53

--------------
Главное не победа. Главное -- призы!
Отправлено: 19 августа 2007, 07:04 | Зарегистрирован: 17 октября 2006
Aggressor 
ecchi
 Сообщений: 4428
 Автор АКРОССа
 
Профиль Личные сообщения Сайт   ЦИТАТА
По-моему, неудачно подобраны битрейты. 160 для превью- явно мало.
Во-вторых, аудиокодек гуанский. Надо использовать НероААЦ, этому до него как до неба на тележке.
Умный ресайзер не поможет, уменьшение в 2 раза- оптимальный вариант. Правда, придется надеяться на то, что разрешение полной будет нормальной кратности...
А так в принципе неплохая задумка!
Цитата (zzerg @ 19 августа 2007, 06:04)
Свою программу писать влом

А я вот написал.
Спасибо за идею выковыривания звука командной строкой ВДМа!
*пошел дополнять функциональность проги
Отправлено: 19 августа 2007, 10:51 | Зарегистрирован: 14 декабря 2006
Генерал Гривус 
duffman
 Сообщений: 711
 Автор
 
Слушает:
hardcore
Профиль Личные сообщения Сайт ICQ  ЦИТАТА
Ну в принципе неплохо :biggrin: Я бы рекомендовал прогу StaxRip - гораздо лучше и незаглюченнее чем MeGui...
Отправлено: 19 августа 2007, 12:31 | Зарегистрирован: 02 октября 2006
Endymion 
Ginryuu
 Сообщений: 2155
 Посетитель
 
Профиль Личные сообщения  ЦИТАТА
zzerg
1) в чем проявляется заглюченность meGUI? Я пока не замечал.
2) faac.exe это энкодер для AAC? Тогда почему не NeroAACEnc.exe? Он куда лучше. Темболее с помощью еще одного интересного командлайнового exe-шника можно сделать так, чтобы на входе этот энкодер получал любое аудио, которое играется в плеере. Тобишь через DirectShowSource ависинта.
3) в каком смысле meGUI требует нормальный инет? Да это многоцелевая прога, но никто ж не заставляет закачивать все, что она просит. Достаточно иметь только нужное.
4) Битрейты да, не ниже 200. Если хочешь авторесайз, расчитывай на то, что у кого-то будет в полной версии картинка 640x360, а у кого-то например 768x432
5) StaxRip не позволяет настраивать некоторые функции енкодера(ров). Фтопку его.

Вообще как-то у тебя сложновато все.
Цитата (zzerg @ 19 августа 2007, 06:04)
С вниманием отнесусь к конструктивным советам по поводу реализации умного ресайза.

В смысле "умного"? Вот такая строчка(эту команду ависинта можно пропустить. она уже морально устарела :РРР):
Исходный код
LanczosResize (Width(Last)/2, Height(Last)/2)

Будет уменьшать исходный клип в 2 раза ровно. Как сделать, чтоб оно еще кратность 16 соблюдало я пока не придумал.
Цитата (zzerg @ 19 августа 2007, 06:04)
С особым интересом выслушаю мнения по поводу параметров кодирования х264, а то я в них не разбирался.

ну я вот примерно такими пользюсь:
Исходный код
--pass 3 --bitrate 200 --stats ".stats" --ref 16 --mixed-refs --no-fast-pskip --bframes 3 --b-pyramid --b-rdo --bime --weightb --direct auto --filter -2,-1 --subme 7 --trellis 2 --analyse all  --8x8dct --vbv-maxrate 25000 --me esa --threads auto --thread-input --progress --no-dct-decimate --no-psnr --no-ssim --output "" ""

Для НЕ клипов, конечно более слабыми, ибо очень долго кодится. Все расписывать мне пока что-то очень лень. Могу сказать только кодить желательно в 3 прохода (--pass 1,3,3) <--{исправлено}, хотябы превью. Не пихать много b-фреймов(--bframes 3), потому что это очень сильно пожатые кадры, качество которых меньше чем у  обычных или кейфреймов. Зачем они тогда нужны? Чтобы лучше распределить использование битрейта по всему видео. Те параметры, в который есть слово "no"(например --no-psnr), они отключают разные фичи, что направлены на ускорение кодинга (часто за счет потери качества, но не всегда). Клипы короткие, спешить некуда, так что лучше отключить, чтоб получить качество наверняка.


Исправил(а): Endymion, 21 августа 2007, 20:16
Отправлено: 19 августа 2007, 15:01 | Зарегистрирован: 24 декабря 2006
Endymion 
Ginryuu
 Сообщений: 2155
 Посетитель
 
Профиль Личные сообщения  ЦИТАТА
zzerg
Вот тебе скрипт, который будет даунсайзить видео РОВНО в 2 раза, потом проверять кратны ли величины 16 и если НЕ кратны, то обрезать нужное число пикселей со всех сторон для достижения кратности (Это НЕ много. Обычно до 4 пикселей, если исходник не слишком корявый :biggrin: ) . Я попробовал, вроде работает.
Версия 0.3:
Исходный код
DirectShowSource ("видео.avi", audio=false)
a = Width / 2
b = Height / 2
LanczosResize (a, b)
c = (a % 16) / 2
d = (b % 16) / 2
Crop (c, d, -c, -d)


UPD: При вычислениях могут получиться нечетные результаты (зависит от исходника). Тогда скрипт точно работает неверно (хотя его можно улучшить, но пока не сообразил как). Впрочем, тупое уменьшение размера в двое в этом случае совсем не подходит.  :biggrin:

UPD2:
Этот скрипт проглотит нечетные значения, если (я не уверен) функции Width и Height, примененные повторно принимают значения уже НОВОЙ длинны и ширины, которая получилась после кропа. Или же их можно попробовать заменить соответственно на (a - x) и (b - y), в этом я уверен больше.
Версия 0.5:
Цитата
DirectShowSource ("видео.avi", audio=false)
#ConvertToRGB24()
a = Width / 2
b = Height / 2
x = a % 2
y = b % 2
Spline36Resize (a, b)
Crop (x, y, 0, 0)
c = ((a - x) % 16) / 2 #c = (Width % 16) / 2
d = ((b - y) % 16) / 2 #d = (Height % 16) / 2
Crop (c, d, -c, -d)


- Если исходник не в пространстве RGB (не исходник клипа из редактора), то в некоторых случаях возможно без строчки ConvertToRGB24() после DirectShowSource, скрипт работать не будет.
- С исходником, у которого нечетные длина или ширина, скрипт не тестил.
- Сплайновый ресайз, примененный в этой версии скрипта вроде дает лучше каритнку чем ланцзос.


Исправил(а): Endymion, 20 августа 2007, 02:18
Отправлено: 19 августа 2007, 15:52 | Зарегистрирован: 24 декабря 2006
Endymion 
Ginryuu
 Сообщений: 2155
 Посетитель
 
Профиль Личные сообщения  ЦИТАТА
zzerg
NeroAAC можно скачать тут.
Самое важное там NeroAACEnc.exe. Остальное - полезные бантики. Где-то еще у меня была версия этого энкодера с поддержкой sse2, но не помню в какой "ящик" ее положил.

P.S. Гомен, чтот я тут расфлудился.
Отправлено: 20 августа 2007, 01:13 | Зарегистрирован: 24 декабря 2006
Arm_Turbo 
 Сообщений: 412
 Критик
 
Профиль Личные сообщения Сайт  ЦИТАТА
Preview лучше делать так:

a = DirectShowSource(...);
NewWidth = 320;
NewHeight = 2*round(160*getHeight(a)/getWidth(a));

Если нужна кратность 16, то:

a = DirectShowSource(...);
NewWidth = 320;
NewHeight = 16*round(20*getHeight(a)/getWidth(a));
Отправлено: 20 августа 2007, 16:46 | Зарегистрирован: 16 декабря 2005
Endymion 
Ginryuu
 Сообщений: 2155
 Посетитель
 
Профиль Личные сообщения  ЦИТАТА
Arm_Turbo
А можно подробней рассказать что оно делает с картинкой?
И получается ты привязываешь картинку к определенному разрешению. (В данном случае 320). Это не удобно, постоянно менять. Как я понял зЗергу надо прописать скрипт один раз и на всегда. Прога для нубов тоже :Р. И если исходник 16x9, должно получиться разрешение 320x180, а это маловато.
И кстати что за функции getHeight, getWidth? У меня они не распознаются. Я знаю есть просто Height и Width.
И чем оно у тебя все должно ресайзится? Не вижу ни Ланцзосов, ни Сплайнов..?


Исправил(а): Endymion, 20 августа 2007, 17:29
Отправлено: 20 августа 2007, 16:57 | Зарегистрирован: 24 декабря 2006
zzerg 
 Сообщений: 682
 Начинающий автор
 
Смотрит:
Dexter
Слушает:
Укоры совести
Профиль Личные сообщения ICQ   ЦИТАТА
Цитата (Endymion @ 19 августа 2007, 13:01)
1) в чем проявляется заглюченность meGUI? Я пока не замечал.
3) в каком смысле meGUI требует нормальный инет?

2) faac.exe это энкодер для AAC? Тогда почему не NeroAACEnc.exe? Он куда лучше. Темболее с помощью еще одного интересного командлайнового exe-шника можно сделать так, чтобы на входе этот энкодер получал любое аудио, которое играется в плеере. Тобишь через DirectShowSource ависинта.

4) Битрейты да, не ниже 200. Если хочешь авторесайз, расчитывай на то, что у кого-то будет в полной версии картинка 640x360, а у кого-то например 768x432

1-3) MeGUI проблемно устанавливать на компы без интернета, потому что оно норовит скачивать само. Когда я его ставил, у меня где-то с третьей попытки получилось, причём с сообщениями об ошибках при установке. Ему ещё дотНЕТ приходится ставить, это имхо минус.

2) ну если нероААЦ можно тупо выдрать екзешник и использовать, то я в принципе не против. Хотя идеологически я его недолюбливаю уже заранее. Расскажите мне про волшебную фичу "интересного командлайнового exe-шника".

4) По поводу авторесайза... если там нельзя что-нить хитрое намудрить в ависинтовых скриптах или прикрутить свой внешний алгоритм, то пусть остаётся так. Пофиг, что там плохая кратность. Пусть х264 варнинги свои пишет, кого это волнует? Цель стоит не достичь идеала, а минимизировать мозговые усилия при использовании.

УПД: а, вот я вижу уже идеи ресайза милые нашлись  :)

Остальное учитываю :)


Исправил(а): zzerg, 20 августа 2007, 17:05

--------------
Главное не победа. Главное -- призы!
Отправлено: 20 августа 2007, 17:03 | Зарегистрирован: 17 октября 2006
Aggressor 
ecchi
 Сообщений: 4428
 Автор АКРОССа
 
Профиль Личные сообщения Сайт   ЦИТАТА
Цитата (zzerg @ 20 августа 2007, 16:03)
ну если нероААЦ можно тупо выдрать екзешник и использовать, то я в принципе не против

Я так с самого начала использовал. Даже не знал, что это CLI-приложение надо было откуда-то "выдирать" :wow:


Исправил(а): Aggressor, 20 августа 2007, 17:11
Отправлено: 20 августа 2007, 17:11 | Зарегистрирован: 14 декабря 2006
Endymion 
Ginryuu
 Сообщений: 2155
 Посетитель
 
Профиль Личные сообщения  ЦИТАТА
Цитата (zzerg @ 20 августа 2007, 16:03)
Расскажите мне про волшебную фичу "интересного командлайнового exe-шника"

В архиве, по моей ссылке в предыдущем посте есть файлик BePipe.exe Он может открыть любое аудио через Ависинт и скормить НЕРОвскому (и не только ему! пропишешь в командлайне -help, там написано) энкодеру. Для этого в командлайн БиПайпа надо написать что-то вроде:

bepipe.exe --script "DirectShowSource(<input>)" | "C:\Program Files\AACEnc\neroAacEnc.exe"  -q 1 -he -if - -of <output>

Там где input - это имя входного файла, output -- выходного. Внимание. Там пишутся знаки <> вместо кавычек.
Путь C:\Program Files... -- путь к Энкодеру.
q 1 -he -if - -of    -- это настройки кодинга

Эта схема работает - проверено. Имхо это вполне может заменить извращенный процесс с выковыриванием звука в ВД(М), так как переварит любой играющийся в плеере контейнер/кодек.
Только это я по памяти написал. Но надеюсь ничего не забыл и нигде не ошибся.


Исправил(а): Endymion, 20 августа 2007, 17:58
Отправлено: 20 августа 2007, 17:19 | Зарегистрирован: 24 декабря 2006
zzerg 
 Сообщений: 682
 Начинающий автор
 
Смотрит:
Dexter
Слушает:
Укоры совести
Профиль Личные сообщения ICQ   ЦИТАТА
Цитата (Endymion @ 19 августа 2007, 13:01)
--me esa

Не, господа, мне жизни не хватит, если юзать esa, это overkill совершенный.
К тому же, насколько я начитался, преимущество его перед umh исчезающе мало.
И вообще esa это просто референс алгоритм, он не предназначен для реальных случаев, а используют его только маньяки.

И насчёт битрейтов я не очень согласен... Для превью 200 конечно, хорошо бы. Но тогда фиг оно получится 1,5 мегабайта на минуту (204,8 кбпс на всё, включая звук и оверхеды).
Ну и для полной 900кбпс не с потолка взято, а опять же из расчёта 8 мегабайт/минута (1092 кбпс на всё).
Это же не делюксы, чтобы идеальное качество сохранять.
То есть немножко битрейты поднять можно... но чуть-чуть.

Опять же, не вижу проблемы, что все настройки закопаны в скриптах. Умный юзер их легко найдёт. А ламерам нельзя давать вводить битрейт самим. А то ж они "шедеврами" закидают просто.

За ресайзы, нероАВЦ и бепайп -- спасибо. Сейчас прикручиваю.


Исправил(а): zzerg, 20 августа 2007, 20:27

--------------
Главное не победа. Главное -- призы!
Отправлено: 20 августа 2007, 20:25 | Зарегистрирован: 17 октября 2006
zzerg 
 Сообщений: 682
 Начинающий автор
 
Смотрит:
Dexter
Слушает:
Укоры совести
Профиль Личные сообщения ICQ   ЦИТАТА
Цитата (Arm_Turbo @ 20 августа 2007, 14:46)
Preview лучше делать так:
a = DirectShowSource(...);
NewWidth = 320;
NewHeight = 16*round(20*getHeight(a)/getWidth(a));

Да, мне нравится эта идея. Только функции называются просто height и width.
И ширину я предпочту 512, всё-таки это не дивикс. И кратность пожалуй рискну сделать 8 (в худшем случае будет растянуто или сжато на 7 пикселей, то есть процента 3 оценочно).


--------------
Главное не победа. Главное -- призы!
Отправлено: 20 августа 2007, 20:37 | Зарегистрирован: 17 октября 2006
Endymion 
Ginryuu
 Сообщений: 2155
 Посетитель
 
Профиль Личные сообщения  ЦИТАТА
Цитата (zzerg @ 20 августа 2007, 19:25)
а используют его только маньяки

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

Цитата (zzerg @ 20 августа 2007, 19:25)
За ресайзы, нероАВЦ и бепайп -- спасибо. Сейчас прикручиваю

Ну ты это. Если хорошо прикрутишь, может я с одним человеком насчет обнародования нашей ГУИ и говорить не буду, ага? Или может подождем пока он появится, чтоб заново велосипед не изобретать?
Отправлено: 20 августа 2007, 20:40 | Зарегистрирован: 24 декабря 2006
Arm_Turbo 
 Сообщений: 412
 Критик
 
Профиль Личные сообщения Сайт  ЦИТАТА
Цитата (zzerg @ 20 августа 2007, 20:37)
Цитата (Arm_Turbo @ 20 августа 2007, 14:46)
Preview лучше делать так:
a = DirectShowSource(...);
NewWidth = 320;
NewHeight = 16*round(20*getHeight(a)/getWidth(a));

Да, мне нравится эта идея. Только функции называются просто height и width.
И ширину я предпочту 512, всё-таки это не дивикс. И кратность пожалуй рискну сделать 8 (в худшем случае будет растянуто или сжато на 7 пикселей, то есть процента 3 оценочно).


Я для AMV News просто делаю 320 поэтому на него и ориентируюсь.

Разрешение 320 + 224 kbps дают отличный результат.

Не забудь потом новый архив положить. =)


Исправил(а): Arm_Turbo, 21 августа 2007, 12:54
Отправлено: 21 августа 2007, 12:52 | Зарегистрирован: 16 декабря 2005
 36 ответов после 19 августа 2007, 07:04 « Предыдущая тема | Следующая тема » 
  [ Подписаться на тему :: Отправить тему на email :: Версия для принтера ]ответить новая тема новое голосование  
  Страницы: (3) « [1] 2 3 »
AKPOCC Форум » ОСНОВНЫЕ ФОРУМЫ » ТЕХНИЧЕСКАЯ ЧАСТЬ » Тупое приспособление для кодирования АМВ


Рейтинг@Mail.ru   Rambler's Top100     Яндекс.Метрика