четверг, 5 января 2012 г.

Кодирование видео с помощью VLC

VLC - далеко не просто проигрыватель аудио/видео файлов, как кажется на первый взгляд...
Он также имеет огромное количество стандартный и не очень возможностей, таких как:
  • Кроссплатформенность (Linux, Windows, Mac OS X, BeOS, *BSD, Solaris, QNXs и пр.)
  • Open Source. Бесплатный и с открытыми исходными кодами!
  • Конвертер и транскодирование (уплотнение и обратное разуплотнение потока данных) . Умеет конвертировать все файлы во все форматы, которые понимает сам, а понимает он очень много! 
  • Вещание потока в сеть или на локальный порт. Поддерживает  http https mms udp rtp rtsp ftp rtmp .  Работает с мультикастом.Может вещать в несколько источников одновременно и по разным протоколам!!!
  • Проигрывание потока. Соответственно может и проигрывать поток из сети в том числе и мультикаст.
  • Работа с оборудованием.  Работает с устройствами видеозахвата, карточками PVR, TV-тюнерами, USB-Камерами ну естественно может читать с дисков флешек и прочих носителей информации
  • Способы управления. Возможность управления всеми функциями плеера с мобильных устройств и посредством обычного web-браузера
  • Просмотр видео из RAR.  С помощью VLC можно посмотреть заархивированное видео, и можно даже делать перемотку. Если файл упакован в несколько архивов, просто загрузите первую часть (.part001.rar ), а плейер сам "подтянет" остальные части и покажет весь файл.
  • Рип ДВД дисков. Возможно, это не самый продвинутый инструмент для DVD-риппинга, но с его помощью можно скопировать на жесткий диск фильм с ДВД в довольно приличном качестве. Для этого пройдите в меню "Медиа"-"Конвертировать/Сохранить...", потом выбрать вкладку “Диск”. Тут вы можете настроить, что и как именно нужно копировать (все главы или только определенные, аудио, субтитры и т.п.). Введите имя файла, обращая внимание, чтобы оно заканчивалось расширением .MPG и начинайте копирование. Нажмите "Сохранить". 
  • Просушивание онлайн-радио. В VLC включены много Shoutcast радио-станций и все, что надо - это зайти в "Вид"-"Плейлист" и выбрать в меню "Интернет" то, что вам хочется послушать. 
  • Использовать плагины VLC для Firefox и др.
Этот уникальный плеер обладает еще огромным перечнем возможностей, которые я описывать не буду...
Все возможности VLC на каждой платформе перечислены в списке возможностей VLC.
Есть также скины на vlc на офф. сайте для эстетов.
Сейчас я рассмотрю, как можно использовать VLC для перекодирования видео:


Примечание: Под Windows есть мощный конвертер Media File ConverterSUPER © который позволяет перекодировать практически что угодно. Немного сложноват по мнению некоторых людей и с не очень привлекательным интерфесом, но возможности перекрывают все недостатки, особенно если учесть, что он на данный момент бесплатный!!!
P.S. лично мне нравится этот аскетичный и функциональный интерфейс. Рекомендую.

Перекодирования видео под Windows (под Linux полностью аналогично!) .
С использованием графического интерфейса:
1. Заходим В Медиа-> Конвертировать/Сохранить  (или просто Ctrl+R)

2. Затем выбрать любой видео файл, и выбирамем действие "Поток" или просто нажать ALT+S.

3. В появившемся окне  можно перейти в "Пути назначения" и выставить куда вещать. Если нас интерисует локальное перекодирование то выбираем "файл". Примечательно, что можно добавить перекодирование сразу в несколько форматов да еще и вещать паралельно по сети несколькими способами, при условии, что Ваш комп выдержит :). Также можно выбрать один из стандартных провилей для кодирования или создать свой.


Либо более ничего не менять и просто сразу перейти к вкладке Options, и в поле ввести следующий код:

:sout=#transcode{width=320,canvas-height=240.vcodec=mp4,vb=800,scale=1,acodec=mp4a,ab=128,channels=2,samplerate=44100}:std{access=file,mux=ts,dst=%input_video%}
После чего запускается кодирование:
Если же нам нужно кодировать очень много, то можно написать BAT-файл
Содержимое BAT-файла для запуска кодирования одного файла (Эту же команду можно выполнить просто в cmd)

"C:\\Program Files (x86)\VideoLAN\VLC\vlc.exe" -vvv "C:\\in.avi" :sout=#transcode{vcodec=h264,vb=800,scale=1,width=320,height=240,acodec=mp4a,ab=128,channels=2,samplerate=44100}:std{access=file,mux=mp4,dst=C:\\out.mp4}" vlc://quit
Где
C:\\Program Files (x86)\VideoLAN\VLC\vlc.exe Путь к VLC (обязательны кавычки "", они нужны для того, чтобы указать путь к файлу, так как многие папки с пробелами, кавычки не позволят прерывать исполнение процесса на месте этих пробелов, а после буквы диска не забывайте про двойной слеш \\).
E:\\in.avi путь к исходному видео файлу.
E:\\out.mp4 путь к исходящему файлу c расширением *.mp4.
vlc://quit команда для закрытия VLC после процесса кодирования.

Если нужно перекодировать много файлов, то можно наваять такого типа батник, который после завршения кодирования сам выключит компьютер через 2 минуты:

"C:\\Program Files (x86)\VideoLAN\VLC\vlc.exe" -vvv "C:\\in-1.avi" :sout=#transcode{vcodec=h264,vb=800,scale=1,width=320,height=240,acodec=mp4a,ab=128,channels=2,samplerate=44100}:std{access=file,mux=mp4,dst=C:\\out-1.mp4}" vlc://quit

"C:\\Program Files (x86)\VideoLAN\VLC\vlc.exe" -vvv "C:\\in-2.avi" :sout=#transcode{vcodec=h264,vb=800,scale=1,width=320,height=240,acodec=mp4a,ab=128,channels=2,samplerate=44100}:std{access=file,mux=mp4,dst=C:\\out-2.mp4}" vlc://quit

SHUTDOWN -s -t 120
Теперь распишу более подробно параметры для кодирования:
Я опишу основные параметры, более подробно можно прочитать в офф. документации - Streaming_HowTo
В общем виде параметр для sout при кодировании выглядит так:

#transcode{[TRANSCODE_OPTIONS]}:std{[OUTPUT_OPTIONS]}" INPUT
Приведу пример немного сложнее
"C:\\Program Files (x86)\VideoLAN\VLC\vlc.exe" -I dummy -vvv E:\106037  :sout="#transcode{venc=x264{tune=zerolatenle=baseline,level=3,trellis=2},vcodec=h264,fps=30,deinterlace=blend,vb=800,width=,height=480,acode
=2,threads=2}:duplicate{dst=std{access=file,mux=ts,dst=E:\new.ts}}"

И опишу опции и значения, которые здесь были использованы:
-I dummy - отключает запуск графичееского интерфейса. Выводится отдельно окно cmd с подробной инфой. Может быть полезна для отладки.
sout= - save out задает параметры, куда сохранять вывод
  #transcode{[TRANSCODE_OPTIONS]} - кодировать входной поток (в данном случае файл)
      venc=x264{tune=zerolatenle=baseline,level=3,trellis=2}
               tune=zerolatenle=baseline
               level=3 - уровень выставляется в зависимости от качества (подробнее на Wikipedia)
      vcodec=h264  - видеокодак, которым будет кодироваться
      fps=30   -  частота кадров
      deinterlace=blend
      vb=800  - битрейт видео в килобайтах
      width=  - Ширина видео, т.к. не указано , то будет кодироваться пропорционально (берется     извходного потока)
      height=480 - Высота видео на выходе в писелях
      acode=2
      threads=2
Можно также указать еще параметры для кодирования:
     aspect=16:9 - соотношение сторон (16:9, 4:3)
     acodec - аудиокодек
     ab - битрейт аудио в килобайтах
     scale=0.5 - масштаб от оригинального
     channels=2 - число каналов звука
     audio-sync - дополнительный параметр для тщательной синхронизации аудиопотока с видео
  :duplicate{[DUPLICATE_OPTIONS]} - дублировать выходной поток
      dst=std{access=file,mux=ts,dst=E:\new.ts} - указывается куда дублируется поток
              access=file  - писать в файл
              mux=ts - формат контейнера. Подробнее  Output method / muxer matrix
              dst=E:\new.ts - указываем в какой файл будет выполняться запись


Ссылки:
Офф. сайт VLC
Скины на vlc на офф. сайте
Wiki VLC
Кодирование видео в VLC
Стабильное вещание IPTV через VLC
И практически оффтоп 
Как тратить меньше времени на просмотр видео и прослушивание аудиокниг - ускорение видео и аудио при просмотре, восприятие и мнения людей.
Захват видео с сетевых камер, часть 2 -Описание работы протоколов RTSP и RTCP  (пример приведен для VLC и сетевой камеры с поддержкой RTSP)

1 комментарий:

  1. Однозначно +.
    Однозначно в закладки.

    Много времени пользуюсь этим проигрывателем но таки всех функций так и не знал

    Спасибо автору за это

    P.S. И сразу вспомнилось @СПАСИБОПУТИНУЗАЭТО ж)

    ОтветитьУдалить