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
我尝试了很多视频接收器,但遇到了错误:
- glimagesink:
Error received from element udpsrc0: could not open resource for reading
显示在设备屏幕上,当我在信息日志中搜索时,我看到 ... gst_udpsrc_open:<udpsrc0> error: no socket error: Unable to create socket: Permission denied
- autovideosink: 我在信息日志中看到了与以前相同的错误,但屏幕上没有显示错误消息,我在错误日志中有一个错误:
... /tutorial-3.c:202:app_function Could not retrieve video sink
.也许这个错误有更高的优先级?
- fpsdisplaysink: 与 autovideosink 相同。
但是所有这些视频接收器都使用默认管道 (videotestsrc ! warptv ! videoconvert ! autovideosink
),这就是为什么我不太明白错误的来源。
如果有人知道如何检测问题的根源或如何解决问题,我很感兴趣。如果我不清楚,请不要犹豫问我。谢谢!
我发现了我的错误并且很容易修复它:我的管道是正确的,我忘记了 Internet 权限所以我只是将这一行添加到 AndroidManifest.xml 文件中:
<uses-permission android:name="android.permission.INTERNET"/>
我正在使用 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
我尝试了很多视频接收器,但遇到了错误:
- glimagesink:
Error received from element udpsrc0: could not open resource for reading
显示在设备屏幕上,当我在信息日志中搜索时,我看到... gst_udpsrc_open:<udpsrc0> error: no socket error: Unable to create socket: Permission denied
- autovideosink: 我在信息日志中看到了与以前相同的错误,但屏幕上没有显示错误消息,我在错误日志中有一个错误:
... /tutorial-3.c:202:app_function Could not retrieve video sink
.也许这个错误有更高的优先级? - fpsdisplaysink: 与 autovideosink 相同。
但是所有这些视频接收器都使用默认管道 (videotestsrc ! warptv ! videoconvert ! autovideosink
),这就是为什么我不太明白错误的来源。
如果有人知道如何检测问题的根源或如何解决问题,我很感兴趣。如果我不清楚,请不要犹豫问我。谢谢!
我发现了我的错误并且很容易修复它:我的管道是正确的,我忘记了 Internet 权限所以我只是将这一行添加到 AndroidManifest.xml 文件中:
<uses-permission android:name="android.permission.INTERNET"/>