gpt4 book ai didi

android - 在 Android 上解码 RTP 流 (MPEG4)

转载 作者:太空狗 更新时间:2023-10-29 13:36:16 26 4
gpt4 key购买 nike

大家好,我希望你能帮我解决这个问题。

问题:我有一个 RTP 流,我正在我的专用网络 (WiFi) 上进行多播。我想使用一些 android 平板电脑来显示流。平板电脑的数量不能受到限制,质量不应随着客户数量的增加而降低。这解释了为什么我需要多播而不是单播。

方法:理论上,通过在服务器端创建 RTSP 或 HTTP 流,我应该能够为我的客户提供视频。但是,我的理解是,当太多客户端同时连接时,服务器会受到性能影响,我需要避免这种情况。理想情况下,我希望所有客户端都简单地监听同一个多播。这样客户端的数量不会对服务器性能产生影响。 [注意:IP 是本地的,TTL 设置为 0/1,所以除了我自己的网络之外,没有多播数据包堵塞任何其他网络的危险。]

实现为了实现上述方法,我想在 Android 中编写一个多播客户端来接收 RTP 数据包并将流拼接在一起。我用 JPEG 有效负载尝试了这个,效果很好。然而,JPEG 的问题是调用 BitmapFactory.decodeByteArray 来解码每个帧非常昂贵(几乎 100 毫秒!),这大大限制了帧速率。网络负载也相当高,因为 JPEG 不是一个好的视频流协议(protocol)。

我想做的是为视频做我已经为图片做的事情,即将来自 RTP 数据包的有效负载流(例如 MPEG4)拼接在一起并将其提供给“某物”。最初我认为 VideoView 可以使用原始输入流,但我错了,VV 似乎只能使用 rtsp 或 http url(正确吗?)。

解决方案?现在,我有什么选择?由于上述原因,我想避免从原始 RTP 流设置 RTSP 服务器并为所有平板电脑提供服务。我确实环顾四周并检查了 SO 和网上提出的所有解决方案,但似乎没有任何解决方案适用于我的问题(在大多数情况下,RTSP url 或单播是解决方案,但我认为我不能使用it) 所以我觉得终于到了问这个问题的时候了。

非常感谢任何帮助!

干杯

最佳答案

再次阅读您的帖子后,我发现了我第一次错过的东西。我将 BitmapFactory.decodeByteArray 用于来自 Axis 摄像机多播的 HTTP 上的 MJPEG。调用可以在几毫秒内完成。那里的问题是它通常希望在每次调用时都创建一个新的位图。有一种方法可以使 Bitmap 持久化,这样可以缩短时间。我只是不记得那个电话了,我的普通开发计算机目前正在被摧毁……呃,被我们的 IT 人员“升级”了,所以我不能马上告诉你,但你应该能找到它,如果你搜索了一下。我能够在 Xoom 和 Galaxy Tab 10.1 上获得 30fps,其他一些没问题。

马克·博彻mboettcher@ara.com

关于android - 在 Android 上解码 RTP 流 (MPEG4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10178638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com