Upscale SD Video to HD

Download: SD_Upscale.1.13 (zip, 21 KB)

English

In year 2006 (not too long before our first son was born) we bought our first camcorder (JVC MG-77, SD PAL, HDD, mpeg2). The camcorder’s purpose was to record our son. And we were recording him, but the original mpeg2 video files simply had being stored onto HDD/NAS. I was processing them slowly.

A few years have passed by, we “upgraded” our camcorder (Panasonic TM700, HD 1080-50p, Flash) and got to know what Full HD video was. We could not watch our old SD-videos without crying any more. But, it was impossible to re-record these funny scenes with our kid…

So, I started to look for a way to improve visual quality of SD-video. I hadn’t expected a miracle, however.

Surprisingly, the miracle was happened. I’ve discovered SimpleSlugUpscale AviSynth script (that is based on other scripts and plug-ins) that impressed me very much.
No, it was not a magic. Only very accurate de-interlacing, upscaling and noise removing. However, processed videos look amazing. I’ve added video stabilization to the work-flow later and results become even better.

Leaping ahead I’ll show you an example: source video from JVC MG77 camcorder (mpeg, PAL, 32 MB) and resulting video (mp4, 70 MB). Download these videos and watch them in full screen (I bet that you could not spot the difference by watching them on your phone).

Two notes:

  • The quality of processed video is better as it was encoded with Lagarith lossless codec. Some details were lost during transcoding into MP4 for uploading.
  • The video has being processed with default settings. I haven’t tuned the upscaling/deshaking process for the exact video at all (sometimes the tuning is required, especially for stabilization).

The process was very slow and, that was even worse, it required too many things to be done manually for every video file. I didn’t like that (as I had thousands of video files) and I started to simplify the process. The result you can find in attached zip-archive. This is a cmd-file and a bunch of stuff that helps to upscale SD video to HD and allows to configure the upscaling process for different situations.

You can’t totally get rid of all manual operations. You have to understand the process and make a few presets for your own files and output video parameters. However, after that you can easily upscale your videos by pressing a few buttons only. Also, creating presets is not a rocket science and most people should not have any problems with that.

The simple installation instruction (you can find detailed instruction in English in the archive):

    • Install SimpleSlugUpscale script. The installation means that you install AviSynth, a few AviSynth’s plug-ins and SimpleSlugUpscale script itself.
    • Install VirtuаlDub and UTVideo/MagicYUV/HuffYUV/Lagarith lossless codecs.
    • Download my archive and unpack it wherever you like.
    • Decide in which resolution you’d like to have resulting videos, what codec you’d like to use (I recommend MagicYUV or UTVideo lossless encoder) and what will be the video stabilization’s parameters. Configure all of those. Some presets for codecs, upscaling and deshaking processes are already included in the archive (if you need to create your own presets – read included instructions).
    • Add new button(s) onto Total Commander’s toolbar that will start upscaling process for selected files (you can find step by step instruction in the archive). This is not necessary and you can run the upscaling process manually from command prompt. But as a windows user I do not like this *nix way 🙂

That’s it. Now simply select a few video files that you’d like to upscale with single upscaling settings, press the button and go to bed. Yes, really. The process is very time and resources consuming.

P.S. I know that this looks like another bicycle. But I hadn’t found anything that could be used to complete my task so I “invented” this.

Русский

В 2006 году (незадолго до рождения первого сына) у нас появилась первая видео-камера (JVC MG-77, SD PAL, HDD, mpeg2). Основное назначение у неё было — снимать ребёнка. И ребёнка мы снимали, но видео в основном копилось необработанным на дисках в виде исходных mpeg2 файлов.

Прошло несколько лет, мы обновили камеру (Panasonic TM700, HD 1080-50p, Flash) и узнали что такое HD-видео. Смотреть на SD-видео, оставшееся от старой камеры, без слёз стало невозможно, однако кадры с ребёнком не переснять и выбрасывать их не хотелось…

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

Однако чудо, которого я совсем не ждал, всё таки случилось. Я обнаружил AviSynth скрипт SimpleSlugUpscale (который в свою очередь базируется на куче других плагинов), результаты работы которого меня очень впечатлили. Никакой магии тут не было, просто очень аккуратный deinterlace, upscale и чистка картинки от шумов, но оно стоило того. До кучи я добавил к процессу обработки стабилизацию изображения и всё стало ещё лучше.

Забегая вперёд покажу пример: исходный файл с камеры JVC MG77 (mpeg, PAL, 32 MB) и результат обработки (mp4, 70 MB). Сравнивать, понятное дело, имеет смысл на полный экран компьютера (на экране телефона разницу врядли можно заметить). Часть деталей в результате потерялось при кодировании в mp4, в полученном после работы скрипта исходнике они есть (я жму lossless кодеком). Замечу, что данный результат был получен в полностью автоматическом режиме без каких либо подстроек под конкретное видео (хотя иногда подстройка, особенно для стабилизации изображения, требуется).

Однако процесс обработки медленный и, что совсем печально, изначально он требовал кучи телодвижений для каждого обрабатываемого файла. Мне это не понравилось (файлов много), поэтому я решил его упростить. В результате получилось то, что можно скачать в приложенном архиве: cmd-файл + кучка барахла, которое делает процесс увеличения разрешения однотипных видео из SD в HD гораздо проще.

Совсем от ручных операций избавиться не получится. В любом случае придётся вникнуть в происходящее, сделать для своих условий (исходные файлы и требуемые разрешения) пресеты, зато потом «лёгким движением руки старые видеофайлы будут превращаться в элегантное HD-видео». Да и упомянутые настройки довольно просты.

Краткая инструкция по установке (в архиве есть более подробная на английском, возможно позже добавлю инструкцию на русском):

  • Устанавливаем SimpleSlugUpscale. Процесс его установки подразумевает установку AviSynth, несколько плагинов к нему, сам скрипт SimpleSlugUpscale
  • Устанавливаем VirtuаlDub и кодеки UTVideo/MagicYUV/HuffYUV
  • Скачиваем мой архив (ссылка в конце), распаковываем куда удобно.
  • Решаем в каком разрешении требуется получить видео, чем будем кодировать (рекомендую кодеки MagicYUV или UTVideo) и какие будут параметры стабилизации. Всё это конфигурируем. Кодеки, upscale и deshaker уже имеют готовые пресеты в архиве. Если нужны свои пресеты (например для dv-видео, которого у меня нет и соотв. для которых в архиве нет пресетов) — делаем их по аналогии (в архиве есть инструкции).
  • Навешиваем к Total Commander кнопочку(и), при нажатии на которую будет запускаться процесс обработки (пошаговая инструкция есть в архиве). Этот пункт не обязателен, можно ручками запускать обработку файлов из командной строки. Но мне, как windows-пользователю, это неудобно.

В общем всё. Теперь выделяете файлы, которые надо обработать, нажимаете кнопочку и идёте спать. Да, именно так, процесс очень длительный и ресурсоёмкий.

P.S. Принимаются пожелания по улучшению и готовые пресеты, которые я включу в архив.
P.P.S. Знаю, что возможно это очередной велосипед. Однако ничего, с помощью чего я мог бы решить свою задачу я не нашёл, поэтому пришлось его изобретать 🙂