文档章节

移动端音频视频入门

xiaoge2016
 xiaoge2016
发布于 04/03 07:56
字数 1657
阅读 13
收藏 0

课程地址: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

四、课程总结

 

© 著作权归作者所有

共有 人打赏支持
xiaoge2016
粉丝 11
博文 201
码字总数 200599
作品 0
西安
私信 提问
腾讯音视频实验室:使用AI黑科技实现超低码率的高清实时视频聊天

1、前言 自从苹果公司在iPhone 4引入了视网膜屏幕的概念以来,手机的分辨率自此开始突飞猛进。当前,1920x1080甚至更高的分辨率已经成为了标配。不过当我们谈到实时音视频聊天的时候,无奈受...

JackJiang2011
01/04
0
0
微信多媒体团队梁俊斌访谈:聊一聊我所了解的音视频技术

本文内容由“微信多媒体团队”整理发布。 1、引言 广州TIT创意园,这里是腾讯在广州的研发团队所在地,LiveVideoStack采访了微信多媒体内核中心音视频算法高级工程师梁俊斌(Denny)。从华为...

JackJiang2011
07/31
0
0
微信多媒体团队梁俊斌访谈:聊一聊我所了解的音视频技术

本文内容由“微信多媒体团队”整理发布。 1、引言 广州TIT创意园,这里是腾讯在广州的研发团队所在地,LiveVideoStack采访了微信多媒体内核中心音视频算法高级工程师梁俊斌(Denny)。从华为...

首席大胸器
07/31
123
0
了不起的WebRTC:生态日趋完善,或将实时音视频技术白菜化

本文原文由声网WebRTC技术专家毛玉杰分享。 1、前言 有人说 2017 年是 WebRTC 的转折之年,2018 年将是 WebRTC 的爆发之年,这并非没有根据。就在去年(2017年),WebRTC 1.0 标准草案出炉(...

JackJiang2011
06/04
0
0
第四季应潮:指尖上的Lync 2013

在“移动为先,云为先”的时代中,人们拿着手机办公已经成为趋势。那么,让我们一起响应移动的潮流,看看全新的Lync 2013在移动端都有哪些功能呢。 现在,让我们一起挥动手指,一起来体验一下...

tianjinhm
2014/10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

区块链安全 - 以太坊短地址攻击

1 基础知识 EVM虚拟机在解析合约的字节码时,依赖的是ABI的定义,从而去识别各个字段位于字节码的什么地方。关于ABI,可以阅读这个文档: https://github.com/ethereum/wiki/wiki/Ethereum-C...

HiBlock
15分钟前
0
0
自定义函数及内部函数

变量的作用域 局部变量 global $Global及其他超全局数组 静态变量 仅初始化赋值 保留于内存直到response才销毁 global和static变量的区别 global:局部变量全局话 static:定义静态局部变量 函...

关元
15分钟前
0
0

中国龙-扬科
28分钟前
1
0
python包

https://www.lfd.uci.edu/~gohlke/pythonlibs/

陆朋
38分钟前
1
0
一文弄懂“分布式锁”,一直以来你的选择依据正确吗?

本文主要会关注的问题是“分布式锁”的问题。 多线程情况下对共享资源的操作需要加锁,避免数据被写乱,在分布式系统中,这个问题也是存在的,此时就需要一个分布式锁服务。 常见的分布式锁实...

Java干货分享
46分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部