ijkplayer播放器

article/2025/9/11 6:29:04

播放器系列 android播放器:MediaPlayer ExoPlayer ijkplayer_步基的博客-CSDN博客_mediacodec流程

 一 概述

  IJKPlayer是一款基于ffmpeg/ffplay的开源播放器,可支持rtmp/rtsp/hls等多种媒体协议,支持Android/IOS等移动平台。项目地址:https://github.com/Bilibili/ijkplayer,项目地址有可供参考的编译方式。

 IJKPlayer 在 iOS 和 Android 平台上实现的主要差异表现在视频硬解码方案和音视频渲染方案上:

  • iOS
    • 视频硬解码:VideoToolbox
    • 音频渲染:AudioQueue
    • 视频渲染:OpenGL ES
  • Android
    • 视频硬解码:MediaCodec
    • 音频渲染:OpenSL ES、AudioTrack
    • 视频渲染:OpenGL ES、MediaCodec

        (本文主要讲述android版)

          IJKPlayer(Android)主要由Java层和JNI层组成,Java层主要负责业务控制,JNI部分主要功能是完成音视频的播放。JNI层向Java层提供接口调用,形成事件任务,同时以回调的形式向Java层推送事件完成的状态通知。
          Java层主要包括ijkplayer-exo和ijkplayer-java两个类库,分别代表两个不同的播放器。jikplayer-java里面有IMediaPlayer接口和AbstractMediaPlayer抽象类。所以ijkplayer-exo依赖于ijkplayer-java。

编译结果: android/ijkplayer/ijkplayer-java/build/outputs/aar/ijkplayer-java-debug.aar

可供app调用

IJKPlayer 项目的目录结构大致如下:

  • tool:初始化项目工程脚本。
  • config:编译 FFmpeg 使用的配置文件。
  • extra:存放编译 IJKPlayer 所需的依赖源文件, 如 FFmpeg、OpenSSL 等。
  • ijkmedia:核心代码。
    • ijkplayer:播放器数据下载及解码相关。
    • ijksdl:音视频数据渲染相关。

二 简要流程

read_thread -> PacketQueue(AVPacket) -> FrameQueue(AVFrame) -> 渲染

packet_queue_put是ijkplayer封装的一个缓冲区PacketQueue的 的入队方法。PacketQueue是采用链表构建的循环队列,每个节点循环使用,一部分节点空闲,一部分使用中。

                                                                                     图1

 主要结构体:

在native_setup方法中创建了IjkMediaPlayer、FFPlayer、IJKFF_Pipeline
在prepare阶段通过stream_open创建了VideoState。


结构图:

                                                                                        图2

播放流程图:

                                                                                           图3

                                                                                               图4


http://chatgpt.dhexx.cn/article/fJ3dkDGo.shtml

相关文章

jplayer详解

下载官网:http://www.jplayer.org/ 当前版本:2.3.0 功能:视频播放(可全屏)、音乐播放 全部原教程,说明并不详细,要结合查看其网页源代码来学习:http://www.jplayer.org/latest/demos…

Javplayer 整合插件版下载使用

Javplayer - 马赛克去除工具 工作中去除图片模糊像素,还原高清图片Javplayer - 马赛克去除工具简介版本安装使用调整示例注意事项体验视频小结咨询 工作中去除图片模糊像素,还原高清图片 Javplayer - 马赛克去除工具简介 JavPlayer是一种视频播放器&am…

jPlayer使用详解

原文地址:http://blog.csdn.net/z295304557/article/details/17298889?_t_t_t0.39512087353182124 下载官网:http://www.jplayer.org/ 当前版本:2.3.0 功能:视频播放(可全屏)、音乐播放 全部原教程&#x…

jPlayer插件的使用

jPlayer插件的使用 2017年04月21日 11:03:19 JENIFURS 阅读数:3952 标签: jPlayer视频插件兼容bug 更多 个人分类: jQuery 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fuyujiaof/arti…

JPlayer播放器插件教程,JPlayer项目实战

JPlayer 播放器&#xff1a;基于HTML5/Flash的音频、视频播放器。项目预览&#xff1a;播放器插件预览jPlayer中文官方文档&#xff1a;官网功能强大&#xff0c;操作简便&#xff0c;支持换肤功能。引入JPlayer文件以及样式&#xff1a;<head><script type"text…

TensorFlow 2019

numpy pandas sklearn 算法 神经网络的Math 动手实现网络结构 应用 TensorFlow框架 图像案例 Machine Learning VS Deep Learning 1 特征提取方面 自动 2 数量集 量大/参数大 * 机器学习 &#xff1a; 朴素贝叶斯 决策树 深度学习 &#xff1a; 统称神经网络 3 应…

机器学习练习 8 -异常检测和推荐系统(协同过滤)

1 Anomaly detection&#xff08;异常检测&#xff09; 我们的第一个任务是使用高斯模型来检测数据集中未标记的示例是否应被视为异常。 我们先从简单的二维数据集开始。 之前我们构建的异常检测系统也使用了带标记的数据&#xff0c;与监督学习有些相似&#xff0c;下面的对…

从普通程序员到AI大神,月薪7W的正确打开方式...

“ 前不久&#xff0c;不少人被一段机器人后空翻的视频刷屏了。视频中&#xff0c;双足人形机器人阿特拉斯又是走“梅花桩”&#xff0c;又是秀后空翻&#xff0c;完成了一段精彩绝伦的体操表演。 超强机器人出现&#xff01;分分钟被 AI 惊呆… 要知道阿特拉斯在 2014 年的时候…

Surface Defect Detection Methods for Industrial Products : A Review

Surface Defect Detection Methods for Industrial Products : A Review &#xff08;工业产品表面缺陷检测方法综述 &#xff09; 文章来源&#xff1a;Appl. Sci.2021,11, 7657. https://doi.org/10.3390/app11167657 &#xff08;Yuanyuan Ding&#xff09; 论文亮点&#x…

task_5 - 副本

Task01–Task06树模型与集成学习笔记整理 ****************************************************************************************************************** 1 Task01 信息论基础 决策树分类思想&#xff1a; 用树的节点代表样本集合&#xff0c;通过某些判定条件…

主成分分析(PCA)原理及其python实现

主成分分析 一、概述1.1 问题提出1.2 降维的作用 二、主成分分析(PCA)主要思想三、相关数学知识四、PCA实现步骤4.1 特征值分解矩阵4.2 SVD分解协方差矩阵 五、python程序实现5.1 利用数学公式实现5.2 使用sklearn实现 一、概述 1.1 问题提出 在实际问题研究中&#xff0c;多…

核酸扫码登记体验有感(如何提高OCR的文字正确识别率)

近几年&#xff0c;新冠疫情持续反复&#xff0c;核酸检测已成为了我们日常生活的一部分&#xff0c;甚至有人开玩笑说朋友邻居见面问候语从“吃了吗你&#xff1f;”变成了“今儿核酸了&#xff1f;”。核酸检测全员常态化&#xff0c;需要大量的志愿者协助医生进行身份证扫描…

ORB-SLAM2 特征点法SLAM 单目 双目 rgbd相机SLAM 单应/本质矩阵恢复运动 小图大图地图优化

ORB-SLAM2 ORB特征点法SLAM 支持单目、双目、rgbd相机 安装测试 本文github链接 orbslam2 imu ORB-SLAM是一个基于特征点的实时单目SLAM系统&#xff0c;在大规模的、小规模的、室内室外的环境都可以运行。 该系统对剧烈运动也很鲁棒&#xff0c;支持宽基线的闭环检测和重…

opencv4算法库学习笔记(5万多字超长干货——纪念奋战的自己)

整理于2020年初三个月的日夜积累。。。 参考链接 opencv安装 安装脚本链接&#xff1a;https://github.com/milq/milq/blob/master/scripts/bash/install-opencv.sh 源码编译安装参考&#xff1a;https://blog.csdn.net/liuli2008212/article/details/128169266?spm1001.2…

【数字图像处理课程设计】期中、期末综合考试题目整理总结(共四个图像处理算法应用题)

目录 一、下面两幅图像中有几处不同&#xff0c;编程把它们找出来、并在图中突出显示&#xff08;关键步骤不能调用内置函数&#xff09;。 1.算法原理 2.解题步骤 3.程序代码 4.处理结果 二、下图含有干扰条纹&#xff08;moir pattern&#xff09;、并且低灰度区域的细…

MATLAB各个产品概述----哪些产品需要安装?哪些产品不需要安装?阅完了然

MATLAB产品概述 文章目录 1 MATLAB2 Simulink3 5G Toolbox&#xff08;5G工具箱&#xff09;4 Aerospace Blockset&#xff08;航空区块集&#xff09;5 Aerospace Toolbox&#xff08;航空航天工具箱&#xff09;6 Antenna Toolbox&#xff08;天线工具箱&#xff09;7 Audio…

Latex相关符号

函数、符号及特殊字符 声调 语法效果语法效果语法效果\bar{x}\acute{\eta}\check{\alpha}\grave{\eta}\breve{a}\ddot{y}\dot{x}\hat{\alpha}\tilde{\iota} 函数 语法效果语法效果语法效果\sin\theta\cos\theta\tan\theta\arcsin\frac{L}{r}\arccos\frac{T}{r}\arctan\frac{L…

一文读懂人脸识别技术

2019-08-27 17:06:26 本文内容涵盖人脸识别发展历程、市场研究、核心技术、商业应用以及产业落地、个人看法等干货研究。注意&#xff0c;本文干货满满&#xff0c;约有2万7千字&#xff0c;强烈建议大家先收藏后学习&#xff01; 01 发展史 1. 人脸识别的理解 人脸识别(Fa…

综述 | 基于特征的视觉同步定位和建图

点击上方“计算机视觉工坊”&#xff0c;选择“星标” 干货第一时间送达 Feature‑based visual simultaneous localization and mapping: a survey Rana Azzam1 Tarek Taha2 Shoudong Huang3 Yahya Zweiri4 接收日期&#xff1a;2019 年 10 月 30 日/接受时间&#xff1a;…

ORB_SLAM2 源码解析 单目初始化器Initializer(三)

目录 一、地图点初始化 二、重新记录特征点的匹配关系 1、构建旋转直方图 1.1、在半径窗口内搜索当前帧F2中所有的候选匹配特征点GetFeaturesInArea 1.2、表示一个图像像素相当于多少个图像网格列和行 1.4、遍历圆形区域内的所有网格&#xff0c;寻找满足条件的候选特征点&…