【问题标题】:Android encoding/decoding issuesAndroid 编码/解码问题
【发布时间】:2012-04-05 20:35:05
【问题描述】:

再次需要您的帮助。我正在从 onPreviewFrame(byte[] data, Camera arg1) 获取字节 []。现在我通过 TCP 将每一帧传输到我的系统,然后用该字节 [] 编写一个 JPG 文件。但是当我打开这个 JPG 文件时,它说 JPG 文件无效。此外,当我从 PictureCallback jpegCallback = new PictureCallback() 方法发送相同的字节 [] 然后在我的 PC 上写入一个 JPG 文件时,它工作正常。

我知道这是一种编码问题,实际上我从 onPreviewFrame 得到的 byte[] 是压缩图像数据的字节数组。

我只能通过 TCP 将压缩图像数据的字节数组从我的手机传输到 PC。但是一旦我在 PC 上得到这个数据,我想解码这些数据。你们能帮我看看我该怎么做。

如果能提供任何帮助,我将不胜感激。

最好的问候, 宰

【问题讨论】:

  • 这可能与字节序问题有关吗?我可以想象这样一种情况,手机中的 ARM 处理器是大端,而您的 x86 CPU 是小端,这意味着您将字节向后放,因此没有编写正确的标头。您能否将手机生成的文件的前几个字节与实际的 JPEG 文件进行比较?

标签: android


【解决方案1】:

您需要将来自onPreviewFrame(byte[] data, Camera arg1) 的字节[] 数据编码为JPEG 格式。然后通过网络发送。

在接收端,您可以检查图像的开始和结束标记分别为 0xff,0xd8 和 0xff,0xd9。您需要对收到的字节进行解码。

【讨论】:

    【解决方案2】:

    很可能是onPreviewFrame(byte[] data, Camera arg1)中接收到的字节数组不是jpeg格式的。请检查您的相机预览格式设置并尝试将 jpeg 设置为预览格式 (getSupportedPreviewFormats() + setPreviewFormat(int pixel_format))。但是,我认为在相机预览模式下不支持 jpeg 格式,因为压缩开销对于实时视频流来说可能太耗时了。

    吉日

    【讨论】:

      猜你喜欢
      • 2015-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-09
      相关资源
      最近更新 更多