Некоторые камеры "Канопус" пишут видео поток, закодированный кодеком CUVC. Это довольно редкий кодек, и в состав ffdshow он не входит. По крайней мере, на день написания этой статьи. Кодек CUVC – это разновидность цифрового кодека. Кодирует практически без потерь. Поэтому размер файла с камеры будет очень большим.
Как правило, все канопусианские камеры пишут в контейнер avi. Что очень хорошо.
Действия.
1. Скачиваем CUVC кодек. В Сети почти все нехорошие людишки (древнеегипетские ругательства допиши сам) вымотают тебе душу, прежде чем дадут (или не дадут) скачать кодек. Тебя засыплют всякими там непристойными предложениями типа отправить сообщение, заплатить, сыграть в азартную игру, дёрнуть в Америку, а то и того похуже.
А вот как делают жрецы:
http://yadi.sk/d/F0shNSdv74d83Заливке файлов на абсолютно беспроблемный Яндекс-диск данная статья посвящается…
2. В архиве ты найдёшь два файла: Canopus.HQ.CODEC.v1.4.0.1.exe и Canopus.HQ.CODEC.v6.0.7.exe. На сегодняшний день уже существует Canopus.DV.CODEC.v7.0.exe, но я его вкладывать не стал: при первой же попытке инсталляции на Win XP SP3 он срыгнул, что, типа, нет точки входа в процедуру. Нафига такая ненадёжная сборка? Также в Сети шастает псевдо кодек с именем инсталлятора Canopus.HQ.CODEC.v1.4.0.1, на конце которого добавлены ещё несколько цифр. Если ты запустишь это мерзкое творение Гекаты, то вначале он будет долго и нудно скачивать какой-то там дурацкий качун, а когда установит, то выругается, что по указанной в инсталляторе ссылке кодека нет.
Интуитивно мне представляется, что Canopus.HQ.CODEC.v1.4.0.1.exe лучше, хоть и старше. Да и по разговорчикам в Сети можно сделать вывод, что к нему никаких нареканий ни у кого нет. Вот его и инсталлируем. Обязательно перезагружаемся. Теперь в списке кодеков Виртуал Даба появился Canopus HQ. Можешь, если есть желание, поэкспериментировать кодированием в этот кодек. Если же мы инсталлируем Canopus.HQ.CODEC.v6.0.7.exe, то в списке кодеков Виртуал Даба ничего такого не появится. На декодировании это никак не отразится, но всё равно подозрительно.
3. Теперь ты можешь смотреть файлы, закодированные CUVC, на Плеере Классик Хоумсинема.
4. Но предположим, ты решил заняться пережатием. Для начала пишем такой скрипт:
AviSource("1.avi")
info()
Открываем его в Дабе и видим, что цветовое пространство в файле YUY2. Что, конечно же, лучше, чем YV12.
5. Скачиваем мой архив со статьями
http://yadi.sk/d/2HSs9MXO1zDHy Читаем оттуда две статьи: "Качественное кодирование кодеком XViD" и "Золотая нормализация".
Для конвертирования пишем такой скрипт:
LoadPlugin("SplineResize.dll")
AviSource("1.avi")
ConvertToRGB32(matrix="rec709", interlaced=false)
Spline144Resize(720, 576, 0, 0, -0, -0)
RGBAdjust(1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1)
Главная положительная особенность загрузки исходника через AviSource – это то, что мы можем как угодно скакать между кадрами, и никаких сбоев в нумерации кадров не произойдёт. Задаём начало и конец нужного нам куска. Кодируем в avi XViD, как написано в моей статье.
6. Работа со звуком. Канопус пишет звук в несжатом формате PCM. Что очень здорово. При кодировании в Виртуал Дабе для Audio задаём "Direct stream copy". Звук как есть без каких-либо искажений будет переходить из исходного avi в конечный avi. Сделали.
7. Я бы рекомендовал каждый по отдельности (!) avi открыть в GoldWave-е, подвергнуть звук "Золотой нормализации", сохранить звук в wav и этот нормализированный wav присоединить к avi вместо ненормализованного звука. Присоединение делаем, разумеется, Виртуал Дабом в режиме "Direct stream copy" и для видео, и для аудио.
8. Если у нас получилось много avi, то мы можем их соединить в один avi Виртуал Дабом в режиме "Direct stream copy".
9. И никаких жмотливых гундей о сжатии PCM во всякие там мерзкие mp3 и ac3! Качество – всё, остальное – ничто! Если хочется уменьшить объём, то извлеки Виртуал Дабом из полученного единого avi звук в формате wav. Сожми его во флэк: flac.exe -V -8 0.wav Перегони матрёшечником avi в матрёшку, используя этот звуковой флэк.
10. Отучаем пользовательскую публику от объективно порочного принципа перегона домашнего видео в стандарт DVD Video для ржавых аппаратных плееров. Приучаем народ к качественному просмотру исключительно на ПК! Обескомпьючеренные люмпены – ковыряться в помойном баке. А себя отучаем ото всяких там эдиусов, мувави и иже с ними. Читаем пост №2 "12 причин, …" из статьи "Конвертирование любых файлов (включая .m2ts) в XViD при помощи Virtual Dub".
11. Дополнительная инфа. Предположим, твой инопланетный Канопус пишет в контейнер, отличный от avi. Первым делом перекидываем этот avi матрёшечником в матрёшку, не забыв задать fps и соотношение сторон. Дальше мы можем, конечно, грузануть эту матрёшку через DirectShowSource. Но можно попробовать нечто поумнее. Расчленяем полученную матрёшку на видео и звук при помощи MKVExtractGUI2. Весьма возможно, что видео поток получится в контейнере avi. Тогда тебе повезло. Присоединяешь Виртуал Дабом звук к этому avi в режиме "Direct stream copy". И дальше, как описано в п.5.
12. Дополнительная инфа. Обычно в контейнере avi нет смещения аудио относительно видео. Если мы изготавливаем avi Виртуал Дабом и задаём смещение звука, то по физической сути аудио поток либо будет подрезаться спереди, либо спереди будет вставляться доза тишины. Но Канопус, как известно, звезда в созвездии Киля, созвездие – полный отстой, инопланетяне оттуда вонючие и ослизлые. Поэтому Канопус может засандалить смещение в avi.
Исследуем вышедший из камеры avi при помощи Медиаинфо. Смотрим раздел "Аудио". Там может быть такая строка: "Задержка видео". Так вот переводчика Медиаинфо за такой перевод следует скормить крокодилам. Правильный по физической сути перевод должен быть таким: "Задержка аудио относительно видео". То есть по сути поворот на 180 градусов.
Скормили.
Если строки "Задержка видео" нет, то тебе повезло: никаких дополнительных телодвижений делать не надо, так как никакой задержки аудио относительно видео нет. Но предположим, что она всё-таки есть. В предложенном мне на исследовании куске там было -22с, чего в принципе не может быть. Скорее всего, задержки нет. Так вот предположим, что задержка (или смещение, если говорить по физической сути) есть. Команда AviSource смещение не отрабатывает, DirectShowSource и подавно. Делаем так. Открываем исходный avi в Виртуал Дабе. Вводим смещение для звука. Сохраняем avi под другим именем в режиме "Direct stream copy" для видео и для аудио. Полученный avi обрабатываем, как описано в п.5.