以块的形式传输视频帧然后重新组合它们?

时间:2010-12-08 11:24:33

标签: java

希望你们每个人都做得很好。我真的需要你的帮助。我的情景如下。

1 - 我从相机中获取连续数据(字节数组[])。 2 - 现在通过UDP发送那些byte []但我必须将该数组减半,因为我无法发送那个大数组。 (P.S我不能使用JMF作为我的设备(服务器端)不支持,所以必须通过UDP手动发送byte []) 3 - 我在客户端收到那些byte []块。

现在我有以下要求。

- 我希望客户端的播放器以连续的方式播放我的这些byte []块。(在客户端我可以使用JMF)

现在我不知道如何在客户端组合所有这些byte []块,以便我的视频能够连续播放。

请你们一直这样帮忙。

祝你好运 ZB

2 个答案:

答案 0 :(得分:0)

作为一种选择,您可以考虑vlcj进行视频流播放。

Examples如何使用VLC播放器从相机中流式传输媒体,这可能也有一定的兴趣。

答案 1 :(得分:0)

如果您通过UDP进行传输,我假设您了解有关订购和丢弃数据包的标准警告。

我会以下列方式发送数据。

定义一个具有标题和有效负载的数据报格式,标题非常简单,如

<packetnumber><timestamp><payloadlength>
<payload>

因此,您需要创建一个字节数组块,在附加块之前计算有效负载长度,当前数据包编号和时间戳。然后传输整个阵列,当收到它时,您可以删除数据包编号,时间戳并使用有效负载长度来检索数据。

然后将有效负载加载到缓冲区中。我很想创建一个具有数据包编号作为键和一个字节数组的对象,然后将这些对象的双重链接列表作为缓冲区。您使用数据包编号来查看插入列表的位置,并且回放您只需保持获取具有最低数据包编号的对象。

您需要为数据包编号重设等流量控制定义一些控制数据。

我可能通过忽略公共库使这变得更复杂,但这是我遵循的逻辑。