[C/C++] 基于NDK/C++/FFmpeg/Android视频(流媒体)播放器开发实战-2019年Udemy

192
回复
6320
查看
  [复制链接]
  • TA的每日心情
    无聊
    8 小时前
  • 签到天数: 910 天

    [LV.10]以坛为家III

    2606

    主题

    4288

    帖子

    12万

    积分

    【管理员】

    Rank: 9Rank: 9Rank: 9

    积分
    124561
    发表于 2019-5-6 01:00:00 | 显示全部楼层 |阅读模式
    10.png
    〖课程介绍〗:0 @4 P4 ~2 G# |0 C$ ?% Y' Q
            适用人群:* n5 J& o1 z. t" B" r3 v8 N* B
                    掌握c++基础语法,想要学习android平台编程,或者想要实践NDK编程的同学,想要学习音视频技术的同学. i! b7 f% ]2 `# l

    4 v4 G$ m1 e6 b9 B& j        课程概述:0 \2 ]# v, t: A" x6 M/ V/ |. ~$ ]
                    Android影音(流媒体)播放器开发实战基于NDK、C++和FFmpeg
    & U, v( w" q/ G+ d  N4 f8 S. ?  e: q1 n' b! I. k7 ^1 ]6 }
            对学员要求:
    5 y& k5 |4 H; |1 ]6 I                本课程是具有很强实战性的应用编程,课程中会从原理讲解到代码实现,但由于项目有一定复杂度,希望学习本课程的同学要掌握c++的基本语法,课程中也用到java的代码但比较少,如果是c++程序员可以把我的java代码直接拿过去用,不一定要有java编程基础。
    , ?2 q4 k6 M2 t7 W1 D; {3 p- P
    ( T& S1 _; }  ~  _' q5 G        课程说明:6 d8 L' T& m8 p/ s) {
                    课程包含了对流媒体(拉流)的播放,演示了播放rtmp的香港卫视,支持rtsp摄像头和http网络视频的播放,支持访问本地的视频文件,并精确控制播放进度。
    ' f' N/ g- x2 ~( f+ b5 D9 N
    , L, z4 g9 [" f% M3 Y        课程特色:' w& D' i; N+ ]" V
                    1 课程由浅入深,原理讲解+代码实操演示,并提供全部课程源码! D1 d/ N6 b% k9 ~+ T
                    2 讲解如何编译Android平台的ffmpeg库,使其支持neon和硬解码,并测试性能
    & [/ i# ~: ]$ ~' b/ g: Z                3 使用opengles的NDK shader高效播放yuv视频,不耗费cpu性能更优
    8 T, N6 ~4 v) H9 {& R& |$ [0 k" I                4 代码支持硬解码(省电不耗cpu)和多线程解码(高性能每秒解码240帧1080p)
    ( i; x5 P: y1 `- s                5 支持网络流媒体(rtmp,rtsp,http)可以直接拉流播放电视并支持rtsp摄像头访问/ x! X/ p/ c2 X5 T) U
                    6 使用opensles NDK 原生接口播放音频,不依赖第三方库" k) M$ C+ ]8 A& u  L+ B3 X, }  I
                    7 课程将设计模式应用到实践-观察者、构建者、门面、代理、适配器、单件、和生产者消费者。
      C0 M! y  |& K* D4 s/ A9 p               
    ; e' V( P& f' b1 `, V〖课程目录〗:, J/ h0 d, N1 b" r$ e6 t
            章节1:课程介绍及音视频基础知识
    & _" ?! r) J/ w3 g* f$ O        课时1课程介绍18:061 M) I- y2 l9 S' D7 h0 K+ v. Y
            课时2音视频基础知识Mpeg4封装格式音视频编码格式讲解10:15) |. `2 B5 ?3 T; ?9 z2 l
            课时3音视频解封装和解码原理分析18:01
    5 ~* e! n1 }* w. k1 W* A6 C        课时4图形像素格式RGB和YUV格式分析15:36: [: k  R2 S# s$ \; k* O- M
            课时5PCM音频采样率_通道_planar等格式参数分析08:37
    3 O4 N' W8 G; i7 `  N7 s        课时6MP4标准和h264格式的NAL的GOP分析15:53
    * v8 O( p3 }: o$ S& \+ L6 g$ Q# l        章节2:AndroidStudio开发工具和开发环境准备# t8 ]1 Y6 Z6 g+ L7 M0 e
            课时7开发所用到的工具和sdk介绍07:29
    + V: W: e+ |6 K6 h9 `9 m        课时8AndroidStudio开发工具安装使用讲解09:22& E! l& C) u+ G4 a9 d6 c" D
            课时9Android SDK目录内容分析04:59
    + Z- T8 x# y) m        课时10AndroidNDK工具目录功能分析05:43
    ' J5 k4 K3 L# _# S/ l4 F. p0 X$ ]7 ?        课时11安卓模拟器安装和第一个c++安卓程序编译运行08:41
    $ g- w6 P0 ?" m        章节3:Android NDK交叉编译FFMpeg1 T' B6 j9 u% M% y" v# f
            课时12安卓NDK相关概念ABI、NEON、JNI和CMAKE分析12:325 n) o( r2 K3 x, p5 y7 Z: [$ O
            课时13NDK中CPU的应用二进制界面ABI09:00: V/ N( e% F& H
            课时14ubuntu虚拟机及常用工具安装并配置samba共享目录19:10
    & K# m) T2 S5 O5 w6 d  L- ?8 [        课时15ffmpeg源码下载在android下的编译参数分析讲解12:46/ v  S8 P- R/ a: B% v2 t
            课时16在ubuntu下交叉编译ffmpeg的android版本库20:28
      K6 j" q! r2 [4 [0 I% H        课时17ffmpeg通用编译bash脚本编写、硬解码、neon、多线程解码性能对比24:19
    8 c. s7 r! @* l        课时18AndroidStudio项目配置权限、jni库路径、ABI和CMake参数和讲解07:568 g0 T* c) G9 G# j# J8 o& f+ Z8 T
            课时19cmake配置(导入库、头文件、链接)分析10:44
    . X7 j) n! Y1 B$ ^% L        课时20创建支持ffmpeg的AndroidStudio项目并调用接口在界面显示库配置24:19
    6 V9 j1 ]% I- {5 R9 w        课时21JNI和c传递文件路径并设置app的读写权限17:51' m. ^* _7 b" N; u$ D
            章节4:FFmpeg解封装(C++ NDK)
    1 A0 S; G" @. L        课时22ffmpeg SDK软硬解码流程说明05:08
    1 B+ t- F8 S# V- h        课时23ffmpeg音视频解封装用到的函数和结构体详解10:11
    : J( d& I; j* x7 R0 m) X+ t        课时24avformat_open_input函数详解并示例打开mp4文件17:54
    % A* _( r6 o6 ?8 e, U( O* ]        课时25AVFormatContext结构分析和清理代码示例08:23  p) P' R+ H3 G
            课时26avformat_find_stream_info探测获取封装上下文的格式信息09:049 y1 C1 O9 y) t# T- Y6 S
            课时27AVStream和AVCodecParameters分析13:16
    " X" ?) K; O! }7 A        课时28通过遍历获取AVStream音视频流信息并打印参数16:08
    " m4 u& g$ C1 L        课时29通过av_find_best_stream获取音视频流索引04:23
    0 J# X$ `- r  D. ^9 Y2 g        课时30av_read_frame读取帧数据函数分析和产生的空间问题分析07:06
    . g: _9 U- C9 q; `( N+ e9 b        课时31AVPacket结构解析空间申请-初始化-复制-引用计数函数讲解10:27; O' J! S' E7 R) \' H9 _
            课时32av_seek_frame改变播放进度函数详解08:374 _. t% d, l) n1 g1 E6 l
            课时33av_read_frame和av_seek_frame代码示例并分析内存占用和清理情况10:03
    9 o0 S! C! G6 Y5 c; _        章节5:FFmpeg软硬解和多线程解码(C++ NDK)
    6 ]7 Q5 e* g8 W& L* V3 L* Z$ Z        课时34AVCodecContext解码上下文初始化讲解和视频解码器打开的代码演示19:32+ K8 [6 O' [- W, K, `) Q  V
            课时35打开音频解码器上下文05:14- C( ^3 m* J: i  u
            课时36AVFrame格式解析和空间处理函数09:37- R2 k1 q; I! U+ e4 o1 Z8 W7 r
            课时37avcodec_send_packet和avcodec_receive_frame函数讲解.07:22  p7 b+ a' N. m1 s
            课时38音视频多线程解码代码演示09:06: k2 b) `4 `$ T3 c
            课时39音视频解码性能测试neon单线程和八线程解码测试代码13:56
    ( Y5 F# @5 Q. u: E" W: i" K        课时40ffmpeg调用MediaCodec实现硬解码代码演示04:55* O' P6 ?0 @* c0 B0 N) U3 l# a' w
            章节6:FFMpeg音频重采样和视频格式转换和显示
      @, R9 P9 t, F1 J        课时41sws_getContext和sws_scale像素格式和尺寸转换函数讲解12:43
    & H1 S, P, k& w  e: k        课时42sws_scale像素格式转换代码演示15:45) u: J* ?* h5 S/ n' t7 F, ^
            课时43音频重采样SwrContext格式和swr_convert相关函数详解05:17
    , d3 R+ ]/ d! F3 {/ i, l# B# [8 u        课时44swr_init音频重采样上下文初始化和swr_convert音频重采样代码17:08
    0 h5 Y6 T9 N- F- @2 V        课时45分析GLSurfaceView和NDK接口直接显示RGB视频数据相关函数09:348 N" }/ f, w0 E( p
            课时46使用NDK通过GLSurfaceView双缓冲空间复制完成视频的播放22:31% y1 e1 V9 U: A3 ~# Y. n
            课时47安卓视频播放窗口去掉标题栏、全屏、横屏06:42+ M7 E: i5 `1 K7 v* X) g
            章节7:OpenSLES音频播放% ^9 X" ?. S) Z- f
            课时48OpenSLES播放音频步骤和接口讲解19:34- G3 E+ F2 u, u
            课时49创建OpenSLES音频播放测试项目并完成引擎初始化12:16+ p, w$ M1 S+ _- Z/ @6 g* `( w. P7 w
            课时50完成OpenSLES混音器CreateOutputMix初始化06:110 Y' {& _+ Q% R7 ?$ q. h: w
            课时51配置OpenSL的PCM音频输入格式04:39
    $ {+ p0 g! H& a8 K, J4 \/ ]2 h        课时52读取pcm音频文件并使用OpenSL播放23:41$ g# ^# B' A# b8 y0 H7 `9 L+ M
            章节8:EGL和OpenGLES Shader显示YUV视频
      v% N) |- _4 I$ z4 h        课时53egl和opengl_shader_glsl讲解13:550 Z: `7 D, z9 F  @: c
            课时54testopengles_shader项目配置和创建_完成java部分代码11:47
    # ^& _3 `* Y6 y" c& f- m        课时55使用NDKC++完成EGL、display、surface、contex配置和初始化20:21+ Z/ n% T& |  M9 A2 |
            课时56Opengl ES Shader顶点坐标和材质坐标分析10:527 b4 t8 o0 P' T; l
            课时57顶点着色器代码glsl代码编写07:01. ~7 u/ L0 W+ T$ _) V
            课时58yuv420p片元着色器glsl编写14:22
    & y9 D# ^1 Q4 }* V        课时59shader初始化完成并编译顶点和片元着色器代码11:40
    * Y0 }. @& {  k2 ]1 s4 x7 q0 g        课时60program渲染程序初始化给shader传递顶点和材质顶点数据16:05
    : o& V1 I% U1 @1 S7 E, C' K        课时61opengl的yuv纹理的创建和初始化18:06- W4 J8 G8 q- a& q! c' l
            课时62OpenglES纹理数据修改和显示09:16# w' A6 p* u6 ~  s
            课时63通过OpenglES纹理修改完成yuv文件的播放显示05:22; f2 D1 {; c/ Z
            章节9:视频播放器项目实战1-需求和设计模式0 X( y& [/ C4 _
            课时64视频播放器项目设计说明和UML类图知识讲解13:289 a9 B0 R& S- |' F2 _
            课时65模块分解和用到的7个设计模式讲解13:31
    / L3 U7 Y3 e5 j. L        课时66适配器、建造者、代理模式讲解14:16
    ) t2 Z6 R# x9 N, w4 ?4 e        课时67门面模式&生产者消费者模式07:11
    " V# V( h" C' b        课时68Observer观察者模式讲解和应用05:188 Z7 N1 p; X3 F; ^# f" ~
            课时69解码显示帧数据处理顺序图和开发计划讲解07:09; n6 {6 B" _# k
            章节10:视频播放器项目实战二 音视频解码解封装
    % B$ p; G" T% G        课时70项目创建权限ABI和CMake相关库和头文件配置09:17
    7 N0 Z* A8 f* m3 t/ n. c        课时71创建安卓流媒体播放器XPlay项目并配置添加了解封装模块及日志类14:29
    4 |+ i5 w  j' i! j1 ^9 V        课时72FFDemux的Open实现打开媒体文件16:26+ ?3 Y% G) u. Y/ E+ @+ H
            课时73FFdemux的Read读取帧数据接口编写11:21
    2 a8 N6 V% p# O8 u        课时74完成XThread线程类IDemux继承后在线程中读取帧数据13:57
    5 \) g. {* v  f' D: C        课时75添加了XSleep完成XThread线程函数的停止和超时判断09:53
    . o+ ^. T( f+ c; _        课时76观察者Observer模式的代码实现并使用IDemux进行测试14:11
    - Z9 V' O, O- ~% Y" s        课时77IDecode和FFDecode模块代码创建09:58
    % K4 b3 x. A/ U: c. L. r7 _5 k        课时78FFDecode的Open打开解码器接口编写和Observer基类添加10:07
    / w2 y7 ^. C, E5 Z) z; p        课时79添加IDemux的GetVPara获取视频XParamter参数接口用IDecode的Open05:55; K9 p6 ]0 g+ O* R6 ^
            课时80封装FFDecode解码的Send和Recv接口14:02# y% L3 v; k0 {6 Z. J3 H$ O
            课时81读取媒体帧数据获取类型信息(音频、视频)存入XData08:13: N) \0 M" n6 p' w4 D$ B/ o
            课时82完成音视频解码和并重构解码器加入观察者模式12:13
      x1 S4 X+ E, R5 X        课时83加入生产者消费者模式控制音视频缓冲19:14
    0 G5 V% i+ T3 B        章节11:视频播放器项目实战三 音视频播放
    5 E# v& s; ]7 L# W% k        课时84IVideoView显示模块架构讲解和代码创建16:27
    # c6 @3 U! S! n0 F( f; T3 V6 X        课时85IEGL类初始化封装java部分添加XPlay窗口类19:28
    . \2 s6 W& `. [. k        课时86XShader基于yuv420p的初始化Init代码完成并测试13:46
    - M/ a' Z: l( n$ O7 @: o4 Q0 x3 r        课时87XTexture初始化并完成GLVideoView的调用14:06( i/ _, @3 f, R# I* {7 P
            课时88GLVideoView完成使用shader显示视频27:49# [. m3 O+ \  o" ^& e# S
            课时89完成音频重采样IResample模块初始化代码09:400 h9 q- E' `5 R1 F
            课时90完成音频重采样IResample模块的处理功能22:23
    , I, q0 F5 m7 R. H        课时91完成了IAudioPlay和SLAudioPlay的音频播放环境初始化32:09
    7 X  E$ C) I& v# a* M- _        课时92IAudioPlay的Update将音频压入缓冲队列并测试09:44
    : Q/ A0 q) u2 S4 _6 Y        课时93SLAudioPlay音频播放完成并测试对MP4文件音视频播放09:53
      g$ x7 A6 q' y, h4 l        课时94完成硬解码并完成NV21和NV12格式的shader显示编写35:32
    2 o; @) U. k" r0 f3 w. |4 E- {2 `        课时95解决android8.0下opengles不能播放的问题和音频播放的回音问题04:32
    7 e9 v. N9 I4 }5 W        章节12:频播放器项目实战四 完成架构解决同步和seek
    ) W7 G' V. N! ]        课时96完成facade模式的IPlayer并实现Open接口.26:268 p  j. S# g. }% g
            课时97完成Iplayer开始播放和窗口初始化接口08:30
    0 ~7 ^4 q$ }, p+ k8 ~        课时98完成Builder模式的IPlayerBuilder构建IPlayer对象26:38
    # V" a0 @/ H8 [$ V, {8 V        课时99完成IPlayerProxy代理模式并进行测试架构搭建完成12:19' j, A5 h+ L9 G
            课时100统一换算pts为毫秒使用IPlayer完成音视频同步播放25:41' I/ ^% ^) O8 O' v
            课时101IDemux&FFdemux线程安全和Close清理函数编写07:00
    6 Y% k7 e0 v& ~/ _/ w        课时102FFdecode和FFResample线程安全处理和Close清理函数编写10:44$ N- G  ?8 Z- F0 K' X
            课时103SLAudioPlay的线程安全处理和Close清理函数编写11:25
    , E( E6 O; Q5 U9 a+ m        课时104XEGL的线程安全处理和Close清理函数编写06:47  k) t. r0 l: Q0 J# j$ [, J
            课时105XShader线程安全处理和Close清理函数编写08:01# p' x3 m' ~9 a4 ]
            课时106XTexture和GLVideoView的线程安全和清理函数编写07:57" F) Y$ `& Y! R/ Z7 ^! O5 J
            课时107IPlayer完成Close清理函数编写并完成多次打开视频文件的测试17:03/ [. J! a$ A+ a; B! G8 l
            课时108添加打开视频按钮和进度滑动条并响应打开事件08:32
    1 `. e7 u/ f8 X2 a+ }! e        课时109添加视频打开路径和香港卫视rtmp打开路径的界面05:29; I6 p5 l! @! `  Q% E
            课时110完成通过界面多次打开视频文件,修正了多次打开显示出现的bug12:22
    3 b' m: \# _$ m        课时111在835cpu的手机中测试并修正了音频播放Close的bug09:48
    ) g! m# H$ Y& l* B. Y) r" S        课时112完成了播放进度的显示并修正了硬解码参数传递错误16:43
    1 {+ e' ?. D: M- n% N0 v        课时113滑动条拖动Seek视频开发策略详细分析07:08
    9 B; z* }5 z2 v; I/ V& k# d        课时114完成了IDemux的Seek和界面SeekBar的事件响应14:32
    $ G) _- P4 z; `4 e1 Y3 O        课时115添加了视频播放的暂停和恢复16:295 r- f- ~0 f1 A$ g$ ?5 u
            课时116修改了视频播放到结尾再次打开会锁死的bug08:30$ u  O  L: N7 X( g  U5 \
            课时117通过手动解码帧数据完成了IPlayer控制视频播放进度的功能15:31/ ~) I. T) y# {9 G4 y
    6 e) s; U/ ?. A5 W
    〖视频截图〗:
    11.png
    12.png
    〖百度网盘下载地址〗:
    游客,如果您要查看本帖隐藏内容请回复

    1 t: E4 R* U# i3 L0 J# @; d$ _---------------------------------华丽分割线-----------------------------------华丽分割线--------------------------华丽分割线-------------------------华丽分割线-----------------------
    . K% \8 Y! Z& x1 x$ c6 S# r4 J! {0 a9 o
    : i& r3 {( x( b! i; }〖下载地址失效反馈〗:
    9 z& _( m$ J6 `  L6 @" T; E0 _5 y2 S如果下载地址失效,请尽快反馈给我们,我们尽快修复。反馈地址:https://www.itspxx.com/forum-85-1.html: I# P, J" h7 B) s9 e% V# \, d
    5 D; S2 K1 Y( M$ V
    〖赞助VIP免学币下载全站资源〗:
    : ?/ B4 F  g9 `' l0 J- l" U+ H8 W/ {$ Y全站资源高清无密,每天更新,vip特权了解一下:https://www.itspxx.com/plugin.php?id=threed_vip#vip_info7 U! K/ ^: b/ C/ \+ v
    ) ?+ m; |$ j' p
    〖客服24小时咨询〗:1 h1 e: o+ O# [+ w
    有任何问题,请点击右侧QQ咨询。
    美好的一天,从签到开始...
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-6-16 21:19
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    1

    主题

    32

    帖子

    258

    积分

    3星会员

    Rank: 3Rank: 3

    积分
    258
    发表于 2019-5-6 10:20:54 | 显示全部楼层
    看到这样的好资源真是高兴!感谢【it视频学习网】的无私分享!
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 09:38
  • 签到天数: 661 天

    [LV.9]以坛为家II

    1

    主题

    1448

    帖子

    1万

    积分

    【永久VIP会员】

    Rank: 8Rank: 8

    积分
    16422
    发表于 2019-5-6 11:50:12 | 显示全部楼层
    强烈支持it视频学习网,it视频学习网就是给力!
    回复

    使用道具 举报

  • TA的每日心情

    2020-9-27 21:25
  • 签到天数: 163 天

    [LV.7]常住居民III

    1

    主题

    481

    帖子

    4865

    积分

    【永久VIP会员】

    Rank: 8Rank: 8

    积分
    4865
    发表于 2019-5-6 13:34:43 | 显示全部楼层
    强烈支持it视频学习网,it视频学习网就是给力!
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    5 天前
  • 签到天数: 207 天

    [LV.7]常住居民III

    4

    主题

    389

    帖子

    4439

    积分

    【永久VIP会员】

    Rank: 8Rank: 8

    积分
    4439
    发表于 2019-5-6 22:10:44 | 显示全部楼层
    看到这样的好资源真是高兴!感谢【it视频学习网】的无私分享!
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    前天 21:45
  • 签到天数: 252 天

    [LV.8]以坛为家I

    5

    主题

    490

    帖子

    6252

    积分

    【永久VIP会员】

    Rank: 8Rank: 8

    积分
    6252
    发表于 2019-5-8 09:31:32 | 显示全部楼层
    真是难得给力的资源啊!支持【IT视频学习网】!
    回复

    使用道具 举报

  • TA的每日心情

    5 天前
  • 签到天数: 141 天

    [LV.7]常住居民III

    4

    主题

    234

    帖子

    2912

    积分

    【永久VIP会员】

    Rank: 8Rank: 8

    积分
    2912
    发表于 2019-5-8 10:26:58 | 显示全部楼层
    看到这样的好资源真是高兴!感谢【it视频学习网】的无私分享!
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2021-2-10 07:38
  • 签到天数: 375 天

    [LV.9]以坛为家II

    13

    主题

    1179

    帖子

    1万

    积分

    【永久VIP会员】

    Rank: 8Rank: 8

    积分
    10911
    发表于 2019-5-8 13:32:47 | 显示全部楼层
    太生气了,无法HOLD啦 >_<......为什么我才发现【it视频学习网】这样的好站!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    5 天前
  • 签到天数: 196 天

    [LV.7]常住居民III

    16

    主题

    529

    帖子

    5025

    积分

    【永久VIP会员】

    Rank: 8Rank: 8

    积分
    5025
    发表于 2019-5-8 16:58:37 | 显示全部楼层
    【IT视频学习网】加油,我们都看好你哦,快分享更多好资源吧!
    回复

    使用道具 举报

  • TA的每日心情

    5 天前
  • 签到天数: 141 天

    [LV.7]常住居民III

    4

    主题

    234

    帖子

    2912

    积分

    【永久VIP会员】

    Rank: 8Rank: 8

    积分
    2912
    发表于 2019-5-8 19:41:43 | 显示全部楼层
    看到这样的好资源真是高兴!感谢【it视频学习网】的无私分享!
    回复

    使用道具 举报

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

    本版积分规则

    用心服务IT技术爱好者
    资源涵盖Java,PHP,C/C++,Python,Android,iOS
    微信小程序,人工智能,大数据云计算,web前端
    游戏开发,多媒体与设计,运维相关,产品相关
    等等等有价值的VIP资源
    QQ:630965719
    周一至周日 9:00-21:00
    意见反馈:630965719@qq.com

    www.itspxx.com -IT视频学习网 -IT网络资源分享吧 本站资源源自互联网收集及网友分享-如有侵权请发邮件到630965719@qq.com联系删除!(ICP备案证书号: 粤ICP备18097687号-1 )