我正在尝试以kafka流消息的形式发送多个.mp4
文件。
我尝试使用与处理文本消息相同的方法,但不起作用。
这是否意味着我在生产和消费时需要一个特殊的编码器/解码器/序列化器/反序列化器。我如何配置我的生产者和消费者?
发布于 2019-03-19 00:16:34
创建类似于文本文件创建的文件
通过这样做,我假设您遵循的是设置生产者和消费者的示例,通过kafka发送文本/json消息。
在您的例子中,您需要将您的视频文件/块/块序列化为字节,将原始字节发送到kafka,在消费者中读取这些字节,然后将您的视频文件/块/块反序列化回。
要通过kafka发送原始字节,需要在生产者中使用ByteArraySerializer
,在消费者中使用ByteArrayDeserializer
。
请参阅:https://kafka.apache.org/20/javadoc/index.html?org/apache/kafka/common/serialization/ByteArrayDeserializer.html https://kafka.apache.org/20/javadoc/org/apache/kafka/common/serialization/ByteArraySerializer.html
因此,在您的配置中,您需要指定属性(假设您不使用键,只使用值):生产者:
"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中,您接收该字节数组并将其保存到文件中。
发布于 2020-06-20 18:10:19
我有一个使用JS的例子。
你可以访问:https://gitlab.com/dimimpov/streaming-video-apache-kafka
基本上,您读取一个文件到字节数组,然后通过kafka,然后您流式传输字节数组到一个视频播放器,它可以播放块。
https://stackoverflow.com/questions/55224467
复制相似问题