ijkplayer阅读笔记02-创建音视频读取,解码,播放线程
本节主要介绍音视频读取和解码线程的创建及启动,代码流程例如以下:
IjkMediaPlayer_prepareAsync{
   ijkmp_prepare_async_l{
     ijkmp_change_state_l(mp, MP_STATE_ASYNC_PREPARING);
     msg_queue_start(&mp->ffplayer->msg_queue);
     SDL_CreateThreadEx(&mp->_msg_thread, mp->msg_loop, mp, "ff_msg_loop");
     ffp_prepare_async_l(mp->ffplayer, mp->data_source);
     stream_open{
        frame_queue_init(&is->pictq, &is->videoq, ffp->pictq_size, 1)
        frame_queue_init(&is->sampq, &is->audioq, SAMPLE_QUEUE_SIZE, 1)
        packet_queue_init(&is->videoq);
        packet_queue_init(&is->audioq);
        SDL_CreateThreadEx(&is->_video_refresh_tid, video_refresh_thread, ffp, "ff_vout") //视频显示线程创建
        SDL_CreateThreadEx(&is->_read_tid, read_thread, ffp, "ff_read"){ //读取线程创建
            read_thread { //读取线程
               stream_component_open(ffp, st_index[AVMEDIA_TYPE_AUDIO]);{ //音频读取和解码
                  SDL_CreateThreadEx(&is->_audio_tid, audio_thread, ffp, "ff_audio_dec");
               }
               stream_component_open(ffp, st_index[AVMEDIA_TYPE_VIDEO]);{ //视频读取和解码
                  ffp->node_vdec = ffpipeline_open_video_decoder(ffp->pipeline, ffp);
                  SDL_CreateThreadEx(&is->_video_tid, video_thread, ffp, "ff_video_dec");
               }
               for (;;) {
                  if (is->seek_req) {
                       avformat_seek_file();
                  }
                  ret = av_read_frame(ic, pkt);
                  packet_queue_put(&is->audioq, pkt); or packet_queue_put(&is->videoq, pkt);
               }
            }
        }
     }
   }
}
ijkplayer阅读笔记02-创建音视频读取,解码,播放线程的更多相关文章
- 七牛云音频转码准备工作之如何创建音视频处理私有队列pipeline
		
如何创建音视频处理私有队列 最近更新时间:2017-08-28 15:54:45 在七牛进行音视频处理,推荐使用私有队列(pipeline). 创建私有队列方法如下: 第一步 登录七牛开发者平台 ht ...
 - 音视频编解码技术(一):MPEG-4/H.264 AVC 编解码标准
		
一.H264 概述 H.264,通常也被称之为H.264/AVC(或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC) 1. H.264视频编解码的意义 H.264的出现就是为了创 ...
 - 小程序升级实时音视频录制及播放能力,开放 Wi-Fi、NFC(HCE) 等硬件连接功能
		
“ 小程序升级实时音视频录制及播放能力,开放 Wi-Fi.NFC(HCE) 等硬件连接功能.同时提供按需加载.自定义组件和更多访问层级等新特性,增强了第三方平台的能力,以满足日趋丰富的业务需求.” 0 ...
 - [转帖]AVS音视频编解码技术了解
		
AVS高清立体视频编码器 电视技术在经历了从黑白到彩色.从模拟到数字的技术变革之后正在酝酿另一场技术革命,从单纯观看二维场景的平面电视跨越到展现三维场景的立体电视3DTV.3DTV系统的核心问题之一是 ...
 - Android Webview中解决H5的音视频不能自动播放的问题
		
在开发webview的时候,当加载有声音的网页的时候,声音不会自动播放, 解决方法:在webview中调用js方法.这个方法需要在webview的setWebViewClient方法之后在onPage ...
 - [工具]利用EasyRTSPClient工具检查摄像机RTSP流不能播放原因以及排查音视频数据无法播放问题
		
出现问题 我们在做流媒体开发的过程中,进程会出现摄像机RTSP流莫名其妙无法播放的问题,而我们常用的vlc经常是直接弹出一个无法播放的提示框就完事了,没有说明出错的原因,或者在vlc的消息里面能看到日 ...
 - 【Android 直播软件开发:音视频硬解码篇】
		
开篇 炙手可热,望而生畏的音视频开发 时至今日,短视频App可谓是如日中天,一片兴兴向荣.随着短视频的兴起,音视频开发也越来越受到重视,但是由于音视频开发涉及知识面比较广,入门门槛相对较高,让许许多多 ...
 - HTML5笔记2——HTML5音/视频标签详解
		
音视频的发展史 早期:<embed>+<object>+文件 问题:不是所有浏览器都支持,而且embed不是标准. 现状:Realplay.window media.Quick ...
 - 集显也能硬件编码:Intel SDK   && 各种音视频编解码学习详解
		
http://blog.sina.com.cn/s/blog_4155bb1d0100soq9.html INTEL MEDIA SDK是INTEL推出的基于其内建显示核心的编解码技术,我们在播放高清 ...
 
随机推荐
- 1.3 Quick Start中 Step 6: Setting up a multi-broker cluster官网剖析(博主推荐)
			
不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ Step 6: Setting up a multi-broker cluster ...
 - Exchanging Partitions and Subpartitions with Tables--官方文档
			
原文地址:https://dev.mysql.com/doc/refman/5.6/en/partitioning-management-exchange.html In MySQL 5.6, it ...
 - Codeforces Round #194 (Div. 2) 部分题解
			
http://codeforces.com/contest/334 A题意:1-n^2 平均分成 n 份,每份n个数,且和相同 解法 : 构造矩阵1-n^2的矩阵即可 ][]; int main() ...
 - 【习题 7-4 UVA-818】Cutting Chains
			
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 二进制枚举要解开哪些环. 把所有和它相关的边都删掉. 对于剩下的联通分量. 看看是不是每一个联通分量都是一条链 ->每个点的度 ...
 - 全球可信并且唯一免费的HTTPS(SSL)证书颁发机构:StartSSL
			
全球可信并且唯一免费的HTTPS(SSL)证书颁发机构:StartSSL http://blog.s135.com/startssl/ 购买权威机构的证书一年大概得七八千元,其实这是不值得的,所以一直 ...
 - Appium_Java运行测试脚本时问题汇总
			
问题一.java.lang.NoClassDefFoundError: org/openqa/selenium/remote/SessionNotFoundExceptionCaused by: ja ...
 - STL之vector容器的实现框架
			
说明:本文仅供学习交流,转载请标明出处,欢迎转载. 实现vector容器的思路等同于实现一个动态数组,以下我们參照源代码的相关资料,给出一个vector容器的大致框架,仅仅有声明,没给出详细的实现. ...
 - oracle 多行转多列查询
			
oracle 多行转多列查询 ---create table Fruit(id int,name varchar(20), Q1 int, Q2 int, Q3 int, Q4 int);inse ...
 - iOS_04_数据类型、常量、变量
			
一.数据 1.什么是数据 * 生活中时时刻刻都在跟数据打交道,比如体重数据.血压数据.股价数据等.在我们使用计算机的过程中,会接触到各种各样的数据,有文档数据,图片数据,视频数据,还有聊天QQ产生的文 ...
 - sshfs 通过ssh 挂载远程目录
			
安装:yum -y install sshfs 挂载远程 ssh 文件系统: sshfs -p 1234 root@192.168.1.218:/home/ /mnt/ sshfs -p SSH端口 ...