移动端音频视频入门 原

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

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

1.直播分类

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

2.泛娱乐化直播架构

cdn最重要

3.实时互动直播架构

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

发送,确认,超时,重发

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

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

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

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

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

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

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

内总线-保证数据安全

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

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

4、CDN网络介绍

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

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

用户访问资源流程

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

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

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

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

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

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

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

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

工作处理器个数:1

事件里的连接数:1024

配置文件增加rtmp的配置项

端口:1935

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

指定一个特殊应用:live

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

wq!退出

nginx -s reload

重启服务

nginx

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

查看是否有1935端口

netstat -an |grep 1935

使用tcp协议,使用ipv4

-i是输入

(1)通过ffmpeg方法

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

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

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

播放

(2)通过ffplay播放

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

(3)通过手机推流

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

有两个终端观看

二、音频入门

1.声音三要素

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

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

2,音频的量化与编码

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

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

3.音频压缩

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

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

4.音频编码jiema器选型

实时互动系统可以用opus

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

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

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

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

绿色:开源且不收费

蓝色:不开源不收费

红色:不开源收费

5.AAC讲解

(1)为什么重点介绍AAC

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

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

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

(2)AAC出现的原因

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

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

AAC HE:码率64k

AAC HE V2:,码率32k

rtmp和flv中都有adts的格式

三、视频入门

1.视频基础知识

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

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

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

泛娱乐化可以使用B帧

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

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

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

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

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

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

2.H264的划分和帧分组

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

CABAC压缩:无损压缩

3.视频压缩技术详解

(1)帧内压缩技术

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

(3)VLC压缩

4.H264结构与码流

拆包,通过nal层处理

5.NAL单元

6.YUV讲解

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

pc端:  I420,

ios:   NV12

安卓:NV21

四、课程总结

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏牛客网

BAT面经

因为也许我当时因为要实现梦想只有一条途径,可如果你选择了一条路,这并不意味着你要放弃其他的方式。——《跳出我天地》

1683
来自专栏跨界架构师

过去这几十年,分布式系统的「数据一致性」精华都在这了!

        本文是本系列的第三篇。与前两篇《分布式系统关注点——数据一致性(上篇)》、《分布式系统关注点——通过“共识”达成数据一致性》形成完整的「数据一致...

1591
来自专栏SDNLAB

SDNLAB技术分享(七):开源SDN控制器DCFabric及云计算高效网络

1.DCFabric控制器的由来 1.1 SDN是云计算数据中心网络技术发展的必然要求 随着以虚拟化为基础的云数据中心的发展和成熟, 应用数据猛增,虚拟服...

3786
来自专栏小白课代表

更新 | 上万款街机游戏,找回童年的感觉——海星模拟器

2373
来自专栏JavaQ

编写高质量代码开篇

最近因为加入一个新的团队,才开始认真的关注关于编写高质量代码的话题,学习总结的同时,记录下这段让自己再一次认真学习的过程。 想成为架...

3155
来自专栏鸿的学习笔记

《design data-intensive application》阅读笔记之一

于2017年末得知了一本神书《design data-intensive application》,读完即可惜,如果早拿到这本书,就不会纠结于很多分布式系统...

772
来自专栏流媒体人生

wince版ffmpeg音视频播放器

6.支持S3C6410 H264、H263、VC-1/WMV3、Mpeg4 480P 30fps播放

1252
来自专栏java一日一条

Android开发者必知的开发资源

随着Android平台市场份额的持续猛增 ,越来越多的开发者开始投入Android应用程序的开发大潮。如果您是一位2016年刚刚入行的Android开发新兵,恭...

1932
来自专栏SDNLAB

SDN网络与传统网络对比

SDN相比传统网络具有很多优点,比如控制与转发分离,这种思想打破了传统设备供应商的绑定,提高了新业务的部署速度,可以从整个网络层面对流量进行优化等等。在SDN网...

53511
来自专栏企鹅号快讯

《design data-intensive application》阅读笔记之一

于2017年末得知了一本神书《design data-intensive application》,读完即可惜,如果早拿到这本书,就不会纠结于很多分布式系统和数...

2155

扫码关注云+社区

领取腾讯云代金券