Nous essayons de faire fonctionner Gstreamer sur un DM368 Leopardboard *. Nous avons réussi à le persuader de créer une vidéo de test (videotestsrc), de la coder et de la transférer dans un fichier.
Le tuyau qui a fonctionné est:
gst-launch -v videotestsrc num-buffers=100 ! queue ! ffenc_mpeg4 bitrate=800000 ! ffmux_mp4 ! filesink location=video_test.mp4
La prochaine étape consiste à modifier le tuyau afin de diffuser la carte de test sur le réseau, pour pouvoir être visualisé sur un PC avec VLC en utilisant quelque chose comme rtsp: // ip_addr: port/nom de flux , mais la documentation sur la façon de procéder semble assez sur le terrain (et souvent obsolète), et les exemples semblent brouiller le code source et les moyens de le faire en ligne de commande.
J'admets volontiers que plus de 50% du problème provient de notre manque de connaissance de Gstreamer et de ses différentes parties. J'ai toujours constaté que, si j'ai un exemple concret pour commencer, je peux le cogner avec des bâtons et régler le reste. De là.
J'ai jusqu'ici:
gst-launch -v videotestsrc ! queue ! ffenc_mpeg4 bitrate=800000 ! rtpmp4vpay ! tcpserversink Host=<PC_ip> port=5000
Ce qui semble faire quelque chose se produire dans VLC (avec tcp: // board_ip: port ) - il semble penser qu'il se passe quelque chose (ne génère pas d'erreur) mais ne joue pas/ne montre pas n'importe quoi. Lorsque je romps (^ C) le premier processus, VLC le remarque.
Donc, fondamentalement, toute orientation/rétroaction serait géniale, une seule ligne de travail serait fantastique.
Modifié pour ajouter: Oui, je vois l'exemple test_video.c, mais il s'agit de la compilation d'un programme spécial pour effectuer quelque chose qui ressemble à la possibilité d'appeler simplement à partir de la ligne de commande pour prouver le concept.
* = Linux version 2.6.32-17-ridgerun /CPU: ARM926EJ-S
Enfin trouvé un exemple de travail ici:
Mais cela nécessite de créer un fichier .SDP pour VLC et de spécifier des adresses IP, ce qui n’est pas vraiment ce que nous voulons faire. Mais c’est un début!
Source : Contrairement à RTP, un serveur RTSP négocie la connexion entre un serveur RTP et un client à la demande ( Link ). Le gst-rtsp-server n'est pas un plugin gstreamer, mais une bibliothèque qui peut être utilisée pour implémenter votre propre application RTSP. Le scénario de test suivant a été appliqué sur une machine Ubuntu 12.04.5:
autoconf automake autopoint libtool
et les autres outils de construction essentiels manquantsgit clone git://anongit.freedesktop.org/gstreamer/gst-rtsp-server && cd gst-rtsp-server
git checkout remotes/Origin/1.2
./autogen.sh --noconfigure && GST_PLUGINS_GOOD_DIR=$(pkg-config --variable=pluginsdir gstreamer-plugins-bad-1.0) ./configure && make
(Pour une raison quelconque, GST_PLUGINS_GOOD_DIR n'est pas défini par pkg-config, nous l'avons donc explicitement défini)cd examples && ./test-launch "( videotestsrc ! x264enc ! rtph264pay name=pay0 pt=96 )"
rtsp://Host_IP:8554/test
J'ai eu un problème à la fin du processus, quelque chose comme:
J'ai trouvé la solution dans ce post:
Et cela a fonctionné parfaitement !!!