Java 将视频帧分块传输,然后重新组合?

Java 将视频帧分块传输,然后重新组合?,java,Java,希望你们每个人都做得很好。我真的需要你们的帮助。我的情况如下 1-我正在从我的相机获取连续数据(字节数组[])。 2-现在通过UDP发送字节[],但我必须将该数组减半,因为我无法发送那个大数组。(注意,我不能使用JMF,因为我的设备(服务器端)不支持JMF,所以必须通过UDP手动发送字节[]) 3-我正在客户端接收字节[]块 现在我有以下要求 -我希望客户端有一个播放器,可以连续播放我的这些字节[]块(在客户端我可以使用JMF) 现在我不知道如何在客户端合并所有这些byte[]块,以便我的视频能

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

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

现在我有以下要求

-我希望客户端有一个播放器,可以连续播放我的这些字节[]块(在客户端我可以使用JMF)

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

请像你们一样帮助我

致意
ZB

作为一种选择,您可以考虑视频流。


如何用VLC播放器从摄像机中传输媒体,这也是有意义的。

作为一种选择,你可以考虑视频流。


如何使用VLC播放机从摄像头传输媒体,这可能也会引起一些兴趣。

如果您通过UDP传输,我假设您知道有关订购和丢弃数据包的标准注意事项

我将以以下方式发送数据

定义一种数据报格式,它有一个报头和有效载荷,报头非常简单,如

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

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

然后将有效负载加载到缓冲区中。我会尝试创建一个对象,该对象将数据包编号作为密钥和字节数组,然后将这些对象的双链接列表作为缓冲区。您可以使用数据包编号查看在列表中插入的位置,并回放数据包编号最低的对象

您需要为包号重置等和流控制定义一些控制数据


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

如果您是通过UDP传输,我假设您知道有关订购和丢弃数据包的标准警告

我将以以下方式发送数据

定义一种数据报格式,它有一个报头和有效载荷,报头非常简单,如

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

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

然后将有效负载加载到缓冲区中。我会尝试创建一个对象,该对象将数据包编号作为密钥和字节数组,然后将这些对象的双链接列表作为缓冲区。您可以使用数据包编号查看在列表中插入的位置,并回放数据包编号最低的对象

您需要为包号重置等和流控制定义一些控制数据


我可能因为忽略了公共库而使这个问题变得更加复杂,但这是我要遵循的逻辑。

谢谢barti的回复,但我不能使用这个,因为VLCJ的作者在回答同一个查询时回答说:“不。libvlc播放“指向”资源的MRL。你不能使用MRL“指向”Java字节数组。我的意思是,两者都使用vlc,服务器和客户端(这样您就不必发明自己的流媒体容器/编解码器);但是,如果这不是op,我就辞职。感谢barti的回复,但我不能用这个作为VLCJ的作者在同一个查询中回答的“否。libvlc播放“指向”资源的MRL。你不能使用MRL来“指向”Java字节数组。我的意思是对服务器和客户端都使用vlc(这样你就不必发明你自己的流媒体容器/编解码器);但是,如果这不是一个计划,我就辞职。