尝试在 Flutter 中播放视频,给定通过 websocket 发送的 MPEG 视频流数据

问题描述 投票:0回答:1

我正在制作一个 flutter 应用程序,需要访问视频流,其中数据是 websocket 中的原始 MPEG 1 视频数据包。

我设法通过本地主机 UDP 发送数据,然后使用 flutter_vlc_player 播放该 UDP 流来使其工作。但是,这仅适用于 Android,不适用于 iOS。我尝试切换到 media_kit 但没有运气,media kit 说它支持 UDP、DATA 和原始 mpeg 视频,但没有任何关于如何指定该方法和它们的文档。我必须用于 vlc 的连接字符串是“udp/mpgv://@${InternetAddress.loopbackIPv4.address}:$port”。我想知道是否有人知道我将使用什么连接字符串来媒体工具包或使用不同的方法来执行此操作。

(更新)我已经弄清楚为什么它在 iOS 上不起作用了。在 iOS 上发送 UDP 数据包(至少是环回数据包)是非常不稳定的。 RawDatagramSockect.send 函数大多数情况下会返回 0,表示使用它时发送被阻止。我可以让它持续发送的唯一方法是每 500 个传入的 websocket 消息发送一条 udp 消息。我尝试使用 BytesBuilder 连接 500 条消息,然后将它们发送出去,但是,当我们发送时,累积数据的大小太大,无法用一条 udp 消息发送出去。

ios flutter websocket streaming vlc
1个回答
0
投票

我改用http来发送mpeg视频数据给flutter。我很担心,因为我不知道 HTTP 如何处理持续发送信息,但没关系。只需从 dart:io 制作一个 HttpServer 即可。将第一个连接移至全局变量,然后在获取 Webhook 时将数据添加到其中。我担心如何无缘无故地发送部分完整的消息或分离的块。

© www.soinside.com 2019 - 2024. All rights reserved.