Создание видеопотока RTSP на платформе .NET

Я хочу создать видеопоток RTSP/h264 из статических изображений и включить его в свое приложение .NET. Пока я нашел два возможных способа сделать это:

  1. Используйте ffmpeg/ffserver, но мне нужно будет скомпилировать ffserver в Windows, а затем положиться на него... и я не обязательно хочу полагаться на внешнее приложение

  2. Используйте библиотеку LIVE555 (http://www.live555.com), но у них нет библиотек .NET, поэтому мне придется приложить некоторые усилия, чтобы заставить ее работать с остальной частью моего приложения .NET.

Можете ли вы прокомментировать либо № 1, № 2, или что лучше. Есть ли более быстрый способ запустить RTSP-сервер в .NET? Я не против потратить время на разработку, если есть надежное решение, требующее времени, но было бы хорошо иметь что-то, с чем мы могли бы работать быстро, для прототипирования и демонстраций.

Спасибо,


person Goro    schedule 14.01.2011    source источник


Ответы (4)


Нужно ли это делать на лету или вы можете загрузить изображения, затем создать видео, а затем просто обслуживать видеопоток h264? Я бы просто вызвал FFMpeg из командной строки в вашем коде, вывел видео и пропустил RTSP, если можно. Если вы используете qt-faststart, вы также можете получать доступные для поиска потоки, не требуя предварительной загрузки всего MP4.

person Chris Haas    schedule 14.01.2011
comment
Это то, что должно быть на лету, так как поток должен быть в режиме реального времени 24/7. Статическое изображение используется для создания потока, и изображение будет обновляться каждые несколько минут или около того. - person Goro; 14.01.2011

1 Вы можете использовать уже скомпилированный ffmpeg/ffserver для Windows. Просто погуглите, и вы найдете множество предварительно скомпилированных библиотек для Windows.

2 Для live555 вы можете собирать библиотеки в VC6, YS2003 или VS2008. Ссылка на ссылку Как настроить и собрать код на Windows. Компиляция очень проста и занимает 1 час.

*Эти библиотеки написаны на C/C++ (неуправляемый код), чтобы использовать эти библиотеки в вашем управляемом коде, вам может потребоваться выполнить сортировку или написать какие-то интерфейсы.

person Alam    schedule 15.01.2011

Часть перекодирования h264 будет сложной частью. Для X264 для .Net не так много оболочек.

После того, как у вас есть способ кодирования, вам все равно придется пакетировать данные, чтобы заставить их работать через Rtp, который Rtsp использует для отправки мультимедиа каждому клиенту. Это означает размещение данных в RtpPackets правильным способом, который определяется RFC в данном случае http://tools.ietf.org/html/rfc6184

У меня есть RtspClient и RtspServer на С#, которые могут доставить вам отдельные пакеты, чтобы вы могли передать их декодеру.

Для этого также есть статья codeproject здесь http://www.codeproject.com/Articles/507218/Managed-Media-Aggregation-using-Rtsp-and-Rtp

VLC — это еще один вариант, поскольку он может выполнять транскодирование и предоставлять вам поток Rtsp для одновременного использования клиентами.

Ознакомьтесь с документацией VLC http://www.videolan.org/doc/streaming-howto/en/ch05.html

Если вам нужно что-нибудь еще, дайте мне знать!

person Jay    schedule 12.12.2012

Хотя это не постоянное решение, самым простым способом сделать это было встроить vlc в программу с помощью библиотек .net Process:

Dim p As New ProcessStartInfo
p.FileName = "vlc"  'Assuming vlc.exe is already in the path variable
p.Arguments = "vlc CLI options for setting up the stream"
p.WindowStyle = ProcessWindowStyle.Hidden
Process.Start(p)
person Goro    schedule 17.01.2011