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

Apache kafka 如何使用Kafka流式传输视频文件?,apache-kafka,video-streaming,Apache Kafka,Video Streaming,我正在尝试将多个.mp4文件作为卡夫卡流消息发送。 我试着采用与短信相同的方法,但没有成功 这是否意味着我在生产和消费时需要一个特殊的编码器/解码器/序列化器/反序列化器。我如何为此配置生产者和消费者 创建类似于文本文件创建的文件 由此,我假设您正在以设置生产者和消费者为例,通过kafka发送文本/json消息 在您的情况下,您需要将视频文件/片段/区块序列化为字节,将原始字节发送给kafka,读取消费者中的字节,然后反序列化视频文件/片段/区块 要通过kafka发送原始字节,需要在produc

我正在尝试将多个
.mp4
文件作为卡夫卡流消息发送。
我试着采用与短信相同的方法,但没有成功

这是否意味着我在生产和消费时需要一个特殊的编码器/解码器/序列化器/反序列化器。我如何为此配置生产者和消费者

创建类似于文本文件创建的文件

由此,我假设您正在以设置生产者和消费者为例,通过kafka发送文本/json消息

在您的情况下,您需要将视频文件/片段/区块序列化为字节,将原始字节发送给kafka,读取消费者中的字节,然后反序列化视频文件/片段/区块

要通过kafka发送原始字节,需要在producer中使用
ByteArraySerializer
,在consumer中使用
ByteArraySerializer

见:

因此,在配置中,您需要指定属性(假设您不使用键,只使用值): 制作人:

"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):


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

我有一个使用JS的示例

您可以访问:


基本上,您先读取一个文件到字节数组,然后通过kafka,然后将字节数组流式传输到一个视频播放器,它可以播放块。

能否显示您的制作人和消费者代码和配置?请,在你的问题中添加更多细节,以确保你得到最相关的答案,并让这个问题对SO社区有用。将大文件流式传输到Kafka(这些视频通常相当大)并不常见。AK的默认记录大小为1MB,如果要发送较大的记录,需要在代理上将
max.message.bytes
设置为较大的数字。请记住,发送较大的记录将导致较长的GC暂停。您确定要将视频发送给卡夫卡吗?将文件放在共享存储(如S3)上,并传递引用资产的元数据如何?嗯,不建议通过卡夫卡传输如此大的文件,即视频或大量音频。相反,您应该考虑将文件存储到其他位置并在卡夫卡队列中传递引用,正如克里斯所提到的。String序列化程序/反序列化器与文本文件很好,我们如何处理MP4格式文件。我们需要编解码器代码等…我刚才告诉过你。MP4文件->字节数组->卡夫卡->字节数组->MP4文件您使用什么语言?认真地说,请编辑您的问题,并提供更多关于您正在做什么、如何做、您研究了什么以及您已经尝试了什么的信息。
byte[] array = Files.readAllBytes(new File("/path/to/file").toPath());