2011-01-14 5 views
0

Je veux créer un flux vidéo RTSP/H264 à partir d'images statiques, et l'intégrer dans mon application .NET. Jusqu'à présent, j'ai trouvé deux façons de le faire:Créer un flux vidéo RTSP sur une plate-forme .NET

  1. Utilisez ffmpeg/ffserver, mais je aurais besoin de compiler ffserver sur les fenêtres, puis compter sur elle ... et je ne veux pas nécessairement compter sur une application externe

  2. Utilisez la bibliothèque LIVE555 (http://www.live555.com), mais ils ne disposent pas de bibliothèques .NET, je dois donc faire des efforts pour la faire fonctionner avec le reste de mon application .NET.

Pouvez-vous commenter soit # 1, # 2, ou ce qui est mieux. Existe-t-il un moyen plus rapide d'afficher un serveur RTSP dans .NET? Cela ne me dérange pas de mettre du temps de développement s'il y a une solution solide qui prend du temps, mais il serait bon d'avoir quelque chose avec lequel nous pouvons travailler rapidement, pour le prototypage et les démonstrations.

Merci,

Répondre

1

Est-ce besoin d'être fait à la volée ou pouvez-vous avoir les images téléchargées, puis une vidéo créée et servent juste un flux vidéo h264? Je voudrais juste appeler FFMpeg à partir d'une ligne de commande dans votre code et sortir une vidéo et passer le RTSP si vous le pouvez. Si vous utilisez qt-faststart, vous pouvez également obtenir des flux de recherche sans avoir à télécharger tout le MP4 en premier.

+0

Ceci est quelque chose qui doit être à la volée, car le flux devra être en temps réel 24/7. Une image statique est utilisée pour générer un flux, et l'image sera mise à jour toutes les quelques minutes. – Goro

1

1 Vous pouvez utiliser déjà compilé ffmpeg/ffserver pour Windows. Il suffit de google et vous pouvez trouver beaucoup de bibliothèques précompilées pour Windows.

2 Pour LIVE555 vous pouvez construire des bibliothèques dans VC6, YS2003 ou VS2008. Reportez-vous au lien Comment configurer et générer le code sur la fenêtre s. La compilation est très simple et son travail d'une heure.

* Ces bibliothèques sont écrites en C/C++ (code non géré) pour utiliser ces bibliothèques dans votre code managé. Vous devrez peut-être faire du marshalling ou écrire des types d'interfaces.

0

Bien que ce n'est pas une solution permament, la meilleure façon de le faire jusqu'à présent était d'intégrer vlc dans le programme en utilisant les bibliothèques de processus .net:

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) 
1

La partie H264 transcoder va être partie difficile. Il n'y a pas beaucoup de wrappers pour X264 pour .Net.

Une fois que vous avez un moyen de coder, vous devez encore mettre en paquets les données pour que cela fonctionne sur Rtp, ce que RTSP utilise pour envoyer le média à chaque client. Cela signifie mettre les données dans RtpPackets de la manière correcte qui est déterminée par la RFC dans ce cas http://tools.ietf.org/html/rfc6184

J'ai un RtspClient et RtspServer dans C# qui peut vous obtenir les paquets individuels afin que vous puissiez les obtenir à un décodeur.

Il y a aussi un article CodeProject ici pour http://www.codeproject.com/Articles/507218/Managed-Media-Aggregation-using-Rtsp-and-Rtp

VLC est une autre option, car elle peut faire le transcoder et vous fournir un flux RTSP pour les clients à consommer en même temps.

Vérifiez la documentation VLC http://www.videolan.org/doc/streaming-howto/en/ch05.html

Si vous avez besoin quelque chose d'autre laissez-moi savoir!