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

如何使用MediaRecorder实现安卓屏幕+内录音频推流至VLC及网页浏览器

安卓带音频屏幕实时推流可行方案

方案1:MediaProjection + FFmpeg 软硬编码结合推流

  • 核心逻辑:你已经可以通过MediaRecorder拿到音视频原始数据,直接喂给FFmpeg做封装推流即可,无需依赖第三方封装库
  • 实现步骤:
    1. 用MediaProjection申请录屏权限后,分别采集视频原始帧(YUV/RGB格式)、音频原始PCM数据
    2. 调用FFmpeg接口分别对视频做H.264编码、音频做AAC编码,优先调用安卓自带的MediaCodec硬编,性能不足的机型自动降级到FFmpeg软编,可以解决之前的卡顿问题
    3. 根据播放端需求选择封装格式:
    • 推RTSP流的话VLC可以直接拉流播放,延迟最低
    • 推HLS流的话浏览器和VLC都能直接播放,兼容性最好,延迟大概3-10秒
    • 封装成WebRTC流的话浏览器可以实现超低延迟播放,VLC 3.0+版本也支持WebRTC拉流
  • 优势:可控度高,音视频同步可以通过时间戳对齐自主控制,不会出现无音频的问题,编码参数可以根据机型性能动态调整,避免卡顿

方案2:Surface + 系统MediaCodec直接编码推流

  • 核心逻辑:绕开FFmpeg的额外依赖,仅用安卓系统原生API实现,包体积更小、性能开销更低
  • 实现步骤:
    1. 将MediaProjection创建的Surface直接传入MediaCodec的初始化参数,系统会自动把录屏画面喂给编码器,省掉原始帧内存拷贝的开销,性能表现更好
    2. 音频端用AudioRecord采集系统内录+麦克风混合的PCM数据,传给MediaCodec编码成AAC格式
    3. 编码后的H.264和AAC裸流,手动封装成FLV格式推RTMP,或者封装成RTP包推RTSP:
    • 推RTMP流的话可以在本地起一个轻量HTTP服务,浏览器用flv.js就能直接播放,VLC也原生支持RTMP拉流
  • 优势:依赖少,硬编效率最高,低配置机型也不容易出现卡顿

兼容性适配注意点

  • 音频部分要注意安卓10及以上才支持系统内录权限申请,低于安卓10的版本只能采集麦克风音频,提前做好权限判断
  • 面向浏览器播放的流不要使用H.265编码,大部分浏览器默认不支持,统一用H.264 High Profile + AAC LC的编码组合,兼容性最好
  • 推流码率不要设置过高,1080P分辨率设置2-4Mbps码率、30fps帧率即可,过高码率会导致弱网环境下播放卡顿

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:54:05