"Поддельное" устройство захвата видео DirectShow

Это касается последних нескольких вопросов, которые я задавал.

Мне нужно получить видео с IP-камеры (SNC-RZ25N) на Flash Media Server. Я бы предпочел не использовать Windows, но если это облегчит работу, я это сделаю. (Flash Media Live Encoder - это программа только для Windows.)

Я рассмотрел много разных маршрутов из точки А в точку Б, но, похоже, проще всего было бы просто использовать Flash Media Live Encoder для публикации на Flash Media Server. Тогда единственный пробел, который мне нужно преодолеть, - это получить источник видео, читаемый Flash Media Live Encoder.

Конечно, мой источник находится в сети, и FMLE ищет "совместимое с Microsoft DirectShow устройство для захвата видео". Я нашел несвободный SDK ( http://www.e2esoft.cn/vcam/vcamsdk.asp), который позволил бы мне подделать такое устройство и, надеюсь, отправить поток с камеры в FMS.

Кто-нибудь знает другую программу или SDK, который я должен использовать? Я делаю вещи более сложными, чем они должны быть?

4 ответа

Решение

На самом деле не так сложно превратить исходный фильтр DirectShow в устройство захвата. Вам необходимо зарегистрировать фильтр в нужной категории и реализовать IKsProperty, чтобы сообщить правильную категорию на выходном выводе.

Взгляните на пример фильтра источника захвата Vivek по адресу http://tmhare.mvps.org/downloads.htm

г

Ретранслятор направления "IP Video source" Романа может сделать эту работу: http://alax.info/blog/1223

Кроме того, если вы хотите написать свой собственный, вы можете использовать https://github.com/rdp/screen-capture-recorder-to-video-windows-free чтобы преодолеть одну ошибку, которую имеет vivek с флеш-плеером: http://social.msdn.microsoft.com/Forums/en/windowsdirectshowdevelopment/thread/e02d7ac9-5dfe-4f9d-8ce5-4bb73badb6ed

Поэтому в основном вам нужно реализовать IAMStreamConfig и IKsProperty, установленные на выводе, передать запросы IKsProperty на вывод и указать PIN_CATEGORY_CAPTURE Я думаю, может быть, некоторые из них вам не нужны...

Используйте "Vivek Directshow Capture Filter". Это то, что вам в основном нужно. Конечно, это очень простой пример кода. Чтобы ваш код работал с Flash Player, вам необходимо реализовать все необходимые методы, такие как SetFormat/SetMediaType, и, поскольку DirectShow - довольно дружественный интерфейс, вы потратите на него некоторое время.

Вы также можете захотеть взглянуть на Wowza Media Server, так как он намного удобнее с устройствами ввода (поддерживает прием RTP/RTSP/MPEG-TS H.264/AAC). http://www.wowzamedia.com/

Другие вопросы по тегам