使用 hbase 处理图像、视频和音频类型

Posted

技术标签:

【中文标题】使用 hbase 处理图像、视频和音频类型【英文标题】:Handling Images,Video and audio types using hbase 【发布时间】:2016-12-15 09:21:19 【问题描述】:

任何人都有任何想法,如何使用 Hbase 处理音频、视频和图像等非结构化数据。我尝试了很多,但我没有得到任何想法。感谢任何帮助。

【问题讨论】:

“处理”是什么意思?如果可能,请分享您的用例以清楚说明。 我们正在从相机中获取图像/视频。我们只需从 hadoop 中存储和检索这些图像/视频,无需任何处理。为此,哪个更好以及如何做。 这有很多答案和有用的链接 [link] ***.com/questions/16546040/… [link]***.com/questions/31399843/… [link]quora.com/… [link]quora.com/… 感谢您的回复。我需要在 hbase 中插入和访问图像/视频的示例代码。如果有,请与我分享。我试过但它在 hbase shell 中没有显示任何内容。 任何人知道如何存储和访问请与我分享。我做了很多工作。但我没有得到任何正确的答案。感谢任何帮助。 【参考方案1】:

选项1:将图像转换为字节数组,您可以准备put请求并插入到表中。同样的音视频文件也可以实现。

见https://docs.oracle.com/javase/7/docs/api/javax/imageio/package-summary.html


import javax.imageio.ImageIO;

/*       * Convert an image to a byte array
         */
    private byte[] convertImageToByteArray (String ImageName)throws IOException 

        byte[] imageInByte;
        BufferedImage originalImage = ImageIO.read(new File(ImageName));

        // convert BufferedImage to byte array
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ImageIO.write(originalImage, "jpg", baos);
        imageInByte = baos.toByteArray();
        baos.close();

        return imageInByte;
    

选项 2:您可以使用 Apache commons lang API. 以下列方式执行此操作,这可能是比上述最佳选项,适用于包括图像/音频/视频等在内的所有对象。这不仅可以使用对于 hbase,您也可以将其保存在 hdfs 中

更多详情请查看我的answer。

例如:byte[] mediaInBytes = org.apache.commons.lang.SerializationUtils.serialize(Serializable obj)

为了反序列化,你可以这样做static Object deserialize(byte[] objectData)

请参阅上面链接中的文档..

SerializationUtils 的示例用法

import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.apache.commons.lang.SerializationUtils;

public class SerializationUtilsTest 
  public static void main(String[] args) 
    try 
      // File to serialize object to it can be your image or any media file
      String fileName = "testSerialization.ser";

      // New file output stream for the file
      FileOutputStream fos = new FileOutputStream(fileName);

      // Serialize String
      SerializationUtils.serialize("SERIALIZE THIS", fos);
      fos.close();

      // Open FileInputStream to the file
      FileInputStream fis = new FileInputStream(fileName);

      // Deserialize and cast into String
      String ser = (String) SerializationUtils.deserialize(fis);
      System.out.println(ser);
      fis.close();
     catch (Exception e) 
      e.printStackTrace();
    
  

注意:apache commons lang 的jar 在 hadoop 集群中始终可用。(不是外部依赖

【讨论】:

我可以将此字节[] mediaInBytes 作为 put cmd 的值传递到 hbase 列中吗? 我不擅长写java代码,你能告诉我如何以及在哪里将图像名称作为参数传递,以及如何将此字节[]作为arg传递给hbase列值。跨度>

以上是关于使用 hbase 处理图像、视频和音频类型的主要内容,如果未能解决你的问题,请参考以下文章

iOS超全开源框架项目和学习资料汇总数据库缓存处理图像浏览摄像照相视频音频篇

直播流程

多媒体处理常用软件:图像文本音频视频动画微课

python中音频图像识别和网页相关的库合集!

最新最全Diffusion Models论文代码汇总(图像生成图像分割图像翻译超分辨率重建医疗影像自然语言处理视频生生成时间序列生成3D点云生成文本语音转换音频生成等)

如何将图像、pdf、音频、视频和任何文件系统从 iphone 本地内存上传到服务器(API)