Android 使用 RTP 和 h264 的 GStreamer 管道问题

GStreamer pipeline issues for Android using RTP and h264

我正在使用 GStreamer 开发一个 Android 应用程序,我在接收视频流的管道方面遇到了一些问题。我从 GStreamer 开始,这就是为什么我使用 Tutorial 3 for Android 并且我尝试尽可能少地修改代码,因为我不掌握它。

简要总结:我的服务器使用 GStreamer 管理视频流并通过 RTP 将视频流发送到我的 Android 设备。视频是用h264编码的。在 Windows 上流接收成功,但在 Android 上不成功,这是我的问题。

Windows powershell 上用于接收视频流的管道(有效):

.\gst-launch-1.0.exe -v udpsrc port=5000 ! "application/x-rtp,clock-rate=(int)90000,payload=(int)96" !  rtph264depay ! avdec_h264 ! fpsdisplaysink sync=false text-overlay=true

在 Android 应用程序上使用的管道(它不起作用):

udpsrc port=5000 caps="application/x-rtp,clock-rate=90000,payload=96" !  rtph264depay ! avdec_h264 ! glimagesink

我尝试了很多视频接收器,但遇到了错误:

但是所有这些视频接收器都使用默认管道 (videotestsrc ! warptv ! videoconvert ! autovideosink),这就是为什么我不太明白错误的来源。

如果有人知道如何检测问题的根源或如何解决问题,我很感兴趣。如果我不清楚,请不要犹豫问我。谢谢!

我发现了我的错误并且很容易修复它:我的管道是正确的,我忘记了 Internet 权限所以我只是将这一行添加到 AndroidManifest.xml 文件中:

<uses-permission android:name="android.permission.INTERNET"/>