J'essaye de diffuser la vidéo h264 sur le réseau en utilisant gstreamer (dans Windows) sur UDP. Tout d'abord si j'utilise un pipeline comme celui-ci, tout semble ok, et je vois le motif de test:Utilisation de udpsink pour streamer h264 avec gstreamer (C++)
videotestsrc, ffmpegcolorspace, x264enc, rtph264pay, rtph264depay, ffdec_h264, ffmpegcolorspace, autovideosink
Maintenant, j'ai décidé de divisez ce pipeline en parties client et serveur, en transmettant le flux sur udp en utilisant udpsink et udpsrc.
Server: videotestsrc, ffmpegcolorspace, x264enc, rtph264pay, udpsink
Client: udpsrc, rtph264depay, ffdec_h264, ffmpegcolorspace, autovideosink
Sur le serveur j'utiliser quelque chose comme ça:
source = gst_element_factory_make ("videotestsrc", "source");
ffmpegcolortoYUV = gst_element_factory_make ("ffmpegcolorspace", "ffmpegcolortoYUV");
encoder = gst_element_factory_make ("x264enc", "encoder");
rtppay = gst_element_factory_make ("rtph264pay", "rtppay");
udpsink = gst_element_factory_make ("udpsink", "sink");
g_object_set (source, "pattern", 0, NULL);
g_object_set(udpsink, "host", "127.0.0.1", NULL);
g_object_set(udpsink, "port", 5555, NULL);
Puis-je ajouter les éléments à la canalisation et d'exécution, il n'y a pas d'erreurs partout. Maintenant, si je cherche le port UDP 5555, il n'écoute pas !!!!
La partie client s'exécute également mais s'il n'y a pas de port UDP à l'écoute côté serveur, cela ne fonctionnera pas.
EDIT: En fait j'étais très proche de la solution ... Si je démarre le client cela fonctionne, mais avec quelques problèmes sur la visualisation ... Je pense que le problème est la configuration de x264enc. Quelqu'un sait comment changer les paramètres x264enc comme la vitesse prédéfinie ou le réglage? J'ai essayé d'instancier GstX264EncPreset ou GstX264EncTune mais je n'ai pas les déclarations de ces strcutures. Quelqu'un sait-il un moyen de configurer x264enc d'une autre manière, comme analyser une chaîne ou quelque chose comme ça?