Практическое руководство по TV-рипу
Содержание материала
1. Цель руководства.
Цель данного руководства – научить всех желающих производить качественный захват и кодирование видеосигнала.
2. Практические рекомендации по захвату.
2.1. Стандарты TV
Стандарт NTSC использует 525 горизонтальных строк, из которых активную картинку создают около 487 строк. Когда мы говорим, что у телевизора 487 строк, это означает, что телевизор обладает максимально возможным разрешением в 487 точек. Но нельзя сказать, что телевизор имеет 487 точек, так как это максимально возможное значение. Реальное значение зависит от качества сигнала вещания.
Стандарт PAL использует 625 горизонтальных строк, из которых активную картинку создают соответственно около 540 строк.
Очевидно, что PAL даёт более высокое качество картинки, чем NTSC.
Таким образом, производить захват в разрешении 640x480 – явный перебор. При захвате с TV следует придерживаться максимального финального разрешения 576x432.
2.2. Используемое оборудование и оперционная система
На данный момент автор использует для захвата TV-карту FlyVideo 2000 и программу iuVCR. Рекомендуемые операционные системы для видеозахвата – Windows 2000 или Windows XP.
2.3. Используемое программное обеспечение.
Программы:
VirtualDub 1.4.13
Nundub 1.0RC2
iuVCR 4.0.0.230
Sound Forge 6.0
Azid/Lame GUI v0.3 beta12
Кодеки:
Huffyuv 2.1.1
DivX 5.02 Pro
Lame 3.93.1
Внешние фильтры VirtualDub’a:
Logoaway v4.0beta2
Smart Deinterlace 2.7 beta 2
Dynamic Noise Reduction 2.1
Logo 1.3 beta 4
2.4. Особенности захвата видео при использовании TV-карты FlyVideo 2000
Настоятельно рекомендуется производить захват, используя композитный вход, т. к. при захвате через антенный вход неизбежна сильная зашумленность сигнала. Таким образом, наилучшим вариантом будет подключить провод видео к TV-карте, а провод аудио непосредственно к LineIn входу аудиокарты (ввиду того, что FlyVideo 2000 не может захватывать звук самостоятельно). Не стоит подключать провод аудио к микрофонному входу аудиокарты, т. к. хотя в этом случае уровень громкости захватываемого звука выше, однако звук получается зашумленным).
2.5. Использование кодека huffyuv при захвате
При захвате видеопоток кодируется на лету кодеком huffyuv. На момент написания статьи последней версией кодека является 2.1.1. Этот кодек без потерь сжимает видеопоток примерно в два с половиной раза, позволяя таким образом, во-первых, сэкономить место на жёстком диске, во-вторых, за счёт сжатия возможно производить захват в более высоком разрешении.
2.6. Рекомендуемые разрешения, используемые при захвате
Стандартным отношением сторон является отношение 4:3. Таким образом, удачным финальным разрешением можно считать разрешение 576x432 (при отсутствии чёрных полос сверху и снизу картинки). Разумеется, вследствие возможного обрезания изображения по краям разрешение может меняться. При этом необходимо, чтобы финальный размер картинки по горизонтали и по вертикали был кратен 16. Например, 576x336, 560x432 и т. п. Я произвожу захват в разрешении 576x540. Впоследствии при кодировании я произвожу ресайз в 576x432. Рекомендуется производить захват, выбирая как можно больший размер по вертикали и впоследствии производить ресайз. Тем самым достигается наилучшее качество. Ресайз по горизонтали производить НЕ СЛЕДУЕТ.
2.7. Требования к процессору
Захват не требует очень мощного процессора. Скажем, мощности процессора Pentium III 800 MHz вполне достаточно для удовлетворительного захвата. Желательно, однако, убрать из tray все лишние программы и снять ненужные задачи. Таким образом можно избежать излишнего выпадения кадров.
2.8. Требования к жёсткому диску
Размер жёсткого диска должен быть достаточно большим, чтобы вместить файлы.avi, создаваемые в процессе захвата. Диск должен быть дефрагментирован, крайне желательно, чтобы операционная система была установлена на другом физическом диске. Я осуществляю захват на диск WD ёмкостью 120 GB. При выборе разрешения в 574x540 и использовании кодека huffyuv этот диск способен вместить около 200 минут записи телесигнала.
3. Описание программы iuVCR
На момент написания руководства последней является версия iuVCR 4.0.0.230. Рекомендуется использовать именно её, ввиду того, что ранние версии изобилуют багами. Увы, использование других программ может безвозвратно погубить настройки программы iuVCR. Поэтому для захвата я рекомендую создать нового юзера, который будет использоваться исключительно для захвата.
Последовательно пройдёмся по закладкам программы.
3.1. File
Здесь нас интересует, прежде всего, возможность указать, куда именно будет записываться захваченный нами avi-файл. В своём названии файл будет содержать время начала и конца записи. Опции сегментации (Segmetation) позволяют разбивать данный файл на куски соответствующей продолжительности по времени и по размеру. Практического применения сегментации мной не найдено.
3.2. Video
Закладка, требующая некоторой осторожности в обращении и до упора напичканная многочисленными багами. Во-первых, ни при каких условиях не меняйте настройки Preview Format. В случае смены настроек экран превью начинает вести себя крайне загадочно.
Для корректной установки опций Capture Format я советую предварительно нажать на кнопку Enable preview. Рекомендуется производить захват в RGB24. Нет никакого смысла производить захват в RGB32, так как при этом размер файла увеличивается почти в полтора раза, файл содержит дополнительную информацию по биту прозрачности, который отсутствует в телевизионном сигнале. Я рекомендую производить захват в разрешении 576x432, или же 576xXXX (где XXX > 432 в n раз) с последующим ресайзом в n раз. Коэффициент n может быть любым числом в диапазоне от 1.00 до 2.00. Для захвата с PAL TV нужно установить framerate равным 25fps, для NTSC TV - 29.970fps соответственно.
3.3. Audio
В соответствующем комбобоксе выбираем LineIn. На бегунке Mixer Input выставляем желаемую громкость захвата аудио. Стоит отметить, что подавляющее большинство российских каналов вещает в mono-звуке, соответственно бессмысленно производить захват в режиме stereo.
3.4. Channels
В этой закладке настраиваем канал, который соответствует композитному входу.
3.5. Options
Все опции оставляем без изменений (важно!). Возможно поставить галочку в check-box’e Disable Screen Saver. Тогда скринсейвер не будет включаться в момент захвата. Хотя следует отметить, что это, как правило, не влияет на количество выпавших кадров.
3.6. Schedule
Здесь всё довольно понятно. Следует лишь отметить, что если вы планируете воспользоваться опцией Schedule, чтобы компьютер осуществлял захват в ваше отсутствие, необходимо, чтобы вы входили в систему, вводя пароль. При отсутствии пароля (простое нажатие клавиши Enter вместо ввода пароля), iuVCR не станет запускать Schedule.
3.7. Захват
При захвате следует обратить внимание на величину запаздывания видеосигнала по отношению к аудиосигналу. Как правило, эта величина составляет 20—50 ms.
При захвате неизбежно будет происходить выпадение фреймов. Удовлетворительной может считаться ситуация, при которой происходит выпадение 1 фрейма примерно на 5 минут захвата.
Если происходит интенсивное выпадение фреймов, возможны следующие варианты:
А) Мощности процессора не хватает (крайне маловероятно).
Путь решения: захват в более низком разрешении, отказ от использования кодека, используемого при захвате.
Б) Характеристики жёсткого диска не позволяют захватывать видеопоток такой интенсивности.
Пути решения: захват в более низком разрешении; использование кодеков при захвате, что позволяет уменьшить объём видеопотока за счёт сжатия кодеком.
В) Происходит очень интенсивное выпадение кадров при захвате.
Суть проблемы: возможен конфликт между жёстким диском, на который производится захват, и другим оборудованием, в случае, если они используют общую шину данных.
Решение – пересадить жёсткий диск на другую шину.
Возможно также, что вы производите захват на жёсткий диск, на котором установлена операционная система. Этого следует по возможности избегать.
Г) Хотя не iuVCR не показывает интенсивного выпадения кадров при захвате, однако framerate видеопотока крайне низок (скажем, для PAL он обязан быть в диапазоне 24.999-25.000). При просмотре файла в редакторе видно, что выпало огромное количество кадров, изображение дёргается.
Пути решения: 1) Возможно, поможет, переустановка Windows, если в последнее время вы добавляли какие-то устройства, например, IDE контроллер. 2) Возможно, необходимо пересадить жёсткий диск, на который осуществляется захват, с IDE контроллера на материнскую плату.
3.8. Оптимальная конфигурация для захвата
Оптимальная конфигурация для захвата: к материнской плате присоединены два жёстких диска, каждый сидит на отдельной шине. На первом установлена операционная система, на второй производится захват. В этом случае количество выпавших кадров при захвате составляет около 5 кадров в час. Очевидно, что для получения такой конфигурации необходимо отключить некоторые устройства.
4. Общая последовательность действий
Сперва мы будем кодировать звук. На основании размера полученного mp3 файла мы произведём расчёт необходимого битрейта видео. Потом мы закодируем видео. Далее прикрепим аудиофайл к видео.
5. Действия, предшествующие процессу кодирования
5.1. Подготовка видео к кодированию
Открываем avi-файл в программе VirtualDub. На момент написания последней версией является VirtualDub 1.4.13. Если вы используете для кодирования процессор Pentium IV, то рекомендуется воспользоваться специальной версией VirtualDub’а, оптимизированной для работы именно с этим процессором, выигрыш в скорости кодирования может составить около 10%.
Если у нас уже есть vcf-файл, который мы сохранили после кодирования другого фильма, то возможно загрузить его до avi-файла.
5.1.1. Удаление рекламных вставок и т.п.
Вырезаем ненужные фрагменты видео (до и после фильма, возможные рекламные вставки), выделяя их кнопками Home и End. Удаление фрагмента осуществляется кнопкой Del. Стоит отметить, что при этом удаляются пограничные фреймы, на которые приходятся нажатия кнопок Home и End.
5.1.2. Удаление «плохих» кадров
При захвате неизбежно появляются «плохие» кадры. С помощью кнопок Shift-{ и Shift-} вы можете легко отыскать их в VirtualDub’e. Если в этот момент не звучит речь, то рекомендуется удалить эти кадры, так как они НЕ кодируются VirtualDub’ом, и большое их количество неизбежно приведёт к рассинхронизации звука и изображения.
5.2. Подготовка звука к кодированию
5.2.1. Сохранение звука
Выбираем Audio -> AVI audio.
Далее: File -> Save WAV
5.2.2. Преобразование звука
Рекомендуется проверить, нет ли в начале и в конце файла звуков из других
Поверьте, такое частенько случается при захвате с TV. Несмотря на удалённую рекламу посредине фильма порой на стыке рекламы и кадров фильма идёт фрагмент фильма, на котором звучит реклама. По возможности нужно стремиться к очистке файла от звуков рекламы. Для простейшего погашения ненужных звуков может служить опция Sound Forge’a Process -> Mute.
5.2.2.1. Нормализация
При желании возможно произвести нормализацию звука в программе Sound Forge. Последней версией является Sound Forge 6.0.
Process -> Normalize.
Рекомендуемые настройки:
Normalize using: –0.10dB (98.86 %)
Average RMS power (loudness)
Scan Settings: 0.0dB (100.00 %)
Attack Time: 200 ms
Release Time: 200 ms
Использование Use equal loudness contour
If clipping occurs: Apply dynamic compression
5.2.2.2. Очистка звука от шумов
При захвате от зашумленного источника следует производить очистку звука от шумов. Лучшим решением для этого является плагин к Sound Forge – Noise Reduction. Следует избегать очистки звука от шумов, так как звук при этом неизбежно искажается.
5.3. Кодирование звука
При кодировании звука я рекомендую использовать кодек lame. Последняя его версия на данный момент – 3.93.1. Рекомендуется использовать оболочку для кодирования – Azid/Lame GUI v0.3 beta12.
5.3.1. Настройки программы Azid/Lame GUI v0.3 beta12
Locations: Lame.exe – указываем путь к кодеку lame 3.93.1.
Source (WAV): указываем путь к исходному wav-файлу
Target (MP3): указываем путь к mp3-файлу, который будет создан в процессе кодирования
Закладка Lame1:
Mode:
Mono, если звук – моно
Joint Stereo или Stereo, если звук – стерео
Закладка Lame2:
VBR (Variable Bitrate) Options:
Use VBR: Old Routine (кодирование занимает больше времени, чем при использовании New Routine, однако качество получается выше)
Quality: 4
ABR/VBR Options:
Minimum Allowed Bitrate: 48 kps (при mono) или 96 (при stereo)
Maximum Allowed Bitrate: 96 kps (при mono) или 192 (при stereo)
Нажимаем кнопку WAV to MP3, и происходит кодирование.
Если кодирование не происходит, следует проверить, корректно ли указан путь к кодеку Lame и к исходному wav-файлу.
5.4. Расчёт битрейта
Расчёт битрейта видео производим по формуле:
Битрейт = (RipSize – A – S) * 1024 * 1024 / K / t,
где
RipSize – размер рипа (в мегабайтах), который вы планируем получить (701; 350 и т. д.)
A – размер уже полученного mp3 файла (в мегабайтах);
S – размер, необходимый для склейки видео и аудио (в мегабайтах);
K – эмпирический коэффициент. Для чистого, незатемнённого источника K = 125.6 – 125.8
t – протяжённость видео в секундах.
S рассчитывается по формуле:
S = Time * 0.05332,
где T – протяжённость видео в минутах
5.5. Выбор настроек кодека DivX
На момент написания последней версией кодека является версия 5.02. Я рекомендую использовать профессиональную версию кодека, так как она раскрывает перед нами более широкие возможности по кодированию.
Последовательно рассмотрим необходимые настройки кодека.
В Virtual Dub’е:
Audio -> No audio
Video -> Full Compressing Mode
5.5.1. Закладки кодека DivX Pro
Video -> Compression -> DivX Pro 5.02 Codek -> Configure
5.5.1.1. Закладка DivX Codeс
Encoding Bitrate: выставляем размер полученного нами значения битрейта.
MPEG4 Tools:
Отмечаем галочкой опции Use Bidirectional Encoding и Use GMC, опцию Use Quarter Pixel не используем.
5.5.1.2. Закладка General Parameters
Enable Crop – в случае обрезания краёв изображения ставим соответствующую галочку и параметры обрезания. Я рекомендую для обрезания картинки воспользоваться встроенным фильтром VirtualDub’а null transform.
Enable Resize – ставим галочку и размер изображения, который хотим получить в процессе кодирования видео. Не забывайте, что размер конечного видео по вертикали и по горизонтали должен быть кратен 16. Я рекомендую для масштабирования картинки воспользоваться встроенным фильтром VirtualDub’а resize.
Пример 1. Без кроппинга
Допустим, мы произвели захват в разрешении 576x540. Таким образом, мы изначально рассчитывали, что впоследствии осуществим ресайз по вертикали в 1.25 раза. Если предположить, что кроппинг не требуется, мы должны убрать галочку рядом с Enable Crop, а параметры Enable Resize установить в 576x432.
Соответственно, при использования встроенных фильтров VirtualDub’а мы не используем фильтр null transform, а в опциях фильтра resize указываем размер 576x432.