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

Android端如何拉取IP摄像头输出的HTTP JPEG视频流?

概念澄清

你提到的「非MJPEG格式JPEG视频流」不属于标准多媒体封装格式,本质是摄像头自定义的单JPEG帧逐次返回HTTP接口,和标准MJPEG(multipart/x-mixed-replace类型的连续流,单TCP连接推送带分隔符的多帧数据)封装逻辑完全不同。ExoPlayer这类通用播放器默认仅支持标准封装的多媒体流,无法识别这种自定义格式是正常情况,不属于你的技术选型或者理解错误。

可行实现方案

安卓端(匹配你现有ExoPlayer技术栈)

你可以无需更换基础框架,通过自定义扩展实现适配:

  • 自定义DataSource实现类对接摄像头的HTTP拉流接口,按照接口的返回规则拆分出每一张完整的JPEG帧字节数据
  • 额外实现解码逻辑:可以直接调用系统BitmapFactory解码JPEG帧为Bitmap,按照摄像头的固定帧率间隔,将Bitmap投递到ExoPlayer的渲染层输出即可
  • 轻量替代方案:如果不需要复用ExoPlayer的其他播放控制能力,直接开独立子线程/协程按帧率间隔拉取单帧JPEG,解码后往SurfaceView或者TextureView上渲染,代码量极小,适配自定义流的灵活度更高。

跨平台通用方案

如果需要做多端适配,可基于FFmpeg实现:

  • 在FFmpeg的libavformat层手动喂入拆分好的JPEG帧,自行配置帧率、时间戳等参数,模拟标准视频流的输入格式,后续既可以用FFmpeg自带的渲染链路输出,也可以转封装为MJPEG/H.264流喂给任意通用播放器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:12:03