我正在尝试学习有关gstreamer的一些知识,现在我正在使用gstreamer接收视频流,该视频流是由vlc Player通过udp进行流式传输的。为了做到这一点,我编写了以下代码。
playbin = gst_element_factory_make("playbin2", "play");
g_object_set(G_OBJECT(playbin), "uri", uri.c_str(), NULL);
bus = gst_pipeline_get_bus(GST_PIPELINE(playbin));
gst_bus_add_watch(bus, &bus_watcher, NULL);
gst_object_unref(bus);
gst_element_set_state(GST_ELEMENT(playbin), GST_STATE_PLAYING);
问题是无法显示视频。如果显示灰色(黑色/绿色/蓝色等)屏幕,则显示的唯一内容。有时可能会看到一些数字在移动。声音的情况要好一些。在大多数情况下,它是可识别的。我尝试设置“ buffer-duration”和“ buffer-size”之类的属性,但我能提到的唯一效果是声音质量的提高。
还有一件事情。我尝试使用普通的playbin(不是playbin2),但效果更好。至少声音质量提高了。
也许有人知道如何解决这个问题?
最佳答案
您可能想要向应用程序添加视频接收器和音频接收器,并更好地控制正在发生的事情。
Example 2.1是显示该操作的python应用程序。