habrahabr

VHS-Decode — новый метод оцифровки видео

  • вторник, 8 июля 2025 г. в 00:00:11
https://habr.com/ru/articles/925458/

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

Зимой 2025 года в мои руки попало 35 кассет формата VHS и VHS-C из семейного архива, и встала задача по их оцифровке. С учетом того, что на каждой кассете было записано приблизительно по 60 минут видео, а средний ценник услуг по захвату сейчас составляет 400 рублей в час, общая стоимость конвертации составила бы около 14 тысяч рублей. Эта сумма показалась мне слишком большой, и было решено сделать все самостоятельно. В данной статье я хочу рассказать об относительно новом методе оцифровки видеокассет, на котором я остановился, и сравнить его с классическими подходами.

Оцифровка видео — это сложно

Оцифровка данных с аналоговых носителей — непростая задача. В случае с видео она осложняется тем, что приходится работать с очень большим потоком информации. Если на аудиокассете ширина полосы пропускания составляет 12-16кГц, то на кассете стандарта VHS — около 5МГц, то есть в 300 раз больше. Это накладывает жесткие требования на качество оборудования и точность его работы. Кроме того, видеосигнал имеет сложную структуру и рассчитан на телевизор с кинескопом, который рисует кадр строчку за строчкой. А значит, нужно как-то интерпретировать для конвертации в цифровой файл.

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

Айсберг оцифровки видео (не полный)
Айсберг оцифровки видео (не полный)

Популярные способы оцифровки видео

Методы оцифровки видео можно условно поделить на две категории:

  • Любительский — используется дешевая внешняя USB карта захвата, например AVerMedia DVD EZMaker 7, и бытовой VHS магнитофон. Стоимость такого комплекта составляет приблизительно 9 тысяч рублей при покупке с рук;

  • Профессиональный — используется дорогая внешняя или внутренняя карта захвата, например Canopus ADVC-300, и S-VHS магнитофон с функцией Time Based Correction (TBC), ведь серьезные карты захвата очень требовательны к стабильности сигнала, и при работе в паре с бытовым магнитофоном гарантировано будут потери кадров. Стоимость такого комплекта начинается с 35 тысяч рублей при покупке с рук.

Конечно, это упрощенная классификация, в которой не учтены экзотические походы. Например, в качестве карты захвата можно использовать старую камеру стандарта Digital8, подключив ее к компьютеру по FireWire.

Что такое VHS-Decode?

VHS-Decode — это программа, создатели которой обещают результат профессионального качества при минимальных затратах на оборудование. Предлагается использовать бытовой магнитофон, но брать сигнал не с видеовыхода, а напрямую с магнитной головки, после чего оцифровывать его с высокой частотой простым АЦП. Последующая работа по интерпретации данных выполняется на компьютере. Таким образом, программа заменяет собой схемотехнику магнитофона и карты захвата.

Не смотря на название, VHS-Decode позволяет оцифровывать следующие форматы аналогового видео:

  • VHS (NTSC, NTSC-J, PAL, PAL-M);

  • SVHS (NTSC, NTSC-J, PAL, PAL-M);

  • U-Matic Low Band (PAL, NTSC);

  • U-Matic High Band (PAL);

  • Betamax (PAL, NTSC);

  • SuperBeta (NTSC);

  • Video8 и Hi8 (PAL, NTSC);

  • 1" Type C (SMPTE Type C) (PAL, NTSC);

  • 1" Type B (SMPTE Type B) (PAL, NTSC);

  • EIAJ (PAL);

  • Philips VCR и Philips VCR "LP" (PAL).

Проект активно развивается, и возможно этот список будет расширен в будущем. Также, важно заметить, что VHS-Decode является форком проекта LD-Decode, который нацелен на работу с LaserDisk.

Подготовка к оцифровке с помощью VHS-Decode

Для оцифровки кассет с помощью VHS-Decode вам потребуется следующее оборудование:

  • Видеомагнитофон формата VHS. Подойдет любой исправный аппарат, но, если есть выбор, лучше взять машину от Panasonic или JVC с поддержкой Hi-Fi. Стоимость такого магнитофона на Авито от 2 до 5 тысяч рублей;

  • Аудиокарта для записи звука. Подойдет любой приличный вариант с поддержкой захвата 24bit 48kHz. Стоимость такой карты на Авито начинается от 4 тысяч рублей;

  • Кассета формата VHS с записанным на нее фильмом длиной не менее получаса и цифровая версия этого фильма. Они пригодятся нам при калибровке скрипта для синхронизации аудио и видео. Кассету можно найти на дальней полке шкафа или на Авито за несколько сотен рублей;

  • Высокочастотный кабель длиной не более метра с импедансом 50Ом и высокочастотными разъемами мама-папа на концах. Авторы проекта рекомендуют разъемы BNC, однако ниже я объясню, почему лучше остановиться на разъемах SMA. Такой кабель можно найти на Ozon за 600 рублей;

  • Тюбик нейтрального эпоксидного клея-пластилина или силиконового герметика. Можно найти где угодно приблизительно за 300 рублей;

  • Керамический конденсатор номиналом от 3.3 до 10мкФ. Можно найти где угодно за несколько рублей;

  • Карта видеозахвата формата PCIe 1x на основе чипа Conexant CX2388x, как на картинке ниже. Такую карточку можно найти по запросу «карта видеозахвата 640x480» на Ozon или Aliexpress. Стоить она будет около 1700 рублей.

Как говорилось выше, мы будем подключаться напрямую к магнитной головке. Для этого нужно вскрыть корпус магнитофона и найти на плате контакт, предусмотренный для проверки сигнала при ремонте устройства. В зависимости от производителя он может быть подписан по-разному. Например, в моем LG L494 используется обозначение “RF”. Более подробно о том, как найти площадку и подключиться к ней, написано в вики VHS-Decode.

Можно использовать и электролитический конденсатор. Главное учесть полярность
Можно использовать и электролитический конденсатор. Главное учесть полярность

Необходимо отрезать кусок высокочастотного кабеля и припаять его к найденному контакту через конденсатор. Для удобства в корпусе магнитофона можно проделать дополнительное отверстие и вывести кабель через него, нанеся на место стыка силиконовый герметик или эпоксидную смолу для фиксации.

Я использовал разъем BNC и пожалел об этом
Я использовал разъем BNC и пожалел об этом

Описанные операции могут показаться сложными, однако занимают не более получаса и безопасны для магнитофона.

Карту видеозахвата также необходимо доработать. Во-первых, требуется удалить разъем RCA и припаять к освободившимся контактным площадкам ответную часть кабеля. При этом суммарная длина этого куска и того, что был установлен в магнитофон, не должна превышать 50 сантиметров. Во-вторых, для снижения уровня шума при оцифровке рекомендуется удалить конденсатор C31. Более подробно модификации карты описаны здесь. Эти манипуляции тоже занимают не более получаса.

Я также на всякий случай установил мелкие радиаторы на чипы
Я также на всякий случай установил мелкие радиаторы на чипы

Теперь, можно установить карту в компьютер. Однако, в случае использования разъема BNC вы не сможете это сделать, так как он шире прорези в корпусе. Именно поэтому лучше использовать более мелкий разъем SMA.

Разъем BNC был ошибкой, но я справился
Разъем BNC был ошибкой, но я справился

Осталось установить необходимые программы:

  • Драйвер АЦП под Ubuntu 22.04 или Windows. Второй имеет статус экспериментального, однако работает без нареканий;

  • Набор утилит из проекта VHS-Decode для Windows, MacOS или Linux. На момент написания статьи актуальна версия 0.3.5;

  • Консольная программа SoX для захвата звука.

Я работаю под Windows, однако большая часть того, что будет сказано далее, справедливо и для Linux версий программ.

Процесс оцифровки

Процесс оцифровки состоит из семи шагов:

  1. Настройка BIOS и перевод Windows в тестовый режим;

  2. Настройка АЦП;

  3. Захват сигнала с магнитофона и сохранение его в файл (capture);

  4. Выделение из сырых данных полезной информации (decode);

  5. Экспорт видео (export);

  6. Синхронизация аудио и видео (align);

  7. Постобработка.

В этом и двух следующих разделах будет дано подробное описание каждого из них. Если вам это не интересно, вы можете перейти к разделу “Сравнение с классическими методами”.

Для корректной работы драйвера АЦП необходимо отключить опцию Secure Boot в BIOS. Под Windows требуется также перевести ОС в тестовый режим, выполнив команду

bcdedit -set testsigning on

и перезагрузив компьютер. После того, как вы захватили все кассеты, можно вернуть ОС в обычный режим с помощью команды

bcdedit -set testsigning off

и повторной перезагрузки.

Настройка АЦП выполняется через специальные команды драйвера. При этом необходимо указать следующие параметры:

  • Разъем, с которого будет захватываться сигнал (vmux);

  • Применять ли ко входному сигналу дополнительное усиление на 6дБ (sixdb);

  • Уровень цифрового усиления входного сигнала (level);

  • Центрирование значений при оцифровке (center_offset).

Мы используем ту площадку АЦП, где изначально стоял разъем RCA, поэтому в качестве первого значения необходимо указать единицу. Дополнительное усиление я рекомендую выключить, так как оно вносит шумы в сигнал. Оставшиеся значения зависят от модели магнитофона и драйвер может подобрать их автоматически. Для этого нужно запустить на магнитофоне воспроизведение и выполнить команду драйвера leveladj. При перезагрузке настройки сбрасываются, поэтому чтобы не восстанавливать их вручную, можно подготовить bat файл. Мой скрипт выглядит следующим образом

prepare.bat

:: вывести список доступных АЦП (в системе их может быть до 255)
"C:\Program Files\cxadc\tools\cxadc-win-tool.exe" scan

:: настроить первый АЦП
"C:\Program Files\cxadc\tools\cxadc-win-tool.exe" set \\.\cxadc0 vmux 1
"C:\Program Files\cxadc\tools\cxadc-win-tool.exe" set \\.\cxadc0 sixdb 0
:: эти два параметра у вас могут отличаться
"C:\Program Files\cxadc\tools\cxadc-win-tool.exe" set \\.\cxadc0 level 31
"C:\Program Files\cxadc\tools\cxadc-win-tool.exe" set \\.\cxadc0 center_offset 8

:: проверить, что настройки сохранились
"C:\Program Files\cxadc\tools\cxadc-win-tool.exe" get \\.\cxadc0

pause

Подробнее о настройке драйвера под Windows можно прочитать здесь, а описание Linux версии приведено здесь.

Теперь мы готовы к оцифровке сигнала. Подключим самодельный кабель, идущий из магнитофона, к АЦП, а красный и белый RCA разъемы к аудио карте. Наконец, запустим такой скрипт

capture.bat

:: запустить запись аудио и видео одновременно на X секунд
start /high "" cmd /c ""C:\Program Files (x86)\sox-14-4-2\sox.exe" -t waveaudio 0 -e signed-integer -b 24 -c 2 -r 48000 "audio.wav" trim 0 X"
start /high "" cmd /c ""C:\Program Files\cxadc\tools\cxadc-win-tool.exe" capture \\.\cxadc0 capture.u8" & timeout /t X /nobreak > nul & taskkill /im cxadc-win-tool.exe /f

и нажмем клавишу Play на магнитофоне. В директории, в которой находится скрипт, появятся файлы audio.wav и capture.u8, в которые будет сохраняться поток аудио и видео соответственно. Запись будет продолжаться в течение X секунд, если вы не прервете ее досрочно. При этом магнитофон можно подключить к телевизору, чтобы контролировать процесс.

По завершении захвата требуется запустить следующий скрипт, сохраняющий время, когда началась запись аудио и видео в файл time.txt. Эта информация пригодится далее для сведения дорожек.

time.bat

echo "Начало захвата видео" >> time.txt
powershell -command "(Get-Item "capture.u8").CreationTime.ToString(\"HH:mm:ss.fff\")" >> time.txt

echo "Начало захвата аудио" >> time.txt
powershell -command "(Get-Item "audio.wav").CreationTime.ToString(\"HH:mm:ss.fff\")" >> time.txt

echo "Смещение начала аудио относительно начала видео (миллисекунд). Если больше 0, то нужно добавить тишину, а если меньше 0 — отрезать начало" >> time.txt
powershell -command "((Get-Item "audio.wav").CreationTime - (Get-Item "capture.u8").CreationTime).TotalMilliseconds" >> time.txt

Теперь мы можем расшифровать сигнал и экспортировать его в видео. Для этого запустим команды

decode pal.bat

:: декодировать сигнал формата PAL с кассеты формата SP
"C:\Program Files\vhs-decode\decode.exe" vhs -p -t 3 --tf vhs --cxadc --recheck_phase --ire0_adjust capture.u8 decoded

:: экспортировать в видео формата FFV1 с чересстрочной разверткой
:: "C:\Program Files\vhs-decode\tbc-video-export.exe" decoded.tbc

pause

Первая запустит длительный процесс расшифровки видео. При этом будет создан ряд файлов с названием decoded и разными расширениями. Далее, будет сформирован файл decoded.mkv с результатом. У утилиты decode есть великое множество аргументов, описанных здесь. Приведенный выше набор параметров кажется мне оптимальным на данный момент (к сожалению, аргумент --chroma_trap сейчас сломан). Программа tbc-video-export тоже предоставляет широкий набор возможностей. Например, можно экспортировать видео в более привычный формат со сжатием h.265 и прогрессивной разверткой. При этом для устранения чересстрочности будет применяться относительно простой алгоритм bwdif.

Наконец, нужно синхронизировать видео с аудиодорожкой с помощью

sync audio.bat

:: добавить X секунд тишины в начало аудио (X отличается от раза к разу)
"C:\Program Files (x86)\sox-14-4-2\sox.exe" audio.wav padded_audio.wav pad X

:: отрезать первые Y секунд аудио (Y отличается от раза к разу)
"C:\Program Files (x86)\sox-14-4-2\sox.exe" audio.wav padded_audio.wav trim Y

:: выровнять аудио, приняв частоту дискретизации аудиодорожки за Z (Z нужно найти один раз)
"C:\Program Files\vhs-decode\ffmpeg.exe" -i padded_audio.wav -filter_complex "channelmap=map=FL-FL|FR-FR" -f s24le -ac 2 - | "C:\Program Files\vhs-decode\AutoAudioAlign.exe" stream-align --sample-size-bytes 6 --stream-sample-rate-hz Z --json decoded.tbc.json --rf-video-sample-rate-hz 40000000 | "C:\Program Files\vhs-decode\ffmpeg.exe" -f s24le -ar Z -ac 2 -i - -af aresample=48000 -sample_fmt s32 sync_audio.wav

pause

Таким образом, мы получим файл sync_audio.wav со звуком для нашего видео. Про параметры X, Y и Z из этого скрипта будет рассказано в следующем разделе.

После оцифровки первой кассеты рекомендую открыть файлы decoded.tbc и decoded.tbc.json в программе ld-analyze, входящей в состав VHS-Decode и проверить отношение сигнала к шуму (SNR). Эта величина должна быть не менее 30дБ.

Подробнее о сведении аудио и видео

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

  1. Захват аудио и видео начинается не одновременно. Эта разница может достигать десятых долей секунды в ту или иную сторону;

  2. При работе с сырым сигналом утилита decode выравнивает поля кадра так, чтобы их частота составляла ровно 50Гц (речь идет о стандарте PAL). Требуется передвинуть фрагменты аудио вслед за ними;

  3. Мы считаем, что частота тактового генератора в карте захвата видео равняется 28636363Гц, а в карте захвата аудио — 48000Гц. Однако, на практике всегда существует погрешность на сотые доли процента из-за которой оцифрованное аудио будет воспроизводится чуть быстрее или чуть медленнее оцифрованного видео. Таким образом, за час может набегать до 5 секунд расхождения.

Первая проблема решается проще всего. Один из скриптов, приведенных выше, сформировал файл time.txt, в котором указано, на сколько миллисекунд раньше или позже был создан файл audio.wav относительно capture.u8. Эта величина может служить первым приближением, чтобы решить, сколько миллисекунд добавить к аудио или отрезать от него, чтобы выровнять дорожки. Большей точности можно добиться, оценив эту величину самостоятельно в видеоредакторе. При этом важно смотреть только на самое начало записи. Смещение — это случайная величина, поэтому так придется делать каждый раз при оцифровке очередной кассеты.

Очевидно, что тут нужно отрезать 12/60 секунды в начале аудио
Очевидно, что тут нужно отрезать 12/60 секунды в начале аудио

Вторую проблему за нас решит утилита AutoAudioAlign, входящая в состав VHS-Decode. Она подгонит звук под видео. Однако, для правильной работы этой программы нужно решить третью проблему. Тут то и пригодится кассета с фильмом, для которого у нас цифровая версия с идеально синхронизированными дорожками. Выполним следующие действия:

  1. Оцифруем не менее получаса фильма с кассеты. Получим файлы decoded.mkv и audio.wav;

  2. Выровняем начало audio.wav, методом, описанным выше. Назовем этот файл padded_audio.wav (смотрите скрипт sync audio.bat);

  3. В видеоредакторе разместим параллельно видеодорожку с кассеты и цифровую версию фильма, совместим их с точностью до кадра;

  4. Для начала будем считать, что аудиокарта работает с частотой Z=48000Гц;

  5. Запустим утилиту AutoAudioAlign с текущим значением Z. Назовем получившийся файл sync_audio.wav (смотрите скрипт sync audio.bat);

  6. Добавим на временную шкалу видеоредактора аудиодорожку sync_audio.wav, совместив ее начало с началом decoded.mkv;

  7. Оценим, торопится ли sync_audio.wav относительно дорожки с цифровой версии фильма или отстает от нее;

  8. Если sync_audio.wav торопится, нужно уменьшить величину Z на несколько Гц и вернуться к шагу 5;

  9. Если sync_audio.wav отстает, нужно увеличить величину Z на несколько Гц и вернуться к шагу 5;

  10. Будем уточнять Z до тех пор, пока не добьемся приемлемой точности.

Я использовал для калибровки кассету с клипами Майкла Джексона
Я использовал для калибровки кассету с клипами Майкла Джексона

Таким образом, с помощью эталона мы подбираем такую частоту Z, при которой утилита AutoAudioAlign будет выдывать правильный результат. Величину Z нужно найти один раз, после чего ее можно жестко прописать в скрипте sync audio.bat. Например, в моем случае она равна 47989Гц и погрешность не превышает 0.03 секунды на 30 минут видео.

Постобработка

Теперь, когда у нас есть видеодорожка decoded.mkv и аудиодорожка sync_audio.wav, мы можем объединить их в любом видеоредакторе. Дальнейшая постобработка — дело вкуса, однако я рекомендую выполнить следующие шаги:

  • Устранение чересстрочности — на данный момент мы имеем видео с чересстрочной разверткой, однако для корректного отображения на современных мониторах необходимо перейти к прогрессивной. Есть много методов устранения чересстрочности, но самым продвинутым считается QTGMC. Я пользуюсь реализацией этого алгоритма, входящей в состав StaxRip;

Мой пресет в StaxRip
Мой пресет в StaxRip
  • Временное шумоподавление — VHS-Decode экспортирует именно то, что записано на кассете. В результате получается шумное во времени видео. Если применить к нему фильтр, который удалит помехи с учетом соседних кадров, это значительно улучшит результат;

  • Коррекция кривой яркости — VHS-Decode экспортирует видео с диапазоном яркости 16-235. Это телевизионный стандарт, который может неправильно отображаться в некоторых видеоплеерах. Поэтому зачастую требуется исправить контраст, растянув яркость на полный диапазон 0-255.

Обратите внимание на кривую в нижней центральной части скриншота. Также можно видеть мои настройки шумоподавления
Обратите внимание на кривую в нижней центральной части скриншота. Также можно видеть мои настройки шумоподавления

Вывод о процессе оцифровки

Процесс оцифровки, описанный выше, может показаться сложным, однако после того, как вы откалибруете скрипт для синхронизации аудио, все будет сводиться к простым шагам:

  1. Перевести Windows в тестовый режим;

  2. Подключить магнитофон к компьютеру;

  3. Последовательно запустить скрипты prepare.bat и capture.bat;

  4. Запустить воспроизведение на магнитофоне и дождаться конца кассеты;

  5. Остановить скрипт capture.bat;

  6. Последовательно запустить скрипты time.bat и decode pal.bat;

  7. Оценить, сколько миллисекунд нужно убрать или добавить в начало аудиодорожки, основываясь на подсказке из файла time.txt и том, что вы видите в видеоредакторе. Прописать эту величину в скрипт sync audio.bat

  8. Запустить скрипт sync audio.bat;

  9. Объединить дорожки в видеоредакторе;

  10. Выполнить устранение чересстрочности, шумоподавление и коррекцию кривой в видеоредакторе (опционально).

Сравнение с классическими методами

Наконец, посмотрим, на что способен VHS‑Decode. В сравнении будут участвовать следующие подходы:

  • Любительский — магнитофон LG L494 → дешевый конвертер AV2HDMI → дешевая карта захвата для компьютера → запись через OBS. Стоимость такого комплекта без учета кабелей около 4 тысяч рублей;

  • Профессиональный — магнитофон Panasonic NV-HS 860 (TBC включено, а 3D DNR - нет) → передача по S-Video → карта захвата Canopus ADVC-300 → запись через Pinnacle Studio → устранение чересстрочности с помощью QTGMC → экспорт в FFV1. Стоимость такого комплекта без учета кабелей около 40 тысяч рублей;

  • Новый — магнитофон LG L494 → карта захвата видео на чипе Conexant CX23883-39 и карта захвата аудио Roland Rubix 22 → драйвер для Windows → обработка с помощью VHS-Decode 0.3.5 → устранение чересстрочности с помощью QTGMC → экспорт в FFV1 → временное шумоподавление и коррекция кривой в DaVinci Resolve → экспорт в FFV1. Стоимость такого комплекта без учета аудиокарты около 6 тысяч рублей. С минимально приемлемой аудиокартой комплект стоил бы около 10 тысяч рублей.

Сначала сравним качество изображения. На свежую кассету TDK был записан фильм Звонок 2002 года. Запись выполнена с цифрового исходника с разрешением 720x480 на магнитофоне Panasonic NV-HS830. Оцифруем первые 5 минут фильма разными методами и будем оценивать, насколько результат близок к оригиналу.

Для удобства я также подготовил стоп-кадры.

Кадр 1
Кадр 2
Кадр 3
Кадр 4

AV2HDMI, очевидно, занимает третье место. Причем проблема не в магнитофоне, так как даже в паре с продвинутым Panasonic NV-HS 820 качество не сильно лучше.

Разница между Canopus ADVC-300 и VHS-Decode не так очевидна, но она есть. Обратите внимание на цвет лица героини на втором кадре. Там, где классический метод увел все в зелень, VHS-Decode смог восстановить оттенки красного. Глядя на остальные кадры, мы также можем заметить это различие. Таким образом, VHS-Decode обеспечивает лучшую цветопередачу и уровень детализации.

Теперь сравним стабильность изображения. Возьмем кассету Fujifilm формата VHS-C, выпущенную в 1994 году, с записью 1998 года. Лента сохранилась плохо, и на ней есть проблемные места. Посмотрим, на сколько стабильна картинка при оцифровке разными способами.

Можно видеть, что при использовании VHS-Decode искажения минимальны. Однако, удивляет то, на сколько отличаются цвета при оцифровке разными методами.

Возможные аппаратные доработки

Я описал базовый набор оборудования для VHS-Decode. Как показано выше, этого достаточно для получения хорошего результата при работе с кассетами формата VHS. Однако существует ряд модификаций, которые могут улучшить качество оцифровки:

  • Установка усилителя между магнитофоном и картой захвата видео — сигнал, идущий с головки магнитофона, очень слаб, и его приходится усиливать перед оцифровкой. В карте АЦП есть встроенный усилитель, однако он вносит помехи. Предварительное усиление сигнала перед подачей в карту может улучшить отношение сигнала к шуму. Кроме того, это позволит увеличить длину кабеля, идущего от магнитофона к компьютеру;

  • Увеличение частоты АЦП — изначально карта захвата видео работает на частоте 28.6МГц, однако, если заменить кварцевый резонатор, можно разогнать ее до 40МГц и выше. При этом микросхемы будут выделять больше тепла, а значит на них желательно установить радиатор. Данная модификация может повысить отношение сигнала к шуму, а также улучшить качество оцифровки форматов, более сложных чем VHS, например S-VHS;

  • Установка второй карты захвата для оцифровки Hi-Fi аудио — зачастую кассеты формата VHS содержат Hi-Fi звук. Такое аудио кодируется схожим образом, что и видео и считывается отдельной головкой. Тогда можно припаять к магнитофону еще один провод и установить в компьютер еще одну карту захвата, чтобы оцифровывать в высоком качестве не только видео, но и звук. В VHS-Decode есть ряд утилит для декодирования аудио;

  • Тактирование карт захвата одним генератором — развитие предыдущей модификации. Как говорилось в одном из прошлых разделов, частота любого тактового генератора всегда немного отличается от теоретического значения. Из-за этого оцифрованная аудиодорожка будет воспроизводиться чуть быстрее или чуть медленнее оцифрованного видео, и за час может набегать до 5 секунд расхождения. Мы научились компенсировать этот эффект с помощью скрипта sync audio.bat, но, если хочется решить проблему окончательно, можно установить общий тактовый генератор для двух карт захвата.

Недостатки VHS-Decode

Помимо преимуществ у VHS-Decode есть два недостатка, с которыми вы неизбежно столкнетесь, если решите попробовать этот метод.

Во-первых, сырые данные, полученные с кассеты, занимают много места на диске. Так, для часа видео файл capture.u8 будет весить около 96ГБ, decoded.tbc и decoded_chroma.tbc — по 117ГБ, а decoded.mkv - еще 43ГБ . Итого около 373ГБ без учета аудио. Проблему можно немного сгладить, сжав сырые данные без потерь

"C:\Program Files\flac\flac.exe" -f capture.u8 --threads 64 --best --sample-rate=28636 --sign=unsigned --channels=1 --endian=little --bps=8 capture.flac

и удалив исходник. Это уменьшит суммарный размер до 333ГБ, что все равно прилично.

Во-вторых, на момент написания статьи декодирование сырых данных утилитой decode занимает очень много времени. Так, расшифровка часовой записи занимает около 12 часов на процессоре Ryzen 7 7700. При этом по ходу обработки процесс замедляется с 8 кадров в секунду до 1. Кроме того, увеличение количества потоков может не ускорить, а замедлить процесс. Авторы программы знают о проблеме и признают, что код написан неоптимальным образом, однако пока что не нашлось желающих переписать его. Хочется верить, что однажды это будет сделано.

Замедление при обработке четырехчасовой кассеты (картинка из сети)
Замедление при обработке четырехчасовой кассеты (картинка из сети)
Зависимость производительности от количества потоков (картинка из сети)
Зависимость производительности от количества потоков (картинка из сети)

Вывод

При оцифровке кассет формата VHS проект VHS-Decode позволяет получить превосходный результат при минимальных финансовых затратах. Кроме того, с годами по мере выхода из строя продвинутых магнитофонов с функцией TBC он может стать единственным профессиональным методом оцифровки аналогового видео. Не стоит забывать и о том, что помимо VHS проект поддерживает множество других носителей.

Однако, на данный момент первичная подготовка для оцифровки этим методом может представлять трудности для неподготовленного человека. Также в нынешнем виде VHS-Decode непригоден для быстрой обработки большого количества кассет. В том числе в коммерческих целях.

Таким образом, по моему мнению сейчас VHS-Decode может представлять интерес для энтузиастов, стремящихся получить видео максимального качества без оглядки на временные затраты. Но проект развивается, а значит можно ждать изменений к лучшему в будущем.

Айсберг оцифровки видео (более полный)
Айсберг оцифровки видео (более полный)

P.S.

Хочу выразить благодарность Алексею за помощь в модификации магнитофона и Павлу за запись тестовой кассеты и оцифровку на профессиональном оборудовании.

Если у вас возникли вопросы по VHS-Decode, вы можете задать их в комментариях или написать мне в Telegram @kuprin2000.