Как сделать многоадресный поток записанным с помощью DirectShow? - PullRequest
1 голос
/ 12 декабря 2008

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

Эта часть захвата довольно проста (в C #) благодаря библиотеке, написанной с помощью DirectShow.Net (http://www.codeproject.com/KB/directx/directxcapture.aspx).

Вопрос, который у меня сейчас есть, как это сделать? Это та часть, на которой я застрял. Я не уверен, что делать дальше или какие шаги предпринять.

Ответы [ 3 ]

2 голосов
/ 16 января 2009

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

Здесь нужно сделать три вещи:

  1. Сжатие видео в MPEG2 или MPEG4
  2. Смешайте это в транспортный поток MPEG
  3. Трансляция

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

Часть 3 также довольно проста.

Основная проблема связана со второй частью, поскольку MPEG Transport Stream запатентован. Он лицензирован так, что вы не можете разрабатывать свободное программное обеспечение на его основе (VLC и FFMPEG нарушают эту лицензию), и вам придется заплатить несколько сотен долларов, чтобы получить копию спецификации.

Если вам нужно его развить, вам необходимо:

  • Получите копию ISO / IEC 13818-1-2000 (вы можете скачать ее в формате PDF со своего сайта), она описывает транспортный поток MPEG
  • Разработка фильтра визуализации, который принимает элементарные потоки MPEG и объединяет их в транспортный поток

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

1 голос
/ 12 декабря 2008

Для этого вам нужно настроить / записать какой-нибудь сервер потокового видео.

Я использовал VideoCapX для той же цели в моем проекте. Документация и поддержка не на высшем уровне, но это достаточно хорошо. Он использует потоковую технологию WMV. Поток называется MMS stream. Вы можете просмотреть его с помощью любого большинства медиаплееров. Я тестировал с Windows Media Player, Media Player Classics и VLC. Если вы хотите увидеть его возможности без написания какого-либо кода, взгляните на U-Broadcast , он использует VideoCapX для выполнения работы за сценой.

Я использую DirectShow.Net почти 2 года, и мне все еще трудно писать потоковый сервер из-за сложности технологии DirectShow.

Кроме WMV, вы можете взглянуть на Сервер Helix или Apple Streaming Server. Последний не бесплатный, как и WMV Streaming Server от Microsoft.

Вы также можете взглянуть на VLC или Кодировщик Windows Media для потоковой передачи прямо из приложения. Но пока я нахожу U-Broadcast, и то и другое. VLC имеет некоторые проблемы совместимости с кодеком и воспроизведением с не VLC плеера, WME имеет проблемы с запуском устройства захвата.

Удачи

ПРИМЕЧАНИЕ: я не связан с VideoCapX или его компанией, я просто счастливый пользователь.

0 голосов
/ 12 ноября 2010

http://www.codeproject.com/KB/directx/DShowStreamingServer.aspx может помочь, а http://en.wikipedia.org/wiki/VLC_media_player#cite_note-14

VLC также «должен» иметь возможность потоковой передачи с любого устройства.

...