dmz社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 30136|回复: 142

[@] FFmpeg安卓流媒体播放器开发实战-基于NDK、C++和 FFmpeg

  [复制链接]
  • TA的每日心情

    2024-11-19 20:46
  • 签到天数: 244 天

    [LV.8]以坛为家I

    4434

    主题

    1459

    帖子

    1万

    积分

    会|员

    Rank: 9Rank: 9Rank: 9

    积分
    10734
    发表于 2019-12-23 11:00:04 | 显示全部楼层 |阅读模式
    程序人生
    课程方向: Android 
    课程类型: 项目实战 

    本站资源全部免费,回复即可查看下载地址!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    适用人群:
    掌握c++基础语法

    学习本课程的学员要求:
    本课程是具有很强实战性的应用编程,课程中会从原理讲解到代码实现,但由于项目有一定复杂度,希望学习本课程的同学要掌握c++的基本语法,课程中也用到java的代码但比较少,如果是c++程序员可以把我的java代码直接拿过去用,不一定要有java编程基础。

    课程说明:
    课程包含了对流媒体(拉流)的播放,演示了播放rtmp的香港卫视,支持rtsp摄像头和http网络视频的播放,支持访问本地的视频文件,并精确显示和控制播放进度。

    课程特色:
    1 课程由浅入深,原理讲解+代码实操演示,并提供全部课程源码
    2 讲解如何编译Android平台的ffmpeg库,使其支持neon和硬解码,并测试性能
    3 使用opengles的NDK shader高效播放yuv视频,不耗费cpu性能更优
    4 代码支持硬解码(省电不耗cpu)和多线程解码(高性能每秒解码240帧1080p)
    5 支持网络流媒体(rtmp,rtsp,http)可以直接拉流播放电视并支持rtsp摄像头访问
    6 使用opensles NDK 原生接口播放音频,不依赖第三方库
    7 课程将设计模式应用到实践-观察者、构建者、门面、代理、适配器、单件、和多线程的生产者消费者模式

    课程目录:
    ├─1. 课程介绍及音视频基础知识
    │      1. 介绍.mp4
    │      2. 音视频基础知识Mpeg4封装格式音视频编码格式讲解.mp4
    │      3. 音视频解封装和解码原理分析.mp4
    │      4. 图形像素格式RGB和YUV格式分析.mp4
    │      5. PCM音频采样率_通道_planar等格式参数分析.mp4
    │      6. MP4标准和h264格式的NAL的GOP分析.mp4
    │      
    ├─2. AndroidStudio开发工具和开发环境准备
    │      1. 开发所用到的工具和sdk介绍.mp4
    │      2. AndroidStudio开发工具安装使用讲解.mp4
    │      3. Android SDK目录内容分析.mp4
    │      4. AndroidNDK工具目录功能分析.mp4
    │      5. 安卓模拟器安装和第一个c++安卓程序编译运行.mp4
    │      5.1 010第一个c++安卓程序testlog8.zip.zip
    │      
    ├─3. Android NDK交叉编译FFMpeg并添加测试AS项目
    │      1. 安卓NDK相关概念ABI、NEON、JNI和CMAKE分析.mp4
    │      2. NDK中CPU的应用二进制界面ABI.mp4
    │      3. ubuntu虚拟机及常用工具安装并配置samba共享目录.mp4
    │      3.1 013ubuntu虚拟机及常用工具安装并配置samba共享目录.pdf.pdf
    │      4. ffmpeg源码下载在android下的编译参数分析讲解.mp4
    │      5. 在ubuntu下交叉编译ffmpeg的android版本库.mp4
    │      6. ffmpeg通用编译bash脚本编写、硬解码、neon、多线程解码性能对比.mp4
    │      6.1 016ffmpeg通用编译bash脚本和编译好的ffmpeg安卓库.zip.zip
    │      7. AndroidStudio项目配置权限、jni库路径、ABI和CMake参数和讲解.mp4
    │      8. cmake配置(导入库、头文件、链接)分析.mp4
    │      9. 创建支持ffmpeg的AndroidStudio项目并调用其接口在界面显示库配置信息.mp4
    │      9.1 019创建支持ffmpeg的AndroidStudio项目完成设置显示ffmpeg的库配置信息testffmpeg15.zip.zip
    │      10. JNI和c传递文件路径并设置app的读写权限.mp4
    │      10.1 020testffmpeg_jni传递字符串参数并设置app读写权限16.zip.zip
    │      
    ├─4. FFmpeg解封装(C++ NDK)
    │      1. ffmpeg SDK软硬解码流程说明.mp4
    │      2. ffmpeg音视频解封装用到的函数和结构体详解.mp4
    │      3. avformat_open_input函数详解并示例打开mp4文件.mp4
    │      3.1 023testffmpeg打开mp4文件19.zip.zip
    │      4. AVFormatContext结构分析和清理代码示例.mp4
    │      5. avformat_find_stream_info探测获取封装上下文的格式信息.mp4
    │      6. AVStream和AVCodecParameters分析.mp4
    │      7. 通过遍历获取AVStream音视频流信息并打印参数.mp4
    │      7.1 027testffmpeg_通过遍历获取AVStream音视频流信息并打印参数.zip.zip
    │      8. 通过av_find_best_stream获取音视频流索引.mp4
    │      9. av_read_frame读取帧数据函数分析和产生的空间问题分析.mp4
    │      10. AVPacket结构解析空间申请-初始化-复制-引用计数函数讲解.mp4
    │      11. av_seek_frame改变播放进度函数详解.mp4
    │      12. av_read_frame和av_seek_frame代码示例并分析内存占用和清理情况.mp4
    │      12.1 032testffmpeg_av_read_frame和av_seek_frame代码示例.zip.zip
    │      
    ├─5. FFmpeg软硬解和多线程解码(C++ NDK)
    │      1. AVCodecContext解码上下文初始化讲解和视频解码器打开的代码演示.mp4
    │      1.1 033testffmpeg_AVCodecContext解码上下文初始化.zip.zip
    │      2. 打开音频解码器上下文.mp4
    │      2.1 034testffmpeg_打开音频解码器上下文.zip.zip
    │      3. AVFrame格式解析和空间处理函数.mp4
    │      4. avcodec_send_packet和avcodec_receive_frame函数讲解.mp4
    │      5. 音视频多线程解码代码演示.mp4
    │      5.1 37testffmpeg_完成音视频解码.zip.zip
    │      6. 音视频解码性能测试neon单线程和八线程解码测试代码.mp4
    │      7. ffmpeg调用MediaCodec实现硬解码代码演示.mp4
    │      7.1 39testffmpeg_ffmpeg调用MediaCodec实现硬解码代码演示.zip.zip
    │      
    ├─6. FFMpeg音频重采样和视频格式转换和显示
    │      1. sws_getContext和sws_scale像素格式和尺寸转换函数讲解.mp4
    │      2. sws_scale像素格式转换代码演示.mp4
    │      2.1 41testffmpeg_37sws_scale像素格式转换代码演示.zip.zip
    │      3. 音频重采样SwrContext格式和swr_convert相关函数详解.mp4
    │      4. swr_init音频重采样上下文初始化和swr_convert音频重采样代码示例.mp4
    │      4.1 43testffmpeg_swr_init音频重采样上下文初始化和swr_convert音频重采样代码示例.zip.zip
    │      5. 分析GLSurfaceView和NDK接口直接显示RGB视频数据相关函数.mp4
    │      6. 使用NDK通过GLSurfaceView双缓冲空间复制完成视频的播放.mp4
    │      6.1 45testffmpeg使用NDK通过双缓冲空间复制完成视频的播放.zip.zip
    │      7. 安卓视频播放窗口去掉标题栏、全屏、横屏.mp4
    │      7.1 46testffmpeg安卓视频播放窗口去掉标题栏、全屏、横屏.zip.zip
    │      
    ├─7. OpenSLES音频播放
    │      1. OpenSLES播放音频步骤和接口讲解.mp4
    │      2. 创建OpenSLES音频播放测试项目并完成引擎初始化.mp4
    │      2.1 48TestOpenSL创建OpenSLES音频播放测试项目并完成引擎初始化.zip.zip
    │      3. 完成OpenSLES混音器CreateOutputMix初始化.mp4
    │      3.1 49TestOpenSL完成OpenSLES混音器CreateOutputMix初始化.zip.zip
    │      4. 配置OpenSL的PCM音频输入格式.mp4
    │      4.1 50TestOpenSL配置OpenSL的PCM音频输入格式.zip.zip
    │      5. 读取pcm音频文件并使用OpenSL播放.mp4
    │      5.1 51TestOpenSL读取pcm音频文件并使用OpenSL播放.zip.zip
    │      
    ├─8. EGL和OpenGLES Shader显示YUV视频
    │      1. egl和opengl_shader_glsl讲解.mp4
    │      2. testopengles_shader项目配置和创建_完成java部分代码.mp4
    │      3. 使用NDKC++完成EGL、display、surface、contex配置和初始化.mp4
    │      4. Opengl ES Shader顶点坐标和材质坐标分析.mp4
    │      5. 顶点着色器代码glsl代码编写.mp4
    │      5.1 56TestOpenglESshader初始化完成并编译顶点和片元着色器代码.zip.zip
    │      6. yuv420p片元着色器glsl编写.mp4
    │      6.1 57TestOpenglESshader初始化完成并编译顶点和片元着色器代码.zip.zip
    │      7. shader初始化完成并编译顶点和片元着色器代码.mp4
    │      7.1 58TestOpenglESshader初始化完成并编译顶点和片元着色器代码.zip.zip
    │      8. program渲染程序初始化给shader传递顶点和材质顶点数据.mp4
    │      8.1 59TestOpenglESprogram渲染程序初始化给shader传递顶点和材质顶点数据.zip.zip
    │      9. opengl的yuv纹理的创建和初始化.mp4
    │      9.1 60TestOpenglESopengl的yuv纹理的创建和初始化.zip.zip
    │      10. OpenglES纹理数据修改和显示.mp4
    │      10.1 61TestOpenglESopengl纹理数据修改和显示.zip.zip
    │      11. 通过OpenglES纹理修改完成yuv文件的播放显示.mp4
    │      11.1 62TestOpenglES通过opengl纹理修改完成yuv文件的播放显示.zip.zip
    │      
    └─9. 视频播放器项目实战一 需求和设计模式
            1. 视频播放器项目设计说明和UML类图知识讲解.mp4
            1.1 63UML类图箭头说明.png.png
            2. 模块分解和用到的7个设计模式讲解.mp4
            2.1 64安卓视频播放器类图.png.png
            3. 适配器、建造者、代理模式讲解.mp4
            4. 门面模式&生产者消费者模式.mp4
            5. Observer观察者模式讲解和应用.mp4
            6. 解码显示帧数据处理顺序图和开发计划讲解.mp4
            6.1 68播放媒体文件的顺序图.png.png
    │      
    ├─10. 视频播放器项目实战二 音视频解码解封装
    │      1. 项目创建权限ABI和CMake相关库和头文件配置.mp4
    │      2. 创建安卓流媒体播放器XPlay项目并配置添加了解封装模块代码及其依赖日志类.mp4
    │      3. FFDemux的Open实现打开媒体文件.mp4
    │      4. FFdemux的Read读取帧数据接口编写.mp4
    │      4.1 72XPlayFFdemux的Read读取帧数据接口编写.zip.zip
    │      5. 完成XThread线程类IDemux继承后在线程中读取帧数据.mp4
    │      6. 添加了XSleep完成XThread线程函数的停止和超时判断.mp4
    │      7. 观察者Observer模式的代码实现并使用IDemux进行测试.mp4
    │      7.1 75XPlay观察者Observer模式的代码实现并使用IDemux进行测试.zip.zip
    │      8. IDecode和FFDecode模块代码创建.mp4
    │      9. FFDecode的Open打开解码器接口编写和Observer基类添加.mp4
    │      10. 添加IDemux的GetVPara获取视频XParamter参数接口用IDecode的Open测试.mp4
    │      11. 封装FFDecode解码的Send和Recv接口.mp4
    │      12. 读取媒体帧数据获取类型信息(音频、视频)存入XData.mp4
    │      13. 完成音视频解码和并重构解码器加入观察者模式.mp4
    │      14. 加入生产者消费者模式控制音视频缓冲.mp4
    │      14.1 82XPlay完成音视频解码和并重构解码器加入观察者模式,加入生产者消费者模式控制音视频缓冲.zip.zip
    │      
    ├─11. 视频播放器项目实战三 音视频播放
    │      1. IVideoView显示模块架构讲解和代码创建.mp4
    │      1.1 83XPlayIVideoView显示模块架构讲解和代码创建.zip.zip
    │      2. IEGL类初始化封装java部分添加XPlay窗口类.mp4
    │      3. XShader基于yuv420p的初始化Init代码完成并测试.mp4
    │      4. XTexture初始化并完成GLVideoView的调用.mp4
    │      5. GLVideoView完成使用shader显示视频.mp4
    │      6. 完成音频重采样IResample模块初始化代码.mp4
    │      6.1 88XPlay完成音频重采样IResample模块.zip.zip
    │      7. 完成音频重采样IResample模块的处理功能.mp4
    │      8. 完成了IAudioPlay和SLAudioPlay的音频播放环境初始化.mp4
    │      9. IAudioPlay的Update将音频压入缓冲队列并测试.mp4
    │      10. SLAudioPlay音频播放完成并测试对MP4文件音视频播放.mp4
    │      11. 完成硬解码并完成NV21和NV12格式的shader显示编写.mp4
    │      12. 解决android8.0下opengles不能播放的问题和音频播放的回音问题.mp4
    │      12.1 94XPlay解决android8.0下opengles不能播放的问题和音频播放的回音问题.zip.zip
    │      
    ├─12. 视频播放器项目实战四 完成架构解决同步和seek
    │      1. 完成facade模式的IPlayer并实现Open接口.mp4
    │      1.1 95XPlay完成facade模式的IPlayer并实现Open接口.zip.zip
    │      2. 完成Iplayer开始播放和窗口初始化接口.mp4
    │      3. 完成Builder模式的IPlayerBuilder构建IPlayer对象.mp4
    │      4. 完成IPlayerProxy代理模式并进行测试架构搭建完成.mp4
    │      5. 统一换算pts为毫秒使用IPlayer完成音视频同步播放.mp4
    │      5.1 99XPlay统一换算pts为毫秒使用IPlayer完成音视频同步播放.zip.zip
    │      6. IDemux&FFdemux线程安全和Close清理函数编写.mp4
    │      7. FFdecode和FFResample线程安全处理和Close清理函数编写.mp4
    │      8. SLAudioPlay的线程安全处理和Close清理函数编写.mp4
    │      9. XEGL的线程安全处理和Close清理函数编写.mp4
    │      10. XShader线程安全处理和Close清理函数编写.mp4
    │      11. XTexture和GLVideoView的线程安全和清理函数编写.mp4
    │      12. IPlayer完成Close清理函数编写并完成多次打开视频文件的测试.mp4
    │      12.1 106XPlayIPlayer完成Close清理函数编写并完成多次打开视频文件的测试.zip.zip
    │      13. 添加打开视频按钮和进度滑动条并响应打开事件.mp4
    │      14. 添加视频打开路径和香港卫视rtmp打开路径的界面.mp4
    │      15. 完成通过界面多次打开视频文件,修正了多次打开显示出现的bug.mp4
    │      16. 在835cpu的手机中测试并修正了音频播放Close的bug.mp4
    │      17. 完成了播放进度的显示并修正了硬解码参数传递错误.mp4
    │      18. 滑动条拖动Seek视频开发策略详细分析.mp4
    │      19. 完成了IDemux的Seek和界面SeekBar的事件响应.mp4
    │      20. 添加了视频播放的暂停和恢复.mp4
    │      21. 修改了视频播放到结尾再次打开会锁死的bug.mp4
    │      22. 通过手动解码帧数据完成了IPlayer控制视频播放进度的功能.mp4
    │      22.1 116XPlay通过手动解码帧数据完成了IPlayer控制视频播放进度的功能.zip.zip

    游客,如果您要查看本帖隐藏内容请回复



    温馨提示:
    1、本站所有内容均为互联网收集或网友分享或网络购买,本站不破解、不翻录任何视频!
    2、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意!
    3、本站资源仅供本站会员学习参考,不得传播及用于其他用途,学习完后请在24小时内自行删除.
    4、本站资源质量虽均经精心审查,但也难保万无一失,若发现资源有问题影响学习请一定及时点此进行问题反馈,我们会第一时间改正!
    5、若发现链接失效了请联系管理员,管理员会在2小时内修复
    6、如果有任何疑问,请加客服QQ:1300822626 2小时内回复你!
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2020-1-7 13:18
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    0

    主题

    55

    帖子

    150

    积分

    心领神会

    Rank: 3Rank: 3

    积分
    150

    发表于 2019-12-23 11:15:33 | 显示全部楼层
    啥也不说了,感谢楼主分享哇!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    1 小时前
  • 签到天数: 1194 天

    [LV.10]以坛为家III

    2

    主题

    1536

    帖子

    6180

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    6180

    发表于 2019-12-24 09:17:58 | 显示全部楼层
    啥也不说了,感谢楼主分享哇!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-11-29 16:51
  • 签到天数: 110 天

    [LV.6]常住居民II

    0

    主题

    189

    帖子

    725

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    725

    发表于 2019-12-26 09:54:10 | 显示全部楼层
    啥也不说了,感谢楼主分享哇!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-9-13 16:38
  • 签到天数: 108 天

    [LV.6]常住居民II

    0

    主题

    190

    帖子

    672

    积分

    终身会员[B]

    积分
    672

    发表于 2019-12-27 09:05:13 | 显示全部楼层
    啥也不说了,感谢楼主分享哇!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-11-26 15:56
  • 签到天数: 245 天

    [LV.8]以坛为家I

    0

    主题

    3995

    帖子

    8832

    积分

    超凡入圣

    Rank: 10Rank: 10Rank: 10

    积分
    8832

    发表于 2019-12-27 14:18:15 | 显示全部楼层
    正需要,支持楼主大人了!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    4 天前
  • 签到天数: 238 天

    [LV.7]常住居民III

    1

    主题

    616

    帖子

    2048

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    2048

    发表于 2019-12-28 09:41:54 | 显示全部楼层
    啥也不说了,感谢楼主分享哇!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2021-11-13 10:26
  • 签到天数: 30 天

    [LV.5]常住居民I

    0

    主题

    123

    帖子

    385

    积分

    终身会员[B]

    积分
    385

    发表于 2019-12-28 23:00:12 | 显示全部楼层
    啥也不说了,感谢楼主分享哇!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2024-1-28 14:29
  • 签到天数: 56 天

    [LV.5]常住居民I

    1

    主题

    88

    帖子

    353

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    353

    发表于 2019-12-29 00:40:30 | 显示全部楼层
    正需要,支持楼主大人了!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    6 天前
  • 签到天数: 317 天

    [LV.8]以坛为家I

    0

    主题

    795

    帖子

    2736

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    2736

    发表于 2020-1-5 09:06:13 | 显示全部楼层
    啥也不说了,感谢楼主分享哇!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|小黑屋|本站代理|dmz社区

    GMT+8, 2024-12-23 11:34 , Processed in 0.094650 second(s), 42 queries .

    Powered by Discuz! X3.4 Licensed

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表