шарік, ти балбєс!

| комп'ютери, linux, підказки

продовжуючи тему конвертування відео для sony psp, мушу почати з класичного «шарік, ти балбєс!» — адресуючи це собі. бо теж заслужив: забув, що краще не знати й не братися, аніж знати трішки і бути самовпевненим (a little learning is a dangerous thing).

втім, наполегливість (варта, мабуть, кращого застосування) — чи впертість? — змусили таки знайти рішення… котре лежало, як частенько буває, готове в тенетах. виявляється, кодек h.264/mpeg-4 потребує додаткового налаштування, щоби видати сумісний з psp відеопотік, і, окрім того, avidemux навіть має спеціальний профіль для експорту на psp в три кліки мишкою.

результат — таки конвертував мультфільм. далі два рецепти: простий і правильний.

рецепт простий: автоматичний режим

найпростіший варіант. меню auto > sony playstation portable в avidemux версій 2.2 та старше. програма запропонує вибрати розмір кадра (рідне — 480×272 пікс.) та співвідношення сторін джерела та вихідного файла (краще лишити як є, 1:1).

власне, це все. можна експортувати відео, чекати закінчення конвертування, заливати на картку пам’яті — і дивитися на psp.

проте автоматичний режим нецікавий: за іншим разом, не маючи під рукою avidemux’а чи іншої софтинки з готовим профілем конвертування для psp, знову вперся би в ту ж проблему. більше того, скрипт-чарівник не може ідеально налаштувати весь процес конвертування: зокрема, лише зменшує кадр до обраної рамки (480×272), додаючи чорних смуг до повного кадру, ігнорує інші фільтри (кадрування? насиченість? чіткість?), сильно жертвує швидкістю на користь якості тощо.

коротше кажучи, з точки зору вимогливого користувача, — це лажа. тим часом магії ж ніякої немає, все лише питання точного налаштування кодека. врешті-решт, мені просто цікаво було з цим розібратися.

рецепт правильний: ручками, ручками

коротко — є ряд специфічних параметрів кодека h.264/mpeg-4, котрі мають бути встановлені так, а не інак, аби примхлива сонєвська залізяга розпізнала відеопотік в контейнері. вони перелічені в дописі датського техноблогера yogarine, на який я вже посилався (англ.) — далі детальніше зі скріншотами.

контейнер (формат файлу) — mp4. можна вибрати mp4 (psp) в avidemux’і, проте перевіривши два файли на psp 3000, я не помітив різниці — обидва програються нормально, розмір однаковий. можливо, це було важливо для попередніх версій psp? голосую за «універсальний» mp4.

аудіокодекmpeg-4 aac, називається просто aac в avidemux’і. як на мене, бітрейт вище 128 кбіт/с позбавлений сенсу у випадку конвертації для перегляду на psp.

відеокодекh.264/mpeg-4, називається mpeg-4 avc в avidemux’і, кодування реалізоване за допомогою відкритої бібліотеки x264. в стандартні налаштуваннях кодека avidemux треба внести такі специфічні для psp поправки (див.скріншоти далі):
  • встановити значення 2 для параметра max. ref. frames (в розділі motion estimation, вкладка motion & misc);
  • виключити параметр 8×8 transform (в розділі partition macroblocks, вкладка partitions & frames);
  • виключити параметр use as reference (в розділі b-frames, та сама вкладка);


решту параметрів лишаю як є — можна «курити мануали» й експерементувати, намагаючись досягти максимального виграшу в співвідношенні якості відео, розміру файлу та швидкості кодування, але це для завзятих.

режим кодування, бітрейт, квантизатор якості — ці параметри (вкупі з масштабуванням кадру) найсильніше впливають на швидкість кодування та якість відео. варто вибирати свідомо.

якщо важлива якість (якесь хороше кіно для багаторазового перегляду?) — варто залишити ті параметри, що пропонує профіль psp в avidemux: двопрохідне кодування з дотриманням середнього бітрейту в районі 1000 кбіт/с (two-pass, average bitrate, 1000 kbit/s), — і приготуватися чекати 4-8 годин на середньостатистичному ноутбуці.

мені потрібен файл для разового перегляду в дорозі — жертвую якістю, вибравши однопрохідне кодування з квантизатором близько 25 (single-pass, quality quantizer, 25). виший квантизарор (від 0 до 50) — гірша якість.

далі — налаштування фільтрів.

масштабування і кадрування.розмір кадру відео для psp, якщо вірити знавцям, обмежений кількома фіксованими варіантами, аж до 720×480. сам не перевіряв, чи справді все так погано. раджу масштабувати та кадрувати до рідних 480×272 пікселів: від більшої картинки на маленькому дисплеї не буде виграшу в якості, а менша хоч і дасть «легший файл», проте виглядатиме вже помітно гірше.

найкращий підхід: фільтром mplayer resize відмасштабувати кадр до 480×272 по меншій стороні (відносно 16:9), тобто якщо кадр ширший 16:9 — масштабуємо так, щоби по висоті вмістився в 272 пікселі, якщо «квадратний» — щоби вмістився по ширині в 480 пікселів (див. скріншот). наступним фільтром crop обрізаємо зайве по вертикалі або горизонталі двома однаковими смужками (див. скріншот).

контрастність, насиченість, чіткість. для вихідних файлів з хорошою якістю цей етап зайвий, але старі (й не дуже) мальовані мультфільми сильно виграють від «викручування» цих параметрів, особливо коли йдеться про перегляд на малих дисплеях. найбільше сподобалася комбінація з двох фільтрів: mplayer eq2 (збільшити контрастність, насиченість, гаму, див. скріншот) та msharpen (чіткість), — з параметрами треба трішки експериментувати, орієнтуючись на прев’юшку.

готово, — тепер можна запускати конвертування і чекати.

p.s. до речі, avidemux є і для windows, в т.ч. портативний. і ще: відеопідказка за мотивами допису комусь цікава?