-----------------------------------------------------------------------------------------------------------------------------------------

一分钟快速搭建 rtmpd 服务器: https://blog.csdn.net/freeabc/article/details/102880984

软件下载地址: http://www.qiyicc.com/download/rtmpd.zip

github 地址:https://github.com/superconvert/smart_rtmpd

-----------------------------------------------------------------------------------------------------------------------------------------

1. 采样率

我们知道音视频都有个自己的采样率,比如常见的: aac 44100, h264 90000,采样率具体是什么意思呢?采样率是一个基准,我们可以把这个基准看成一个时钟 TICK或者成为一个 Sample。 aac 44100 表示音频每秒时间内有 44100 个采样 TICK 。视频的基准就是每秒90K个时钟TICK。为什么采用90K呢?目前视频的帧频率主要有25fps、29.97fps、30fps等,而90K刚好是他们的倍数,所以就采用了90K。采样率对于解码和播放端非常重要,我们在协商过程中用的 SDP 中,经常有字段对此有表达,既然把这个参数放到 SDP 中,足见这个参数值是不可缺失的,参考下面的例子:

SDP中

a=rtpmap:96 H264/90000

a=rtpmap:97 mpeg4-generic/44100/2

2. 帧率

我们编码基本是一帧为单位,编码后的一帧数据经过打包发送,对方接收到进行解码播放,基本上就是这么一个流程。对应音频说帧的概念是针对编码来讲的。

aac 的采样

PROFILE

SAMPLES

HE-AAC v1/v2

2048

AAC-LC

1024

AAC-LD/AAC-ELD

480/512

我们很多文章把 aac 的采样都归为 1024,严格来说是不对的,但现在最流行的就是这个采样大小。我们知道这个采样大小,基本上就可以算出 1 秒中可以采集有 aac 编码的多少帧了, 我们知道当采样率为 44100 ,编码为 aac-lc,那么一秒中的帧数就是

44100/1024= 43.06640625 帧。但我们基本上很少关心这个数的,这里只是简单的阐述一下。

视频的采样是个基数,常见的帧率 25 fps,  29.97 fps, 30 fps ,这个表示一秒中可以采集那么多帧。这个值还是比较关心的。我们解码,调整速率都有用。

3. Duration 时延

我们这里所说的时延就是采集一帧数据所用的时间,由于我们的音视频时间单位都是毫秒级的,这里以毫秒为单位:ms。

那么对于音频的采样率为 44100 ,编码为 aac-lc时延怎么算呢,根据上述的表格,我们知道 aac-lc 的采样个数是 1024,所以音频一帧的 Duration=1024*1000/44100 = 23.21995464852607709750566893424 ( ms ).

对于视频我们的时延计算更简单了。如果视频是 25 fps,那么视频一帧的 Duration = 1000/25 = 40 ( ms ). 如果视频是 30 fps,那么视频一帧的 Duration = 1000/30 = 33.3 ( ms )

Duration 非常关键,对于我们的 RTP 时间戳的增量,就是两帧之间的 TICK 数。具体算法就是我们每帧的时长 * 采样率。那么对于采样率 44100, 编码 aac-lc ,每帧的时长 ( 1024 / 44100 ) * 采样率 ( 44100 ) = 1024 ( TICK ) ,因此我们的音频每帧之间 aac 时间戳增量为 1024, 对于 25 fps 的视频来说,每帧的时长(1/25 ) * 采样(90000)= 3600 ( TICK ),那么我们的视频每帧之间 RTP 时间戳增量就为 3600,如果在传输过程中,这些值算的不对,就会导致很多问题,比如:音视频不能正确播放,音视频不能正确同步。对于文件的存储,也是参考这个值,否则,写入的视频文件,也不能正确播放。

有些额外的链接可以参考一下,

频率史—从电源频率到音频采样频率与视频帧率:29.97/44.1

android音频采集时延,有关音视频采样率帧率以及 Duration 的那些事相关推荐

  1. android音频杂音问题_Android 音视频去回声、降噪(Android音频采集及回音消除)(转)...

    好久没写文章了,其实是想记录一下自己在Android开发的成长历程.谈到音视频这块,对于新手来说刚接触到这一块,那是非常非常的恶心~我自己弄这一块也是从头开始,在 网上也翻阅了无数的资料.浏览了无数的 ...

  2. 某些老司机直播APP这么受欢迎?作为Android程序员如何进军音视频?

    前言 随着4g转入5g时代,音视频发展非常迅速.纵然市面上的直播软件杂乱无章,到了深夜成了老司机的福利.那么开发这些直播APP需要学习那些技术呢? 我们都知道现在Android开发的形势,或许此时可以 ...

  3. Android 音频采集(原始音频)

    Android 音频简介 常见的音频编解码的类型:AAC  OPUS MP3  AMR  Ogg  PCM AAC: 高级音频编码  对应  .m4a(audio/m4a)或者.3pg(audio/3 ...

  4. 视频教程-Android WebRTC 实现1V1实时音视频通信-Android

    Android WebRTC 实现1V1实时音视频通信 从2012年开始从事移动互联网方面的开发工作,曾担任去哪儿网开发工程师,搜狗高级开发工程师,拥有多年一线实战开发经验. 擅长语言:Object- ...

  5. FFmpeg Android 学习(一):Android 如何调用 FFMPEG 编辑音视频

    一.概述 在Android开发中,我们对一些音视频的处理比较无力,特别是编辑音视频这部分.而且在Android上对视频编辑方面,几乎没有任何API做支持,MediaCodec(硬编码)也没有做支持.那 ...

  6. 作为一个Android程序员,关于音视频开发,这些你确定这些你都懂了吗

    14. 深入学习一些音视频领域的开源项目,如 webrtc,ffmpeg,ijkplayer,librtmp 等等 15. 将 ffmpeg 库移植到 Android 平台,结合上面积累的经验,编写一 ...

  7. 都2021了作为一名Android开发者,还不学音视频开发?我劝你早点认清现实!

    缘起 最近经常遇到一些同学问我如何学习音视频,怎样才能快速上手?还有一些对音视频不了解的同学问我该不该学习音视频?作为一名音视频行业的10年Android老兵,我有一些思考分享给大家,希望能对你有所帮 ...

  8. Android音频焦点及混音策略

    1.前言 1.1 音频焦点官方解读 两个或两个以上的 Android 应用可同时向同一输出流播放音频.系统会将所有音频流混合在一起.虽然这是一项出色的技术,但却会给用户带来很大的困扰.为了避免所有音乐 ...

  9. android端采用FFmpeg进行音视频合成与分离

    上一篇文章谈到音频剪切.混音.拼接与转码,也详细介绍cMake配置与涉及FFmpeg文件的导入: android端采用FFmpeg进行音频混合与拼接剪切 .现在接着探讨音视频的合成与分离. 1.音频提 ...

最新文章

  1. UNION JOIN 连接表
  2. 走进WebApiClientCore的设计
  3. springboot ---坑 tomcat部署springboot 一直运行不起来
  4. Struts2_3_国际化处理_自定义拦截器_文件上传及下载_OGNL
  5. LDAP命令介绍---dsreplication--enable:DISABLE
  6. 【BZOJ3110】【codevs1616】K大数查询,权值线段树套普通线段树
  7. 746.使用最小花费爬楼梯
  8. debian添加快捷启动方式
  9. 几个常用的dos命令
  10. Linux应急响应入侵排查思路
  11. 爬虫访问中,如何解决网站限制IP的问题?
  12. elasticsearch报错java.lang.IllegalStateException: failed to obtain node locks, tried [[/usr/local/elas
  13. 互联网日报 | 5月6日 星期四 | 阿里巴巴旗下“天猫香港”上线试营业;蔚来汽车将进军海外市场;五一档票房超16亿创新高...
  14. nested renamer is not supported
  15. DS1302 时钟 51单片机实现时钟显示
  16. pdf文件转为md文件
  17. python可视化是什么意思_python3数据可视化是什么?
  18. 紫光同创国产FPGA学习之Design Editor
  19. 单片机c语言什么是ea,单片机ie是什么?怎么用?
  20. 什么是华为云服务器?它有什么优点?

热门文章

  1. python win10 arm_windows10 arm版下载-windows10arm镜像64位中文版 - 极光下载站
  2. python图像识别坐标转换成g代码_python - 将坐标系导出为ESPG代码:to_epsg()或ExportToEPSG() - SO中文参考 - www.soinside.com...
  3. 有关mysql的开发介绍_深入浅出MySQL之开发篇(二)
  4. Golang 【大字符串相加,求和】
  5. 02数据库表的相关操作
  6. 3-14pytorch与统计学方法
  7. css如何做玻璃效果_3种常见的断桥铝门窗玻璃,它们的隔音降噪效果如何?
  8. android 屏幕旋转流程,android自动屏幕旋转流程分析.doc
  9. Huffuman树(java)
  10. 轮距和轴距有什么区别_大热的“机能风”是什么?看完领克02 PHEV你就懂了