移动端音频视频入门

课程地址:https://www.imooc.com/learn/959

210705_ah3u_3018050.png 

一、万人直播架构与CDN网络

1.直播分类

210729_NnNM_3018050.png

与固话互联,要求延迟不超过400毫秒

2.泛娱乐化直播架构

211000_ILk4_3018050.png

cdn最重要

211126_zYpo_3018050.png

3.实时互动直播架构

211150_PVsW_3018050.png

tcp协议是可靠的流式传输协议——A向B发送数据,必须收到且是有序的

发送,确认,超时,重发

可以重发三次,每次等待超时的时间都是成倍增长。如果网络不好的话,等待时间就会很长

tcp不可能达到实时传输效果

211611_Qdja_3018050.png

使用UDP来传输,一直发包,至于是否收到,不管

基于音视频数据是有实时有效性的,所以选择UDP来达到实时互动效果

udp没有现成网络,要自己创建

211833_5p03_3018050.png

服务端多节点,一旦一个节点出现问题,可以快速切换到另一个节点,每个节点负载均衡

211930_mALh_3018050.png

每个节点都要定时向控制中心报告数据

212012_UMd7_3018050.png

内总线-保证数据安全

212246_qH2D_3018050.png

通过内部总线传到媒体服务器上,cdn网络使用rtmp协议,媒体服务器起到转换作用,从rtp到rtmp

212321_haFO_3018050.png

用户获得cnd的流,直接观看

4、CDN网络介绍

CDN:为了解决用户访问网络资源慢而出现的

链路过长,运营商各自利益

213015_prMq_3018050.png

213046_RiH0_3018050.png

用户访问资源流程

电信用户通过DNS或者http先找到就近边缘节点,如果数据没有,直接到主干节点,看资源是在哪提供的服务,如果是在联通上,就会到联通的主干节点上访问,如果数据没有,就会到联通的源节点上,如果找到数据,再通过原节点返回。如果是第一个用户,就会走很长时间,如果其他用户也访问此数据,那么数据就会缓存到边缘节点上,可以直接从边缘节点上直接访问,加快速度

传统的cdn网络会追求一些热点,将一些热点放到缓存里

对于直播的cnd网络,一般会通过源直接push到主干节点,让数据都存在,与推拉是相结合的

5.亲手搭建一套简单的直播系统

214317_IHLw_3018050.png

ffmpeg-常见音视频格式转化库,音视频抽取(eg:小咖秀),视频上打水印,去水印,倍速播放,音视频剪辑

ffplay-播放器,命令行的。基于ffmpeg做的二次开发

flashplayer-播放rtmp流的,可以对rtmp协议做分析

214430_1JGg_3018050.png

214442_T6SU_3018050.png

安装时间会长一些,nginx服务默认不包括rtmp服务

214629_Y5Je_3018050.png

214711_QVtd_3018050.png

214722_p7YA_3018050.png

工作处理器个数:1

事件里的连接数:1024

配置文件增加rtmp的配置项

端口:1935

音视频传输,每个块大小:4000字节

指定一个特殊应用:live

应用打开,关闭录制,允许任何人向我发起请求

wq!退出

nginx -s reload

重启服务

nginx

如果是第一次,直接启动就可以

215144_zji7_3018050.png

查看是否有1935端口

netstat -an |grep 1935

使用tcp协议,使用ipv4

215252_NW7H_3018050.png

-i是输入

(1)通过ffmpeg方法

215329_ul2T_3018050.png

215416_jK9b_3018050.png

讲一个直播地址上的音视频流推送到本地上

http://bbs.chinaffmpeg.com/1.swf

215505_eW9p_3018050.png

215606_NyPt_3018050.png

输入所要拉流的服务器地址

215638_XUvY_3018050.png

播放

(2)通过ffplay播放

ffplay rtmp://localhost:1935/live/room

215732_9Lgx_3018050.png

(3)通过手机推流

215947_48r3_3018050.png

220001_WBAr_3018050.png

通过手机推送到了mac本上,通过ffplay再从流媒体上抓取音视频流

220233_I0TS_3018050.png

有两个终端观看

二、音频入门

1.声音三要素

220652_WAMM_3018050.png

220739_CCPD_3018050.png

220816_mFlm_3018050.png

越接近正弦波,声音一般越好听,畸形或产生噪波

220956_Wg9W_3018050.png

音频压缩,就可以采集到很多数据,砍掉人类听不见的,减少数据存储量

221115_xL4e_3018050.png

2,音频的量化与编码

221314_RRNE_3018050.png

221949_rEcU_3018050.png

低频20hz,在44.1k采样频率里,每秒采样2k次

高频20000hz,在44.1k采样频率里,每秒采样2次

222007_kKid_3018050.png

 

3.音频压缩

222300_VNe5_3018050.png

222738_ZaBE_3018050.png

222752_e4KW_3018050.png

223014_UQnk_3018050.png

发声之前的50毫秒如果有个声音特别小,就会被遮盖掉

发生后的100毫秒也会被遮盖

223141_d8Zi_3018050.png

 

4.音频编码jiema器选型

223731_ZYLu_3018050.png

 

实时互动系统可以用opus

泛娱乐化直播一般使用AAC,opus一般不支持,推广上有些困难

两个系统融合,需要将opus与AAC互转

speex:回音消除,降噪模块等可实现

G.711:有些会与固话相联系,固话用的就是G.711,或者G.722

223744_kmjL_3018050.png

绿色:开源且不收费

蓝色:不开源不收费

红色:不开源收费

5.AAC讲解

(1)为什么重点介绍AAC

应用范围广,直播系统90%以上使用

传输协议,像cdn,支持rtmp,但是不支持opus

AAC的音频编解码可以保持高保真

(2)AAC出现的原因

224456_9oD0_3018050.png

224535_80yu_3018050.png

224840_Mrf4_3018050.png

SBR:降低低频的采样率,提高对高频的采样率,降低大小,提高音质

ps:把立体声保存,一个声道完整保存,另一个声道只存差异部分

AAC HE:码率64k

AAC HE V2:,码率32k

225013_vusI_3018050.png

rtmp和flv中都有adts的格式

225123_0PVG_3018050.png

三、视频入门

1.视频基础知识

一般视频文件在30帧左右,比较高级的要求较高的在60帧

225451_cRUO_3018050.png

压缩,B帧比率高。缺点:实时互动需要参考后帧,与网络息息相关,如果网络不好就要重传

一般实时互动都不会使用B帧

泛娱乐化可以使用B帧

225634_dLnX_3018050.png

一个I帧和另一个I帧之间成为一组帧,GOF

225736_YYqi_3018050.png

 

在一组帧之前,首先会收到sps和pps,如果没有这两个参数是没法解码的

225928_YU56_3018050.png

230428_oTvt_3018050.png

直播里如果用x265,会占用很好的cpu,一般不用,点播里可以用

openH264支持svc传输,svc技术:如果网络差就发最小的,还可以就发中间的,网络好就都发..移动端不能再使用硬编,只能使用软编,可能会占用资源,发烫

硬编占用网宽,软编考验移动端,这是个取舍问题

google推出的:vp8对应x264,vp9对应x265

2.H264的划分和帧分组

230838_2lsC_3018050.png

傅里叶变换:将复杂的波形图编程多个正弦波

CABAC压缩:无损压缩

230901_DNhd_3018050.png

230953_puW6_3018050.png

231003_IQkK_3018050.png

231022_5Ct9_3018050.png

231156_VeyL_3018050.png

 

3.视频压缩技术详解

(1)帧内压缩技术

231417_SOEQ_3018050.png

231430_TaZn_3018050.png

231506_ssuY_3018050.png

231609_Dy1f_3018050.png

231709_XsWE_3018050.png

231804_2k7b_3018050.png

 

(2)DCT压缩(整数余弦变换)

232031_BJC5_3018050.png

232045_eyvO_3018050.png

(3)VLC压缩

232148_MyL0_3018050.png

232244_80rt_3018050.png

4.H264结构与码流

190821_jcSj_3018050.png

191124_GK5S_3018050.png

拆包,通过nal层处理

191200_MHba_3018050.png

191345_TTbp_3018050.png

191502_HzUz_3018050.png

191556_tFdB_3018050.png

191615_U2ZE_3018050.png

191642_WVBn_3018050.png

5.NAL单元

191851_WRo3_3018050.png

192038_GNng_3018050.png

192046_Vnwr_3018050.png

192205_ejm6_3018050.png

 192228_1ho2_3018050.png

192237_s0Ag_3018050.png

192315_tT3X_3018050.png

192419_Tw90_3018050.png

192627_2FS2_3018050.png

6.YUV讲解

192849_fU0A_3018050.png

193008_YEg6_3018050.png

比rgb(8:8:8)节省存储空间

193114_d8PE_3018050.png

193223_8J6x_3018050.png

pc端:  I420,

ios:   NV12

安卓:NV21

四、课程总结

193522_uISU_3018050.png

193733_WwcN_3018050.png

193927_Iptk_3018050.png

194325_ualX_3018050.png

194529_5nh3_3018050.png

194740_tETL_3018050.png

194920_CTV5_3018050.png

195022_j5NH_3018050.png

 

转载于:https://my.oschina.net/u/3018050/blog/1788972

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值