如何使用Kafka流式传输视频文件?

pbpqsu0x  于 2021-06-06  发布在  Kafka
关注(0)|答案(2)|浏览(1488)

我正试图发送多个 .mp4 文件作为Kafka流消息。
我试着用和发短信一样的方法,但没有成功。
这是否意味着我需要一个特殊的编码器/解码器/序列化/反序列化,而生产和消费。如何配置生产者和消费者?

rhfm7lfc

rhfm7lfc1#

我有一个使用js的例子。
您可以访问:https://gitlab.com/dimimpov/streaming-video-apache-kafka
基本上,你读取一个文件到字节数组,然后通过Kafka,然后你流字节数组到一个视频播放器,它可以播放块。

xvw2m8pv

xvw2m8pv2#

创建类似于文本文件创建的文件
由此,我假设您正在以下示例中设置producer和consumer,通过kafka发送text/json消息。
在您的情况下,您需要将视频文件/片段/区块序列化为字节,将原始字节发送给kafka,读取consumer中的字节,然后反序列化您的视频文件/片段/区块。
要通过kafka发送原始字节,需要使用 ByteArraySerializer 在生产商和 ByteArrayDeserializer 在消费者中。
请参见:https://kafka.apache.org/20/javadoc/index.html?org/apache/kafka/common/serialization/bytearraydeserializer.htmlhttpshttp://kafka.apache.org/20/javadoc/org/apache/kafka/common/serialization/bytearrayserializer.html
因此,在配置中需要指定属性(假设不使用键,只使用值):producer:

"key.serializer":"org.apache.kafka.common.serialization.StringSerializer"
"value.serializer":"org.apache.kafka.common.serialization.ByteArraySerializer"

消费者:

"key.deserializer":"org.apache.kafka.common.serialization.StringDeserializer"
"value.deserializer":"org.apache.kafka.common.serialization.ByteArrayDeserializer"

如果您只想发送一个mp4文件,请将其读取为如下字节(在java中):file to byte[]in java

byte[] array = Files.readAllBytes(new File("/path/to/file").toPath());

另一方面,在consumer中,接收字节数组并将它们保存到文件中。

相关问题