导航
课程首页
  • PM-Summit 全球产品经理大会云会员
  • SDCon 全球软件研发技术大会云会员
  • ML-Summit 全球机器学习技术大会云会员
  • C++性能优化高端培训
  • AI全栈开发实战营
精品课 极客时间

C 知道

登录
会员中心
消息
历史
创作中心
创作
学习中心
成为讲师

基于NDK、C++、FFmpeg的android视频播放器开发实战 课程介绍及音视频基础知识 音视频基础知识Mpeg4封装格式音视频编码格式讲解

基于NDK、C++、FFmpeg的android视频播放器开发实战
共117节 8593人在学 课程详情
课程目录
讨论留言
  • 课程介绍及音视频基础知识

    • 课程介绍
    • 音视频基础知识Mpeg4封装格式音视频编码格式讲解
    • 音视频解封装和解码原理分析
    • 图形像素格式RGB和YUV格式分析
    • PCM音频采样率_通道_planar等格式参数分析
    • MP4标准和h264格式的NAL的GOP分析(下载课件是ppt)
  • AndroidStudio开发工具和开发环境准备

    • 开发所用到的工具和sdk介绍
    • AndroidStudio开发工具安装使用讲解
    • Android SDK目录内容分析
    • AndroidNDK工具目录功能分析
    • 安卓模拟器安装和第一个c++安卓程序编译运行
  • Android NDK交叉编译FFMpeg并添加测试AS项目

    • 安卓NDK相关概念ABI、NEON、JNI和CMAKE分析
    • NDK中CPU的应用二进制界面ABI
    • ubuntu虚拟机及常用工具安装并配置samba共享目录
    • ffmpeg源码下载在android下的编译参数分析讲解
    • 在ubuntu下交叉编译ffmpeg的android版本库
    • ffmpeg通用编译bash脚本编写、硬解码、neon、多线程解码性能对比
    • AndroidStudio项目配置权限、jni库路径、ABI和CMake参数和讲解
    • cmake配置(导入库、头文件、链接)分析
    • 创建支持ffmpeg的AndroidStudio项目并调用其接口在界面显示库配置信息
    • JNI和c传递文件路径并设置app的读写权限
  • FFmpeg解封装(C++ NDK)

    • ffmpeg SDK软硬解码流程说明
    • ffmpeg音视频解封装用到的函数和结构体详解
    • avformat_open_input函数详解并示例打开mp4文件
    • AVFormatContext结构分析和清理代码示例
    • avformat_find_stream_info探测获取封装上下文的格式信息
    • AVStream和AVCodecParameters分析
    • 通过遍历获取AVStream音视频流信息并打印参数
    • 通过av_find_best_stream获取音视频流索引
    • av_read_frame读取帧数据函数分析和产生的空间问题分析
    • AVPacket结构解析空间申请-初始化-复制-引用计数函数讲解
    • av_seek_frame改变播放进度函数详解
    • av_read_frame和av_seek_frame代码示例并分析内存占用和清理情况
  • FFmpeg软硬解和多线程解码(C++ NDK)

    • AVCodecContext解码上下文初始化讲解和视频解码器打开的代码演示
    • 打开音频解码器上下文
    • AVFrame格式解析和空间处理函数
    • avcodec_send_packet和avcodec_receive_frame函数讲解
    • 音视频多线程解码代码演示
    • 音视频解码性能测试neon单线程和八线程解码测试代码
    • ffmpeg调用MediaCodec实现硬解码代码演示
  • FFMpeg音频重采样和视频格式转换和显示

    • sws_getContext和sws_scale像素格式和尺寸转换函数讲解
    • sws_scale像素格式转换代码演示
    • 音频重采样SwrContext格式和swr_convert相关函数详解
    • swr_init音频重采样上下文初始化和swr_convert音频重采样代码示例
    • 分析GLSurfaceView和NDK接口直接显示RGB视频数据相关函数
    • 使用NDK通过GLSurfaceView双缓冲空间复制完成视频的播放
    • 安卓视频播放窗口去掉标题栏、全屏、横屏
  • OpenSLES音频播放

    • OpenSLES播放音频步骤和接口讲解
    • 创建OpenSLES音频播放测试项目并完成引擎初始化
    • 完成OpenSLES混音器CreateOutputMix初始化
    • 配置OpenSL的PCM音频输入格式
    • 读取pcm音频文件并使用OpenSL播放
  • EGL和OpenGLES Shader显示YUV视频

    • egl和opengl_shader_glsl讲解
    • testopengles_shader项目配置和创建_完成java部分代码
    • 使用NDKC++完成EGL、display、surface、contex配置和初始化
    • Opengl ES Shader顶点坐标和材质坐标分析
    • 顶点着色器代码glsl代码编写
    • yuv420p片元着色器glsl编写
    • shader初始化完成并编译顶点和片元着色器代码
    • program渲染程序初始化给shader传递顶点和材质顶点数据
    • opengl的yuv纹理的创建和初始化
    • OpenglES纹理数据修改和显示
    • 通过OpenglES纹理修改完成yuv文件的播放显示
  • 视频播放器项目实战一 需求和设计模式

    • 视频播放器项目设计说明和UML类图知识讲解
    • 模块分解和用到的7个设计模式讲解
    • 适配器、建造者、代理模式讲解
    • 门面模式&生产者消费者模式
    • Observer观察者模式讲解和应用
    • 解码显示帧数据处理顺序图和开发计划讲解
  • 视频播放器项目实战二 音视频解码解封装

    • 项目创建权限ABI和CMake相关库和头文件配置
    • 创建安卓流媒体播放器XPlay项目并配置添加了解封装模块代码及其依赖日志类
    • FFDemux的Open实现打开媒体文件
    • FFdemux的Read读取帧数据接口编写
    • 完成XThread线程类IDemux继承后在线程中读取帧数据
    • 添加了XSleep完成XThread线程函数的停止和超时判断
    • 观察者Observer模式的代码实现并使用IDemux进行测试
    • IDecode和FFDecode模块代码创建
    • FFDecode的Open打开解码器接口编写和Observer基类添加
    • 添加IDemux的GetVPara获取视频XParamter参数接口用IDecode的Open测试
    • 封装FFDecode解码的Send和Recv接口
    • 读取媒体帧数据获取类型信息(音频、视频)存入XData
    • 完成音视频解码和并重构解码器加入观察者模式
    • 加入生产者消费者模式控制音视频缓冲
  • 视频播放器项目实战三 音视频播放

    • IVideoView显示模块架构讲解和代码创建
    • IEGL类初始化封装java部分添加XPlay窗口类
    • XShader基于yuv420p的初始化Init代码完成并测试
    • XTexture初始化并完成GLVideoView的调用
    • GLVideoView完成使用shader显示视频
    • 完成音频重采样IResample模块初始化代码
    • 完成音频重采样IResample模块的处理功能
    • 完成了IAudioPlay和SLAudioPlay的音频播放环境初始化
    • IAudioPlay的Update将音频压入缓冲队列并测试
    • SLAudioPlay音频播放完成并测试对MP4文件音视频播放
    • 完成硬解码并完成NV21和NV12格式的shader显示编写
    • 解决android8.0下opengles不能播放的问题和音频播放的回音问题
  • 频播放器项目实战四 完成架构解决同步和seek

    • 完成facade模式的IPlayer并实现Open接口
    • 完成Iplayer开始播放和窗口初始化接口
    • 完成Builder模式的IPlayerBuilder构建IPlayer对象
    • 完成IPlayerProxy代理模式并进行测试架构搭建完成
    • 统一换算pts为毫秒使用IPlayer完成音视频同步播放
    • IDemux&FFdemux;线程安全和Close清理函数编写
    • FFdecode和FFResample线程安全处理和Close清理函数编写
    • SLAudioPlay的线程安全处理和Close清理函数编写
    • XEGL的线程安全处理和Close清理函数编写
    • XShader线程安全处理和Close清理函数编写
    • XTexture和GLVideoView的线程安全和清理函数编写
    • IPlayer完成Close清理函数编写并完成多次打开视频文件的测试
    • 添加打开视频按钮和进度滑动条并响应打开事件
    • 添加视频打开路径和香港卫视rtmp打开路径的界面
    • 完成通过界面多次打开视频文件,修正了多次打开显示出现的bug
    • 在835cpu的手机中测试并修正了音频播放Close的bug
    • 完成了播放进度的显示并修正了硬解码参数传递错误
    • 滑动条拖动Seek视频开发策略详细分析
    • 完成了IDemux的Seek和界面SeekBar的事件响应
    • 添加了视频播放的暂停和恢复
    • 修改了视频播放到结尾再次打开会锁死的bug
    • 通过手动解码帧数据完成了IPlayer控制视频播放进度的功能
回复
切换为未回复评论
切换为时间正序
请发表友善的回复…
发表回复
发表回复
按下Enter换行,Ctrl+Enter发表内容
编辑
预览
    轻敲空格完成输入
    • 显示为
    • 卡片
    • 标题
    • 链接

    反馈

    播放页问题反馈
    视频学习中有任何产品建议都可由此反
    馈,我们将及时处理!

    课时介绍

    由于平台附件大小限制,请购买课程后加群 23304930下载全部源码

    课程介绍

    课程包含了对流媒体(拉流)的播放,演示了播放rtmp的香港卫视,支持rtsp摄像头和http网络视频的播放,支持访问本地的视频文件,并精确显示和控制播放进度: 1讲解如何编译Android平台的ffmpeg库,使其支持neon技术和硬解码,并测试性能 2使用opengles的NDK shader高效播放yuv视频,不耗费cpu性能更优(GPU) 3代码支持硬解码(省电不耗cpu)和多线程解码(高性能每秒解码240帧1080p) 4支持网络流媒体(rtmp,rtsp,http)可直接拉流播放电视并支持rtsp摄像头访问 5课程将设计模式应用到实践 - 观察者,构建者,门面,代理,适配器,单件模式
    推荐课程

    信息系统项目管理师自考笔记

    李明 · 724人在学

    python从0到1:期货量化交易系统(CTP实战,高频及合成K线数据

    王先生 · 22111人在学

    手把手搭建Java超市管理系统【附源码】(毕设)

    汤小洋 · 4205人在学

    Java毕设springboot外卖点餐系统 毕业设计毕设源码 使用教

    黄菊华 · 788人在学

    基于SSM酒店管理系统(毕设)

    小尼老师 · 842人在学

    java项目实战之购物商城(java毕业设计)

    Long · 5154人在学

    手把手搭建Java求职招聘系统【附源码】(毕设)

    汤小洋 · 1506人在学

    Python Django 深度学习 小程序

    钟翔 · 2319人在学

    城管局门前三包管理系统+微信小程序(vue+springboot)

    赖国荣 · 598人在学

    Vue+Uni-app(uniapp)入门与实战+赠送仿美团点餐小程序

    李杰 · 3985人在学

    正在试验
    后自动删除环境
    课程实验
    本次实验时间已到期 00:00:00

      订阅失败

      基于NDK、C++、FFmpeg的android视频播放器开发实战
      基于NDK、C++、FFmpeg的android视频播放器开发实战 ...

      订阅列表已满,请先移出部分订阅内容。

      当前章节需购买后观看
      开通超级会员免费看!专家精选系列课程,满足你从入门到精通!更有问答月卡免费送,你的问题有问必答!
      提交答案

      购买课程

      扫码完成付费,可继续学习全部课程内容

      加载中...
      课件正在飞速打包中,请耐心等待几秒钟~

      视频问题反馈

      提交遇到的问题我们会尽快解决的 ~

      首页
      博客
      下载
      学习
      社区
      C知道
      GitCode
      InsCodeAI
      技术会议
      会员中心
      创作中心
      联系我们
      工作时间: 8:30 - 22:00
      客服电话: 400-660-0108
      kefu@csdn.net在线客服
      • 关于我们
      • 招贤纳士
      • 商务合作
      • 寻求报道
      • 京ICP备19004658号
      • 经营性网站备案信息
      • 公安备案号11010502030143
      • 营业执照
      • 北京互联网违法和不良信息举报中心
      • 家长监护
      • 中国互联网举报中心
      • 网络110报警服务
      • Chrome商店下载
      • 账号管理规范
      • 版权与免责声明
      • 版权申诉
      • 出版物许可证
      • ©1999-2024北京创新乐知网络技术有限公司