13 лет назад 21 июля 2011 в 19:10 1601

Если у провайдера есть цифровое телевидение, значит, можно записывать трансляции при помощи ПК, а потом вырезать из них все ненужное и сохранять для последующего просмотра. Поговорим о том, как правильно это сделать, задействовав бесплатное ПО. Всякий раз, когда приходится писать о чем-то таком, что может – хотя бы даже в теории – вызвать протесты разного рода правообладателей, приходиться делать стандартную оговорку о том, что редакция журнала не одобряет пиратство. Право слово, надоело.

Полагаю, что, если в договоре с поставщиком услуг цифрового телевидения не прописан явно запрет на запись трансляций, делать это можно. В конце концов, телеиндустрия на протяжении нескольких десятков лет яростно боролась и с бытовыми видеомагнитофонами. Чем кончилась эта война, полагаю, знают все. Отмечу лишь, что явным нарушением российских законов будет распространение сделанных записей в интернете (читай – раздача в торрентах), так что не советую. Резать – режьте, но только для себя.

Полагаю, с этим мы разобрались. Перейдем к описанию процесса. Итак, дано: сигнал стандарта DVB (англ. Digital Video Broadcasting), подключиться к которому можно с обычного компьютера (т. е. в качестве среды для доставки контента применяется IP-сеть). Требуется: записать какую-либо передачу (к примеру, трансляцию футбольного матча) и почистить ее от рекламы, ненужных заставок и проч. Постараюсь обойтись без излишнего теоретизирования (желающие смогут самостоятельно повысить свой образовательный уровень – «Википедию» и поисковики еще никто не отменял). Все приложения, о которых пойдет речь ниже, бесплатные, в свое время я рассказывал о них в «Маленьких программах». Теперь настало время показать, как их можно использовать для решения конкретной задачи.

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

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

  • Программа: VLC media player 1.1.9
  • Тип: видеоплеер
  • Разработчик: VideoLAN team
  • ОС: Windows XP / Vista / 7 (32 и 64 бит), Linux, FreeBSD
  • Объем дистрибутива: 19-39 Мбайт (в зависимости от ОС)
  • Русификация интерфейса: есть (полная)
  • Адрес: www.videolan.org/vlc

Запись
Сначала открываем в плеере плей-лист, потом выводим оный при помощи горячих клавиш Ctrl + L, кликаем правой кнопкой мыши по нужному каналу в списке и выбираем пункт «Сохранить». Тут нас интересует крайняя строка «Профиль» – из выпадающего списка нужно выбрать тот, который называется «Video – MPEG-2 + MPGA (TS)». Если вы записываете трансляции регулярно, лучше создать аналогичный профиль, но с другим, легче запоминающимся, названием. Этим мы сейчас и займемся: жмем на крайнюю справа кнопку, при наведении курсора мыши на которую всплывает подсказка «Создать новый профиль». Появится окно с несколькими вкладками. На первой включаем тип инкапсуляции MPEG-TS. На второй надо проставить галку напротив пункта «Видео», а затем выбрать из выпадающего списка кодек MPEG-2.

На третьей активируем опцию «Аудио» и в качестве кодека оставляем MPEG Audio. Внимание: обязательно задействуйте на вкладках «Видеокодек» и «Аудиокодек» опции, приказывающие плееру сохранять исходные потоки без перекодирования! Теперь осталось лишь задать название профиля (пусть это будет, к примеру, For Recording) и сохранить его. Конечно, хорошо было бы обойтись без всей этой мышиной возни, но, увы, ни скопировать существующий профиль, ни сохранить его под другим именем в VLC media player нельзя. Затем нужно вернутся к плей-листу, снова щелкнуть на пункте «Сохранить» в контекстном меню канала, в появившемся диалоговом окне найти свой только что созданный профиль в соответствующем списке, задать имя файла на локальном диске и, наконец, нажать на кнопку «Начать». Все, запись пошла. Чтобы остановить ее, просто закройте плеер.

  • Программа: Cuttermaran 1.70
  • Тип: видеоредактор
  • Разработчик: Tobias Arnold
  • ОС: Windows XP / Vista / 7 (32 и 64 бит)
  • Объем дистрибутива: 1,4 Мбайт
  • Русификация интерфейса: есть (полная)
  • Адрес: www.cuttermaran.de

 

Редактирование
Трансляция сохранена, но пока что с ней сделать ничего нельзя (по идее, в природе должен существовать софт, позволяющий редактировать аудио и видео непосредственно в контейнерах PS, но все мои поиски ни к чему не привели (может, плохо искал?)). Поскольку выбранный мною видеоредактор оперирует только т. н. элементарными потоками (подробнее об этом читайте на страничке en.wikipedia.org/wiki/Elementary_stream), сначала придется разложить запись на составляющие, чем мы сейчас и займемся.

  • Программа: Project X 0.91.0.00
  • Тип: демультиплексор
  • Разработчик: dvb.matt
  • ОС: Windows XP / Vista / 7 (32 и 64 бит), Linux, FreeBSD
  • Объем дистрибутива: 2,42 Мбайт
  • Русификация интерфейса: нет
  • Адрес: project-x.sourceforge.net

Задача решается при помощи так называемых программ-демультиплексоров (иногда их называют демуксерами от англ. сокр. demux). Нельзя сказать, что наблюдается дефицит такого рода ПО. Перепробовав около десятка приложений, я остановился в итоге на оупенсорсном Project X, который, по словам автора, как раз и создан для обработки записей цифрового телевидения. Он всегда сохраняет синхронизацию аудио и видео, даже если происходили выпадения сигнала (когда на некоторое время исчезает или картинка, или звук, а бывает, что и то и другое). С шириной канала это не связано (как правило, при обмене данными в локальной сети провайдера скорость порта устанавливается в 100 Мбит/с), выпадения являются следствием высокой загрузки сервера, который «раздает» трансляции цифрового ТВ.

Так вот, «битые» записи Project X раскладывает на потоки без проблем; если выпадения были кратковременными (десятые доли секунды), после обработки вы вообще можете их не заметить. Это достоинство программы с лихвой перекрывает все ее недостатки (надо сказать, немногочисленные). Для работы она требует наличия в системе пакета Java RE, найти последнюю версию которого всегда можно на страничке www.java.com/ru/download/manual.jsp. Установка демуксера сводится к распаковке в любую удобную папку на диске содержимого загруженного архива ZIP. Для запуска нужно дважды кликнуть на файле ProjectX.jar (если будете пользоваться приложением регулярно, лучше сразу создайте для него ярлык на «Рабочем столе»).

Сам процесс достаточно прост. Прежде всего откроем контейнер (файл с расширением *.ps, который получился при записи трансляции) при помощи пункта меню File > Add или клавиатурного сокращения Ctrl + O. Затем определимся с папкой для сохранения извлеченных потоков. Для этого сначала нажмем на кнопку с зелененьким «плюсиком» в нижней части программного окна, снабженную всплывающей подсказкой «Add directory to recent output directory list», потом укажем нужный каталог на винчестере, а затем выберем его из раскрывающегося списка. Особого смысла ковыряться в опциях (которых, к слову, очень много) нет – разве что можно включить автоматическую генерацию индекса для видеоредактора, который будет использоваться в дальнейшем (для этого надо зайти в Presettings > Extern и проставить галку напротив пункта Cuttermaran info Version: 1.61ff). Остальное лучше не трогать, поскольку с контейнерами, созданными при помощи VLC media player, программа превосходно справляется и без дополнительной настройки.

После всех этих манипуляций самым разумным будет нажать на кнопку Quick Start и дождаться завершения демультиплексирования (к примеру, на моей машине Intel Core i5-650, 8 Гбайт RAM, Windows 7 x64 обработка записи в стандарте DVB длительностью около 15 ч занимает минут 25). В результате на диске появляются новые файлы с именем, соответствующим исходному, и расширениями *.m2v (видео), *.mp2 (аудио), *.m2v.info (тот самый индекс), а также еще один текстовый, в котором Project X сохраняет свой лог. Возможностей у данного демуксера намного больше, чем описано в этой небольшой статье. Но поскольку для решения нашей задачи они нам не пригодятся, то тратить на них ценную журнальную площадь сейчас не стоит.

Монтаж
Ну что ж, пациент подготовлен, но переходить непосредственно к запланированному хирургическому вмешательству пока еще рано. «Резать» будем при помощи инструмента под названием Cuttermaran, который также требуется немного подготовить. Для начала его надо установить в систему – тут никаких трудностей возникнуть не должно. При первом запуске автоматически выбирается английский язык интерфейса, для переключения на русский задействуйте соответствующий пункт в меню Languages, а потом перезапустите программу, чтобы произведенные изменения вступили в силу.

Окно редактора разделено на несколько частей. Наверху, сразу под главным меню, выводятся различные сведения об открытых потоках (имена файлов, задействованные кодеки, битрейты, частоты дискретизации, общая длительность и т. д. и т. п.). Так как в данном конкретном случае толку от этой инфы никакой, смело убирайте ее с глаз долой («Окна» > «Информация о потоке»). Область current frame (как видите, русская локализация неполная) предназначена для просмотра видео, а в той, что расположена немного левее, под названием «Последний кадр», отображается последний отмеченный фрейм. Под этим хозяйством находится «Балка прокрутки» для перемещения по загруженным файлам (несколько корявое имя, не находите? – Прим. автора). В правой части поселилась панель инструментов «Навигация». Наконец, в самом низу расположен монтажный лист «Список фрагментов».

  • Программа: ImagoMPEG-Muxer 1.1
  • Тип: мультиплексор
  • Разработчик: ImagoX
  • ОС: Windows XP / Vista / 7 (32 и 64 бит)
  • Объем дистрибутива: 190 Кбайт
  • Русификация интерфейса: нет
  • Адрес: www.videohelp.com/tools/ImagoMPEG-Muxer

Теперь надо настроить перекодирование видеосигнала, поскольку без этого не всегда возможно установить желаемые границы фрагмента. Дело здесь вот в чем: в видеопотоке есть т. н. группы картинок GOP (от англ. Group of Pictures), которые состоят из кадров нескольких типов. I.frame (от англ. Intra-coded Picture) – это сжатая картинка, для распаковки которой не нужна дополнительная информация. P.frame (от англ. Predicted Picture) содержит в себе только изменения, произошедшие в видеосигнале после предшествующего кадра, и для построения изображения требует раскодирования предыдущего фрейма. Наконец, B.frame (от англ. Bi-predictive Picture) использует информацию как из предшествующего, так и из последующего кадров. Подробнее об этом можно почитать на страничках en.wikipedia.org/wiki/Group_of_pictures и en.wikipedia.org/wiki/Video_compression_picture_types.

Фрагмент всегда должен начинаться с кадра I, а заканчиваться – кадром I или P. Может запросто получиться так, что при «нарезке» нужная точка просто не содержит фреймов требуемого типа. А это, в свою очередь, приведет к тому, что, например, при удалении рекламного ролика придется либо отрезать идущий после него кусок «полезной» записи до того места, где находится ближайший подходящий фрейм, либо оставить секунду-другую чего-то лишнего. Хочу подчеркнуть, что это не является недостатком Cuttermaran, это ограничение формата сжатия. Решить проблему можно только созданием кадра нужного типа, то есть перекодированием. Вы спросите: а как же качество, ведь оно теряется при этой операции… Да, все верно, но тут я просто обязан воспеть хвалу создателям Cuttermaran. Они сделали так, что при перекодировании создается только одна группа картинок GOP в нужной точке, а остальной видеопоток остается нетронутым! Гениально.

Нам потребуются кодировщик, который «дружит» с нашим видеоредактором. Если мы хотим обойтись только бесплатным софтом, то выбора нет: заходите на страничку www.bitburners.com/
QuEnc и качайте дистрибутив QuEnc v0.72. Это просто архив ZIP, который надо распаковать в любое удобное место на диске. Кроме того, потребуется еще дополнительный инструмент – фреймсервер Avisynth, который проживает здесь: sourceforge.net/projects/avisynth2/. После инсталляции последнего надо в видеоредакторе зайти в «Операции» > «Установки» > Encoding, проставить галку напротив пункта «Включить режим кодирования» и выбрать в списке QuEnc 0.70-0.72. Вот теперь все готово.

Для загрузки потоков следует нажать кнопку со стандартным значком и всплывающей подсказкой «Открыть видео». Нужно указать только файл с видео (*.m2v) – звук «подцепится» автоматически. Для быстрого перемещения используется ползунок в «Балке прокрутки», который захватывается мышкой и перетаскивается в нужное место. Клик по панели правее этого самого ползунка сдвигает текущую позицию вперед, а левее – соответственно, назад на 25 кадров (по умолчанию). Границы фрагмента выбираются кнопками «Установить точку старта» и «Установить точку финиша» в панели инструментов. Для добавления оного в монтажный лист имеется кнопка с «плюсиком». Запомните: выделять нужно только те участки, которые требуется сохранить. Все, что не отмечено, будет удалено.

Дальнейшие действия зависят от того, что именно вы монтируете. Если это фильм, запись спортивного соревнования или какая-то передача, то после того, как будут отмечены все нужные участки, надо просто задействовать пункт меню «Операции» > «Резать видео / аудио», указать в открывшемся диалоговом окне имя результирующего видеофайла *.m2v (обрезанный звук будет называться точно так же, но получит другое разрешение *.mp2), папку для размещения оного на диске, а потом нажать на кнопку «Старт». Если же вы, например, вырезаете видеоклипы, то каждый из них придется обрабатывать по отдельности. Это, в общем, несложно, только возни много. Потребуется определить нужный фрагмент в монтажном листе, кликнуть по нему правой клавишей мыши, выбрать «Вырезать выбранные позиции», а потом повторить данный набор операций со всеми остальными предварительно отмеченными участками.

Да, чуть не забыл: рекомендую во время работы в Cuttermaran время от времени сохранять проект, поскольку иногда (правда, очень редко) софтина беспричинно подвисает, ругаясь на отсутствие аудиокодека. Вывести ее из летаргического сна можно только принудительным закрытием, после которого несохраненные результаты будут, понятное дело, навсегда потеряны. Вероятно, это какой-то мелкий (но досадный) баг. И еще кое-что: не забывайте, что кнопка со стилизованным значком открытия файла загружает только видеопоток. Открыть или сохранить проект можно только через пункты соответствующего меню.

Сборка
Теперь осталось только собрать «обрезанные» видео- и аудиопотоки в единый файл. Для этого идеально подходит крошечная утилитка ImagoMPEG-Muxer, которая предназначена для создания контейнеров MPG (MPEG Program Stream) или VOB (DVD-Video). Она представляет собой один-единственный экзешник, не требующий установки в систему. После запуска оного надо выбрать файл с видеопотоком кнопкой Select Video Source, ну а звук софтина найдет сама. Поскольку дополнительных аудиодорожек в нашем случае нет, можно сразу после открытия исходников запустить процесс кнопкой Multiplex.

Добавлю, что сей муксер нетрудно подружить с Cuttermaran. Для этого надо в видеоредакторе включить на вкладке Muxing в пункте меню «Операции» > «Установки» соответствующую опцию, выбрать в выпадающем списке название утилиты и указать путь к исполняемому файлу ImagoMPEG-Muxer.exe. Тем, кто не планирует дальнейшую обработку, вероятно, именно так и следует поступить, чтобы свести к минимуму ручной труд. Обращаю ваше внимание на то, что при таком варианте «обрезанные» потоки будут сохраняться в той папке, которую вы выбрали для них ранее в настройках Cuttermaran, а результаты сведения – в другой директории, которая прописана в табе Muxing видеоредактора. Если не хотите потом чистить диск от ненужных исходников, лучше сразу включите в последней вкладке опцию «Удалить исходные потоки».

Вот, пожалуй, и все. Как видите, мы прекрасно обошлись только бесплатными инструментами, чтобы решить непростую, в общем-то, задачу. Описанный в статье алгоритм проверен мною неоднократно и работает превосходно. Так что удачных вам нарезок! Ну а правильный рецепт вы теперь знаете (смайл). UP

Никто не прокомментировал материал. Есть мысли?