首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
播放器相关
南北是北北
创建于2025-09-02
订阅专栏
media player
等 4 人订阅
共18篇文章
创建于2025-09-02
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
在直播场景中,用户退出了直播间,再次进入,如何保证离线消息和礼物消息
1) 目标与问题分解 离线消息(IM/弹幕/系统) :用户退出 → 再进来,能补齐缺的消息、按房间顺序展示。 礼物消息(强一致/交易相关) :既要不重扣/不重计,又要离线可补、回放有上限、动画去重/合
采用ExoPlayer播放器,进行播放器池的重用,如何防止解码器不重用?
必做清单(从最影响复用到最次) 切源时不要 stop() / release() 直接在同一个 ExoPlayer 上 setMediaItem(...) → prepare(),这样渲染器会评估是否
列表中item是视频,怎么优化它的打开速度
0. 结论概览(按收益排序) 预加载下一条/上一条(先 prepare() 后换 Surface 渲染)。 共享 OkHttpClient + ExoPlayer 缓存(SimpleCache) ,复
“解码后的视频帧到 TextureView 动起来” 的数据流、定时显示、与帧回收
1) 帧是怎么流转到 TextureView 的? 核心参与者与关系 MediaCodecVideoRenderer(ExoPlayer) :把解码后的帧交给 Surface。 Surface:生产者
为什么会出现有声无画/黑屏,以及如何避免与优化
一、为什么会有“有声音没画面 / 黑屏” A. 视图/Surface 管线问题 Surface 丢失或没绑定 SurfaceView/TextureView 生命周期没对齐:surfaceDestro
VSync 是什么、ExoPlayer 怎么对齐 VSync 与音画同步、常见问题与调参要点
1) VSync 是什么、为什么影响播放流畅度 VSync(Vertical Sync) 是显示器在每个刷新周期发出的“时钟脉冲”。Android 上,应用侧通过 Choreographer、系统侧通
音频欠喂
音频欠喂(audio underrun / buffer underrun)指的是: 播放端消耗音频数据的速度 > 你提供(写入)数据的速度,导致音频缓冲区被“吃空”。一旦缓冲见底,声卡/音频管线没有
为什么“以音频为主时钟”最稳,怎么做 A/V 同步
1) 为什么音频是最稳的主时钟 1.1 连续流 vs 离散投递 音频输出链路(AudioTrack → HAL → DSP/Codec → DAC/扬声器)是恒速传送带:只要 sampleRate=4
音画同步(A/V sync):用音频做主时钟,视频围着它“等一等 / 丢一丢 / 多显示一会儿(补帧)”
1) 基本时间概念 PTS(presentation timestamp) :每个音/视频帧自带的“应该被播放”的媒体时间,单位常见是微秒或 timebase(如 1/90000)。 时钟(clock
媒体管线
1. 媒体管线到底是什么 定义:把音视频从“数据源”搬到“屏幕与扬声器”的一条分阶段流水线。它像装配线:每段只做自己的事,并把结果交给下一段。 2. Android 里的两层管线 应用层(你能控制):
DRM(Digital Rights Management,数字版权管理)
一、DRM 是什么?解决什么问题? 目标:控制“谁、在什么条件下、以什么清晰度/时长/设备/输出方式”播放受保护的音视频。 核心思路:媒体按片段被加密;客户端在受信任环境里拿许可证/密钥→解密→安全解
HlsMediaSource、DashMediaSource、 ProgressiveMediaSource差异详解
下面把 HlsMediaSource(m3u8)/ DashMediaSource(mpd)/ ProgressiveMediaSource(mp4、mkv、ts + Extractors) 的差异讲
以ExoPlayer为例,是如何解析url然后将视频帧画面渲染到TexureView上
一、从 URL 到 TextureView 的完整链路 关键点: URL 解析:ExoPlayer 会优先用 MediaItem.mimeType,没有的话用后缀/响应头 推断内容类型,从而选用对应的
TextureView中的surfaceTexture的作用
它是什么 SurfaceTexture 是一个“消费者 + 纹理桥接器” : 作为 BufferQueue 的消费者 接收图像缓冲(GraphicBuffer); 把最新一帧绑定成 OpenGL ES
BufferQueue的环形队列是什么设计的
1. 总览:固定槽位池 + 有界 FIFO BufferQueue 的“环形”不是单块连续内存做取模指针,而是: 一组固定大小的槽位数组(BufferSlot slots[NUM_BUFFER_SLO
Surface中的BufferQueue
1. BufferQueue 是什么 本质:一个环形缓冲队列(slots + fences),承接“生产者 Producer 写帧 → 消费者 Consumer 取帧”的流。 关键目标:零拷贝/少拷贝
Android TexureView和SurfaceView
一、核心概念 SurfaceView:单独的 Surface,独立于 View 层级,由 SurfaceFlinger 直接合成,低延迟、性能好,但几乎不受 View 变换/裁剪影响。 Texture
Surface 是什么、以及它在 TextureView 和 SurfaceView 里分别扮演的角色
一、Surface 是什么(本质) Surface = 生产者写帧的接口,背后连着一组环形缓冲队列(BufferQueue)。 生产者(Producer) :MediaCodec/MediaPlaye