You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Android模拟器中android.graphics.ImageDecoder解码MJPEG帧失败求助

TCP传输Base64编码MJPEG流Android模拟器解码失败问题

问题场景

通过TCP传输实时MJPEG流,服务器发送Base64编码的帧,Flutter客户端在Linux桌面端可正常接收解码,但在Android模拟器中无法工作。

客户端显示流代码

String data = utf8.decode(snapshot.data as List<int>);

return Expanded(
            child: Image.memory(
              Uint8List.fromList(Base64Decoder().convert(data)),
              gaplessPlayback: true,
              excludeFromSemantics: true,

              errorBuilder: (context, object, stacktrace) {
                return Text("error");
              },
            ),
          );

报错日志

E/FlutterJNI( 1662): Failed to decode image
E/FlutterJNI( 1662): android.graphics.ImageDecoder$DecodeException: Failed to create image decoder with message 'unimplemented'Input contained an error.
E/FlutterJNI( 1662):    at android.graphics.ImageDecoder.nCreate(Native Method)
E/FlutterJNI( 1662):    at android.graphics.ImageDecoder.access$200(ImageDecoder.java:173)
E/FlutterJNI( 1662):    at android.graphics.ImageDecoder$ByteBufferSource.createImageDecoder(ImageDecoder.java:250)
E/FlutterJNI( 1662):    at android.graphics.ImageDecoder.decodeBitmapImpl(ImageDecoder.java:1862)
E/FlutterJNI( 1662):    at android.graphics.ImageDecoder.decodeBitmap(ImageDecoder.java:1855)
E/FlutterJNI( 1662):    at io.flutter.embedding.engine.FlutterJNI.decodeImage(FlutterJNI.java:524)

排查与解决建议

  • 确认Base64解码后的字节流为完整标准的JPEG格式:Android的ImageDecoder对格式容错性更低,桌面端能解析的不规范JPEG可能在模拟器中失败。可将解码后的Uint8List保存为文件,用图片工具验证有效性。
  • 检查TCP传输是否存在数据截断或乱码:直接用utf8.decode处理Base64字节流可能引入损坏(Base64本身是ASCII编码,无需UTF-8解码),建议修改解码逻辑:
    // 替换原解码步骤,直接处理原始字节
    Uint8List imageBytes = Base64Decoder().convert(snapshot.data as List<int>);
    
  • 尝试第三方解码库:使用image等第三方包手动解码JPEG后再渲染,绕过系统的ImageDecoder,解决部分编码参数不兼容问题。
  • 排除模拟器本身问题:换用真实Android设备测试,确认是否是模拟器解码引擎的bug导致。

内容的提问来源于stack exchange,提问作者ageng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 11:35:07