基于NDK、C++、FFmpeg的android视频播放器开发实战-夏曹俊-专题视频课程

视频教程 专栏收录该内容
26 篇文章 9 订阅
基于NDK、C++、FFmpeg的android视频播放器开发实战—1796人已学习
课程介绍    
201803131704097881.png
    课程包含了对流媒体(拉流)的播放,演示了播放rtmp的香港卫视,支持rtsp摄像头和http网络视频的播放,支持访问本地的视频文件,并精确显示和控制播放进度: 1讲解如何编译Android平台的ffmpeg库,使其支持neon技术和硬解码,并测试性能 2使用opengles的NDK shader高效播放yuv视频,不耗费cpu性能更优(GPU) 3代码支持硬解码(省电不耗cpu)和多线程解码(高性能每秒解码240帧1080p) 4支持网络流媒体(rtmp,rtsp,http)可直接拉流播放电视并支持rtsp摄像头访问 5课程将设计模式应用到实践 - 观察者,构建者,门面,代理,适配器,单件模式
课程收益
    1 课程由浅入深,原理讲解+代码实操演示,并提供全部课程源码 2 讲解如何编译Android平台的ffmpeg库,使其支持neon和硬解码,并测试性能 3 使用opengles的NDK shader高效播放yuv视频,不耗费cpu性能更优
讲师介绍
    夏曹俊 更多讲师课程
    夏曹俊:南京捷帝科技有限公司创始人,南京大学计算机硕士毕业,有15年c++跨平台项目研发的经验,领导开发过大量的c++虚拟仿真,计算机视觉,嵌入式图像处理,云安全审计项目,比赛鹰眼系统,主编出版过《C++实训教程》,并同时熟悉php,c#,java,安卓项目研发。
课程大纲
  第1章:课程介绍及音视频基础知识
    1. 课程介绍(由于平台附件大小限制,请购买课程后加群 23304930下载全部源码)  18:06
    2. 音视频基础知识Mpeg4封装格式音视频编码格式讲解  10:15
    3. 音视频解封装和解码原理分析  18:02
    4. 图形像素格式RGB和YUV格式分析  15:36
    5. PCM音频采样率_通道_planar等格式参数分析  8:37
    6. MP4标准和h264格式的NAL的GOP分析(下载课件是ppt)  15:53
  第2章:AndroidStudio开发工具和开发环境准备
    1. 开发所用到的工具和sdk介绍  7:29
    2. AndroidStudio开发工具安装使用讲解  9:22
    3. Android SDK目录内容分析  4:59
    4. AndroidNDK工具目录功能分析  5:43
    5. 安卓模拟器安装和第一个c++安卓程序编译运行  8:41
  第3章:Android NDK交叉编译FFMpeg并添加测试AS项目
    1. 安卓NDK相关概念ABI、NEON、JNI和CMAKE分析  12:32
    2. NDK中CPU的应用二进制界面ABI  9:00
    3. ubuntu虚拟机及常用工具安装并配置samba共享目录  19:10
    4. ffmpeg源码下载在android下的编译参数分析讲解  12:47
    5. 在ubuntu下交叉编译ffmpeg的android版本库  20:28
    6. ffmpeg通用编译bash脚本编写、硬解码、neon、多线程解码性能对比  24:19
    7. AndroidStudio项目配置权限、jni库路径、ABI和CMake参数和讲解  7:56
    8. cmake配置(导入库、头文件、链接)分析  10:44
    9. 创建支持ffmpeg的AndroidStudio项目并调用其接口在界面显示库配置信息  24:19
    10. JNI和c传递文件路径并设置app的读写权限  17:51
  第4章:FFmpeg解封装(C++ NDK)
    1. ffmpeg SDK软硬解码流程说明  5:08
    2. ffmpeg音视频解封装用到的函数和结构体详解  10:11
    3. avformat_open_input函数详解并示例打开mp4文件  17:54
    4. AVFormatContext结构分析和清理代码示例  8:23
    5. avformat_find_stream_info探测获取封装上下文的格式信息  9:04
    6. AVStream和AVCodecParameters分析  13:16
    7. 通过遍历获取AVStream音视频流信息并打印参数  16:08
    8. 通过av_find_best_stream获取音视频流索引  4:23
    9. av_read_frame读取帧数据函数分析和产生的空间问题分析  7:07
    10. AVPacket结构解析空间申请-初始化-复制-引用计数函数讲解  10:27
    11. av_seek_frame改变播放进度函数详解  8:37
    12. av_read_frame和av_seek_frame代码示例并分析内存占用和清理情况  10:04
  第5章:FFmpeg软硬解和多线程解码(C++ NDK)
    1. AVCodecContext解码上下文初始化讲解和视频解码器打开的代码演示  19:32
    2. 打开音频解码器上下文  5:14
    3. AVFrame格式解析和空间处理函数  9:37
    4. avcodec_send_packet和avcodec_receive_frame函数讲解  7:22
    5. 音视频多线程解码代码演示  9:06
    6. 音视频解码性能测试neon单线程和八线程解码测试代码  13:56
    7. ffmpeg调用MediaCodec实现硬解码代码演示  4:55
  第6章:FFMpeg音频重采样和视频格式转换和显示
    1. sws_getContext和sws_scale像素格式和尺寸转换函数讲解  12:43
    2. sws_scale像素格式转换代码演示  15:45
    3. 音频重采样SwrContext格式和swr_convert相关函数详解  5:17
    4. swr_init音频重采样上下文初始化和swr_convert音频重采样代码示例  17:08
    5. 分析GLSurfaceView和NDK接口直接显示RGB视频数据相关函数  9:34
    6. 使用NDK通过GLSurfaceView双缓冲空间复制完成视频的播放  22:31
    7. 安卓视频播放窗口去掉标题栏、全屏、横屏  6:42
  第7章:OpenSLES音频播放
    1. OpenSLES播放音频步骤和接口讲解  19:34
    2. 创建OpenSLES音频播放测试项目并完成引擎初始化  12:16
    3. 完成OpenSLES混音器CreateOutputMix初始化  6:11
    4. 配置OpenSL的PCM音频输入格式  4:39
    5. 读取pcm音频文件并使用OpenSL播放  23:41
  第8章:EGL和OpenGLES Shader显示YUV视频
    1. egl和opengl_shader_glsl讲解  13:55
    2. testopengles_shader项目配置和创建_完成java部分代码  11:48
    3. 使用NDKC++完成EGL、display、surface、contex配置和初始化  20:21
    4. Opengl ES Shader顶点坐标和材质坐标分析  10:52
    5. 顶点着色器代码glsl代码编写  7:01
    6. yuv420p片元着色器glsl编写  14:22
    7. shader初始化完成并编译顶点和片元着色器代码  11:40
    8. program渲染程序初始化给shader传递顶点和材质顶点数据  16:05
    9. opengl的yuv纹理的创建和初始化  18:06
    10. OpenglES纹理数据修改和显示  9:16
    11. 通过OpenglES纹理修改完成yuv文件的播放显示  5:22
  第9章:视频播放器项目实战一 需求和设计模式
    1. 视频播放器项目设计说明和UML类图知识讲解  13:28
    2. 模块分解和用到的7个设计模式讲解  13:31
    3. 适配器、建造者、代理模式讲解  14:16
    4. 门面模式&生产者消费者模式  7:12
    5. Observer观察者模式讲解和应用  5:18
    6. 解码显示帧数据处理顺序图和开发计划讲解  7:09
  第10章:视频播放器项目实战二 音视频解码解封装
    1. 项目创建权限ABI和CMake相关库和头文件配置  9:18
    2. 创建安卓流媒体播放器XPlay项目并配置添加了解封装模块代码及其依赖日志类  14:29
    3. FFDemux的Open实现打开媒体文件  16:27
    4. FFdemux的Read读取帧数据接口编写  11:21
    5. 完成XThread线程类IDemux继承后在线程中读取帧数据  13:57
    6. 添加了XSleep完成XThread线程函数的停止和超时判断  9:53
    7. 观察者Observer模式的代码实现并使用IDemux进行测试  14:11
    8. IDecode和FFDecode模块代码创建  9:58
    9. FFDecode的Open打开解码器接口编写和Observer基类添加  10:07
    10. 添加IDemux的GetVPara获取视频XParamter参数接口用IDecode的Open测试  5:55
    11. 封装FFDecode解码的Send和Recv接口  14:02
    12. 读取媒体帧数据获取类型信息(音频、视频)存入XData  8:13
    13. 完成音视频解码和并重构解码器加入观察者模式  12:13
    14. 加入生产者消费者模式控制音视频缓冲  19:14
  第11章:视频播放器项目实战三 音视频播放
    1. IVideoView显示模块架构讲解和代码创建  16:27
    2. IEGL类初始化封装java部分添加XPlay窗口类  19:29
    3. XShader基于yuv420p的初始化Init代码完成并测试  13:46
    4. XTexture初始化并完成GLVideoView的调用  14:06
    5. GLVideoView完成使用shader显示视频  27:49
    6. 完成音频重采样IResample模块初始化代码  9:40
    7. 完成音频重采样IResample模块的处理功能  22:23
    8. 完成了IAudioPlay和SLAudioPlay的音频播放环境初始化  32:09
    9. IAudioPlay的Update将音频压入缓冲队列并测试  9:44
    10. SLAudioPlay音频播放完成并测试对MP4文件音视频播放  9:54
    11. 完成硬解码并完成NV21和NV12格式的shader显示编写  35:39
    12. 解决android8.0下opengles不能播放的问题和音频播放的回音问题  4:32
  第12章:频播放器项目实战四 完成架构解决同步和seek
    1. 完成facade模式的IPlayer并实现Open接口  26:26
    2. 完成Iplayer开始播放和窗口初始化接口  8:30
    3. 完成Builder模式的IPlayerBuilder构建IPlayer对象  26:39
    4. 完成IPlayerProxy代理模式并进行测试架构搭建完成  12:19
    5. 统一换算pts为毫秒使用IPlayer完成音视频同步播放  25:41
    6. IDemux&FFdemux;线程安全和Close清理函数编写  7:00
    7. FFdecode和FFResample线程安全处理和Close清理函数编写  10:44
    8. SLAudioPlay的线程安全处理和Close清理函数编写  11:25
    9. XEGL的线程安全处理和Close清理函数编写  6:47
    10. XShader线程安全处理和Close清理函数编写  8:01
    11. XTexture和GLVideoView的线程安全和清理函数编写  7:57
    12. IPlayer完成Close清理函数编写并完成多次打开视频文件的测试  17:03
    13. 添加打开视频按钮和进度滑动条并响应打开事件  8:32
    14. 添加视频打开路径和香港卫视rtmp打开路径的界面  5:30
    15. 完成通过界面多次打开视频文件,修正了多次打开显示出现的bug  12:23
    16. 在835cpu的手机中测试并修正了音频播放Close的bug  9:48
    17. 完成了播放进度的显示并修正了硬解码参数传递错误  16:43
    18. 滑动条拖动Seek视频开发策略详细分析  7:09
    19. 完成了IDemux的Seek和界面SeekBar的事件响应  14:32
    20. 添加了视频播放的暂停和恢复  16:29
    21. 修改了视频播放到结尾再次打开会锁死的bug  8:30
    22. 通过手动解码帧数据完成了IPlayer控制视频播放进度的功能  15:32
大家可以点击【 查看详情】查看我的课程
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

夏曹俊

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值