Android 4.4中TS流处理与解码流程解析
5星 · 超过95%的资源 需积分: 50 138 浏览量
更新于2024-09-10
收藏 25KB PPTX 举报
"在Android 4.4系统中,TS流的处理流程主要涉及M3U8文件的获取、TS数据的下载与解码以及视频的渲染播放。这个过程是多媒体播放的重要环节,特别是对于流媒体服务而言。下面将详细阐述这一流程。\n\n首先,TS流处理的起点是`NuPlayer::prepareAsync()`方法,它负责启动整个流程。接下来,`NuPlayer::HTTPLiveSource::prepareAsync()`转发请求到`LiveSession`,这里开始处理M3U8文件。`LiveSession::onConnect()`事件触发后,系统会执行以下步骤来获取M3U8文件:\n\n1. 使用`LiveSession::fetchFile()`从指定的M3U8文件地址下载文件。\n2. 解析下载的M3U8文件,通过`LiveSession::fetchPlaylist()`调用M3U8解析器,获得TS流的URL。\n3. `onChangeConfiguration`回调将TS流的获取地址传递给后续的处理模块。\n\n获取TS数据流的入口是`PlaylistFetcher::startAsync`。在这个阶段,系统进行以下操作来获取和处理TS数据:\n\n1. `PlaylistFetcher::onMonitorQueue`监听队列,准备下载。\n2. `PlaylistFetcher::onDownloadNext`负责连接服务器,通过`LiveSession::boxFetchFileConnect`建立连接。\n3. `LiveSession::boxFetchFileRead`读取TS数据流。\n4. 数据解密,使用`PlaylistFetcher::decryptBuffer`对TS数据进行解密处理。\n5. `PlaylistFetcher::extractAndQueueAccessUnits`提取并排队TS数据,进入解码阶段。\n\n解码流程开始于`ATSParser::feedTSPacket`,此方法用于解析TS包。`ATSParser::parseTS`负责处理TS包,其主要任务包括:\n\n1. 获取PAT(Program Association Table),从中得知不同节目对应的PID。\n2. 获取PMT(Program Map Table),PMT提供了音视频流的类型、时间等关键信息。\n3. 解析PES(Packetized Elementary Stream)数据包,从中提取出ES(Elementary Stream)基本码流。\n\n解码工作主要由硬件加速器完成,例如`MtkOmxVdec`用于视频解码,`MtkOmxAacDec`则用于音频解码,这两者在日志中被提及。\n\n解码完成后,视频的渲染播放开始,`NuPlayer::renderBuffer`是视频渲染的入口。`NuPlayer::Renderer::onQueueBuffer`负责获取解码后的数据,并进行渲染处理。\n\n这个流程展示了Android 4.4中如何高效地处理TS流,实现流媒体的播放。每一个环节都是系统级的协同工作,确保了用户能够顺畅地观看视频内容。"
2020-08-27 上传
2015-07-01 上传
2021-06-06 上传
2015-07-10 上传
2021-06-25 上传
2021-02-03 上传
118 浏览量
浅雨夏梦
- 粉丝: 25
- 资源: 11
最新资源
- hd9220_40_dfu_ind.rar_单片机开发_PDF_
- poo_ac1_2021
- CoffeeRun-Page-Deployd-Back-End:一个使用后端部署的CoffeeRun网站
- matlab代码续行-google-code-prettify:自动从code.google.com/p/google-code-pretti
- clisymbols:用于CLI应用程序的Unicode符号,具有后备功能
- voronoi:为好奇心(WIP)构建的voronoi图生成器
- CIM是一套基于netty框架下的推送系统,可应用于移动应用,物联网,智能家居,嵌入式开发,桌面应用….zip
- Webindexia's Multi-Index:trade_mark: Lite-crx插件
- Polygon
- stroke-controllable-fast-style-transfer:纸的代码和数据
- warshell.zip_matlab例程_matlab_
- rsschool-cv
- masked-input:一个jQuery插件,用于将用户在文本字段中的输入限制为特定的模式
- abraracourcix-alerts:来自Elasticsearch的警报
- mlr3book:mlr3手册
- Flash Enabler-crx插件