我正试图发送多个 .mp4 文件作为Kafka流消息。我试着用和发短信一样的方法,但没有成功。这是否意味着我需要一个特殊的编码器/解码器/序列化/反序列化,而生产和消费。如何配置生产者和消费者?
.mp4
rhfm7lfc1#
我有一个使用js的例子。您可以访问:https://gitlab.com/dimimpov/streaming-video-apache-kafka基本上,你读取一个文件到字节数组,然后通过Kafka,然后你流字节数组到一个视频播放器,它可以播放块。
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:
ByteArraySerializer
ByteArrayDeserializer
"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中,接收字节数组并将它们保存到文件中。
2条答案
按热度按时间rhfm7lfc1#
我有一个使用js的例子。
您可以访问:https://gitlab.com/dimimpov/streaming-video-apache-kafka
基本上,你读取一个文件到字节数组,然后通过Kafka,然后你流字节数组到一个视频播放器,它可以播放块。
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:
消费者:
如果您只想发送一个mp4文件,请将其读取为如下字节(在java中):file to byte[]in java
另一方面,在consumer中,接收字节数组并将它们保存到文件中。