【问题标题】:VP8 encode/decode on android results in black and white image with red, green and blue squaresVP8 在 android 上编码/解码产生带有红色、绿色和蓝色方块的黑白图像
【发布时间】:2013-02-23 02:41:50
【问题描述】:

我有一个 VoIP 视频应用程序,它使用 VP8 编解码器在 MAC、Windows 和 iOS 上运行良好。当我在这些平台和 Android 之间拨打电话时,通话双方都有一个带有红色、绿色和蓝色方块的黑白图像。当 Android 调用 Android 时也会发生同样的情况。

我正在编译 VP8:

./libvpx/configure --target=armv7-android-gcc --sdk-path=/Applications/adt/ndk --disable-examples --enable-runtime-cpu-detect  --enable-realtime-only --enable-neon

我的问题是为什么 Android 平台会产生这个结果,我该如何调试它?

这是问题的截图:

附加信息:

相机帧格式为 ImageFormat.NV21。编码器图像格式为VPX_IMG_FMT_I420。

【问题讨论】:

  • 既然图片没有歪斜,会不会是rgba、argb或者rgb、bgr之类的不匹配?
  • 我最初的预感是某些东西错误地解释了 YUV 数据,但颜色“噪声”看起来像随机的 DCT 块。以原始分辨率显示视频帧可能会有所帮助(噪声周期约为 14;常见的块大小为 8x8 和 16x16)。另外,是编码器、解码器还是两者都有这个问题?
  • 我已经更新了更多信息。我认为格式兼容?

标签: android video voip vp8


【解决方案1】:

由于 libvpx 配置为采用图像格式 VPX_IMG_FMT_I420,因此必须首先将 NV21 帧转换为 I420。

【讨论】:

  • 另外,我建议使用code.google.com/p/libyuv 进行提到的 VPX_IMG_FMT_I420 android 上的 NV21 帧转换。它运行良好,而且速度很快,因为它尽可能利用低级 NEON 指令进行转换
猜你喜欢
  • 2018-09-15
  • 2011-09-22
  • 2011-10-28
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多