音视频采集封装到直播推流的简单原理
来源:互联网 发布:js array indexof ie5 编辑:程序博客网 时间:2024/06/05 10:54
那么今天要分享的主要是两个内容,第一个是对硬件采集的资源怎么做一个打包封装,另一个是处理完成的资源如何直播,作为在日常业务测试线的一个业务逻辑扩展,纯粹个人理解,所以不会有一些深入的讲解,毕竟网上的文章够多了。
直接用visio花了一张图:
一、采集 && 封装
针对手机外接硬件的一个音视频采集,采集到的都是原始数据,那么这些数据经过一系列的处理,封装成用户可以直接播放的文件,比如mp4、mkv等等。
原始视频的格式一般是YUV和RGB等等,那么常用的就是yuv420,原始音频格式一般是PCM、FLTP等(这里只列出来了项目中用到的两个),特点就是很大。
压缩编码的意思,就是对原始音视频资源进行压缩和编码,涉及到的编码标准常用的就是h264以及acc。
封装的意思就是把经过压缩编码的音视频和一些meatadata标签信息,一起打包成可供播放的资源文件,类似mp4这种。
上面这几部的信息可以通过ffmpeg -i 你的资源这条命令查看,比如我随便找了我电脑上的一个mp4文件:
可以看到还是比较全的,下面来看看:
Metadata:可以读到封包的一些信息、资源创建时间、长度啊等等,如果会安卓开发的话可以发现android提供了一个类MediaMetadataReceiver,专门用来存这些信息的。
Stream:这个是一些压缩编码的信息了,可以看到音频是用了acc编码的,视频用的是h246编码的,以及编码时候的码率,分辨率这些信息,嗯,后面还带有音视频流的一些metadata信息。
那么第一部分就说完了。
二、接下来第二部分,是直播的一个原理。
那么经过采集封装后的资源,就需要经过推流到服务器,然后播放器再去接收服务器给的地址实现直播播放,这里要了解的是推流协议和流媒体协议。
推流协议一般都是rtmp,没什么说的,然后直播流媒体协议主要是下面4个:
- 列表内容
- RTMP:延迟低,用的最多,是基于tcp的
- HDL(HTTP_FLV):延迟同样低,用的也挺多,不同rtmp,这货是基于http的
- HLS:延迟高,因为要分段去下载接收,但是支持h5,易于传播易于观看
- RTP:实时传输,常用在视频会议
RTMP和HDL两个协议至少我们公司是同时RTMP和HDL都支持的,两者相差不大。
- 音视频采集封装到直播推流的简单原理
- 1小时学会:最简单的iOS直播推流(三)使用系统接口捕获音视频数据
- 1小时学会:最简单的iOS直播推流(三)使用系统接口捕获音视频数据
- 1小时学会:最简单的iOS直播推流(九)flv 编码与音视频时间戳同步
- 推流资源(视频直播)
- 音视频直播--Android视频采集(Camera2)
- 视频直播推流与拉流的实现
- 《视频直播技术详解》之二:编码和封装、推流和传输
- windows下ffmpeg音视频采集并推流
- windows下ffmpeg音视频采集并推流【较乱,懒的整理了】
- windows下ffmpeg音视频采集并推流【较乱,懒的整理了】
- Android视频推流直播学习【一】
- Android视频推流直播学习【二】
- Android视频推流直播学习【三】
- Android视频推流直播学习【四】
- 视频直播推流不成功如何排查
- mjpg-streamer 移植到OK6410,从摄像头采集视频直播
- 音视频直播技术--Android视频采集(Camera2)
- googlesamples/android-architecture
- jquery ajax下载 文件 思路
- UML类图常见的几种关系----阿冬专栏
- java编程思想读书笔记----第五章 初始化与清理
- problem of setting css style
- 音视频采集封装到直播推流的简单原理
- Linux的64位操作系统对32位程序的兼容 全面分析
- Passenger 和 Nginx
- 冒泡、快速、选择、插入、排序
- waiting for root device /dev/mmcblk0p2
- NOIP2014复赛提高组day1(A:生活大爆炸版石头剪刀布 B:联合权值 C:飞扬的小鸟)
- java-01-实现多行输入 并且以指定end 字符(串) 结束 并且查找指定的单个字符
- objc_setAssociatedObject 使用
- Asp.net给图片加上水印效果