首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
音视频平凡之路
安纯旦
创建于2021-05-20
订阅专栏
主要分享音视频相关的技术知识点。 分享ExoPlayer、FFmpeg、WebRTC、Gstreamer等音视频开源库的知识。
等 193 人订阅
共44篇文章
创建于2021-05-20
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
HLS公开课(五)HLS合成为一整个视频
M3U8视频下载完成之后, 会有一个索引文件加上N多个分片文件, 这样我们想拷贝整个M3U8文件就会很麻烦, 而且M3U8索引文件中会定义分片文件的位置, 如果是相对地址还好, 如果是绝对地址那拷贝出来也不能用. 我们能不能将分散的M3U8分片文件合成一整个MP4文件, 这样我…
HLS公开课(四)#EXT-X-MAP是如何工作的
这个字段是视频的初始化片段, 简而言之,有了这个字段,说明后续的每一个分片文件必须和通过这个初始化片段才能完整解读,缺少这个初始化片段, M3U8视频根本播放不了. 这是因为光解析第一个分片是不行的,因为真正的视频头部信息在init-v1-a1.mp4中. 这是一个FMP4片段…
Ijkplayer 公开课(三)msg_queue消息机制剖析
1.为什么需要一个消息机制Android平台提供了Handler、Message、MessageQueue、Looper机制来实现消息分发和处理机制;在ijkplayer的native层也需要这样的一
Ijkplayer 公开课(二)播放流程概要
3. 播放器流程 5. setDataSource 和 setSurface 6. prepareAsync 请求数据
Ijkplayer 公开课(一)编译
ijkplayer是BiliBili维护的一个开源的流媒体播放器,有android和iOS跨平台的特性;适合播放网络流媒体或者直播场景,播放效果和性能均非常棒,是一个优秀的播放器开源库;Github地
讲透java.net.ProtocolException: unexpected end of stream
发现其中contentLength的长度比fileLength大,说明inputstream读完了之后, 校验contentLength,发现后续的内容没有了,就出现了这个问题. bytesRemaining 初始值是 contentLength, 就是我们发送请求, 收到re…
HLS公开课(三)URL生成规则
显然是不对的. 4. 双斜杠相对位置 这时候直接增加一个协议就可以的.
HLS公开课(二)高级字段
HLS视频格式剖析(一)基础介绍一文中介绍了HLS的基本字段, 但是要想深入了解HLS, 光了解基本字段是不够,本文带你了解一下HLS的高级字段,让你对HLS有更深的理解. 我们知道M3U8需要切片,但是有时候我们不想切片(为什么? 我比较懒), 我只想用一个ts来构建一个类似…
HLS公开课(一)基础介绍
M3U8,用 UTF-8 编码。"M3U" 和 "M3U8" 文件都是苹果公司使用的 HTTP Live Streaming(HLS) 协议格式的基础; 是 Unicode 版本的 M3U M3U8文件是M3U文件的一种,只不过它的编码格式是UTF-8。M3U使用Latin-1…
ExoPlayer 漫谈之添加水印
上面三个问题表示TextureView上面盖一层ImageView的方式是行不通的。 其实除了TextureView和SurfaceView渲染视频之外,GLSurfaceView也是渲染视频的一种View,GLSurfaceView和OpenGL结合,可以实现给播放中的视频添…
ExoPlayer 漫谈之Sonic调整音量
我们使用Android手机播放视频的时候,发现声音大了,我们手动调低音量;发现声音小了,我们手动调高音量。 这个过程中,都要依赖手动,如果你在不断地刷短视频的时候,如果需要用户不断地手动调整音量键,那这个体验是不能忍受的。 这个思路是可行的,接下来我们分析一下声音的特征,进而给…
ExoPlayer 漫谈之倍速
音频和视频帧都有一个pts标识当前的时间戳。倍速的场景是要求音频流倍速和视频流倍速。 视频是一帧一帧的画面,音频是一串比特流,然后调整比特流的码率和振幅,用AudioTrack来渲染音频。 这里为什么要这么实现,因为音频对时间的校准非常严格,之前分析音视频同步的时候也发现了音频…
ExoPlayer 漫谈之音视频同步
音视频同步是播放器中非常重要的逻辑,对用户的实际体验影响巨大。上一篇文章中说明了视频中audio与video是分别解码并且送显的,两个线程分别执行,如果不加时间戳同步操作,播放出来的视频会出现音频和视频不同步的情况。 接下来还要做一下送显时间的校准。frameReleaseTi…
ExoPlayer 漫谈之Renderer
一个视频由声音轨道和视频轨道组成,一般声音轨道的数据比较小,我们一般不需要担心声音解析的问题.但是视频轨道的数据很大,视频轨道的解码就是整个视频解码的瓶颈。 音频和视频解码默认都是使用的MediaCodec,视频解码放在Render:MediaCodecVideoRendere…
ExoPlayer 漫谈之Extractor
一个正常的url设置到播放器中。播放器一般会经历如下的流程: 上一篇文章已经分析了ExoPlayer是如何请求url的,我们请求得到了一定的数据,就要对源数据进行解封装。解封装的前提要知道视频是什么封装格式的? 探知视频封装格式的过程就是Extractor。本文主要分析ExoP…
ExoPlayer 漫谈之DataSource
大多数人多ExoPlayer的了解,仅限于ExoPlayer是一个高效的播放器,目前在播放器之中,ExoPlayer也算是独树一帜了,ExoPlayer在Github上非常火,使用的人非常多,可见ExoPlayer的功能、性能还是优化的相当不错的。 我们使用一个开源库,会用当然…
ExoPlayer 漫谈之架构剖析
ExoPlayer本质上是使用MediaCodec来解码视频,但是其中的流程非常复杂,所有我们由浅入深的讲解一下,很多地方也是刚开始看,看得不详细,向大家汇报一下吧。 ExoPlayer旨在对正在播放的媒体类型,媒体的存储方式和存储方式以及呈现方式做出很少的假设(并因此而施加了…
音视频全链路技能分析之音视频消费侧技能树
各行各业都有鄙视链。娱乐圈的,拍电影的看不上拍电视的。IT圈的,C/C++工程师看不上Java、python、php这些搞高级API的小伙子。程序员之间,“文人相轻”的事情常有,但是平心而论,技术圈的事情确实有难易之分,工作有等级,那么技能就当然有高低。技术分高低,本地就是给我…
UC浏览器视频播放缓存以及视频下载分析
其中3f707cb48e86b496dd0708a5bdaf3b7d088a45dd_hh0039 是种子文件,3f707cb48e86b496dd0708a5bdaf3b7d088a45dd_vx00454是 M3U8索引文件。 解析tracker信息,然后利用P2P下载技术…
ExoPlayer 漫谈之提升渲染性能
Android L以及Andrioid L以上的版本提供了异步模式, 通过在codec--->configure中设置callback来将数据处理放在异步线程中完成,然后在回调中处理解码出的数据,给开发者设置了回调,你可以在回调中根据自己的需求来处理原始数据. 同步模式当然就是…
下一页