Страницы: (3) « [1] 2 3 » |
|
| |
Начинающий автор |
|
|
|
|
Задача: сделать примитивный туториал современного кодирования АМВ для ленивых и/или нубов. С минимальными дополнительными усилиями со всех сторон. Мне не нравится идея "туториала по 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 |
|
|
|
| |
Автор АКРОССа |
|
|
|
|
По-моему, неудачно подобраны битрейты. 160 для превью- явно мало. Во-вторых, аудиокодек гуанский. Надо использовать НероААЦ, этому до него как до неба на тележке. Умный ресайзер не поможет, уменьшение в 2 раза- оптимальный вариант. Правда, придется надеяться на то, что разрешение полной будет нормальной кратности... А так в принципе неплохая задумка!
Цитата (zzerg @ 19 августа 2007, 06:04) | Свою программу писать влом |
А я вот написал. Спасибо за идею выковыривания звука командной строкой ВДМа! *пошел дополнять функциональность проги
|
Отправлено: 19 августа 2007, 10:51 | Зарегистрирован: 14 декабря 2006 |
|
|
|
| |
Автор |
|
|
|
|
Ну в принципе неплохо Я бы рекомендовал прогу StaxRip - гораздо лучше и незаглюченнее чем MeGui...
|
Отправлено: 19 августа 2007, 12:31 | Зарегистрирован: 02 октября 2006 |
|
|
|
|
|
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 |
|
|
|
|
|
zzerg Вот тебе скрипт, который будет даунсайзить видео РОВНО в 2 раза, потом проверять кратны ли величины 16 и если НЕ кратны, то обрезать нужное число пикселей со всех сторон для достижения кратности (Это НЕ много. Обычно до 4 пикселей, если исходник не слишком корявый ) . Я попробовал, вроде работает. Версия 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: При вычислениях могут получиться нечетные результаты (зависит от исходника). Тогда скрипт точно работает неверно (хотя его можно улучшить, но пока не сообразил как). Впрочем, тупое уменьшение размера в двое в этом случае совсем не подходит.
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 |
|
|
|
|
|
zzerg NeroAAC можно скачать тут. Самое важное там NeroAACEnc.exe. Остальное - полезные бантики. Где-то еще у меня была версия этого энкодера с поддержкой sse2, но не помню в какой "ящик" ее положил.
P.S. Гомен, чтот я тут расфлудился.
|
Отправлено: 20 августа 2007, 01:13 | Зарегистрирован: 24 декабря 2006 |
|
|
|
| |
Критик |
|
|
|
|
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 |
|
|
|
|
|
Arm_Turbo А можно подробней рассказать что оно делает с картинкой? И получается ты привязываешь картинку к определенному разрешению. (В данном случае 320). Это не удобно, постоянно менять. Как я понял зЗергу надо прописать скрипт один раз и на всегда. Прога для нубов тоже :Р. И если исходник 16x9, должно получиться разрешение 320x180, а это маловато. И кстати что за функции getHeight, getWidth? У меня они не распознаются. Я знаю есть просто Height и Width. И чем оно у тебя все должно ресайзится? Не вижу ни Ланцзосов, ни Сплайнов..?
Исправил(а): Endymion, 20 августа 2007, 17:29
|
Отправлено: 20 августа 2007, 16:57 | Зарегистрирован: 24 декабря 2006 |
|
|
|
| |
Начинающий автор |
|
|
|
|
Цитата (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 |
|
|
|
| |
Автор АКРОССа |
|
|
|
|
Цитата (zzerg @ 20 августа 2007, 16:03) | ну если нероААЦ можно тупо выдрать екзешник и использовать, то я в принципе не против |
Я так с самого начала использовал. Даже не знал, что это CLI-приложение надо было откуда-то "выдирать"
Исправил(а): Aggressor, 20 августа 2007, 17:11
|
Отправлено: 20 августа 2007, 17:11 | Зарегистрирован: 14 декабря 2006 |
|
|
|
|
|
Цитата (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 |
|
|
|
| |
Начинающий автор |
|
|
|
|
Цитата (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 |
|
|
|
| |
Начинающий автор |
|
|
|
|
Цитата (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 |
|
|
|
|
|
Цитата (zzerg @ 20 августа 2007, 19:25) | а используют его только маньяки |
ну так я ж не навязываю тебе свой скрипт. я просто показал какой у меня. да, скрипт у меня дико тормозной. может я конечно немного маньяк...
Цитата (zzerg @ 20 августа 2007, 19:25) | За ресайзы, нероАВЦ и бепайп -- спасибо. Сейчас прикручиваю |
Ну ты это. Если хорошо прикрутишь, может я с одним человеком насчет обнародования нашей ГУИ и говорить не буду, ага? Или может подождем пока он появится, чтоб заново велосипед не изобретать?
|
Отправлено: 20 августа 2007, 20:40 | Зарегистрирован: 24 декабря 2006 |
|
|
|
| |
Критик |
|
|
|
|
Цитата (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 |
|
|
|
|