偶尔学点音视频基础知识

直播APP的需求

1、直播项目,常见的8个步骤:

  • 音视频采集
  • 视频滤镜
  • 音视频编码
  • 推流: 将采集的音频.视频数据通过流媒体协议发送到流媒体服务器
  • 流媒体服务器处理
  • 拉流:从流媒体服务器中获取音频\视频数据
  • 音视频解码
  • 音视频播放

2、直播APP架构

  • 采集端:音视频采集,视频处理,音视频编码压缩,把视频封装成FLV/TS

        AV Foundation:数据

        GPUImage:过滤美颜

         FFmpeg:音视频编码

       videoToolBox:视频编码

       audioToolBox:音频编码

      Libremp:推流

  • 服务器:数据分发(CDN),鉴定数据合法,截屏:封面,实时转码

       SNS  BMS nginx

  • 播放端:分离音视频,音视频解码,播放,互动聊天

      FFmpeg:音视频编码

       videoToolBox:视频编码

       audioToolBox:音频编码

     ijkplayer:播放

3、视频的构成:图像,音频,元信息

      图像:视频内容本身就是一帧一帧的图片构成.人眼只要1秒钟连续播放16张以上的图片,就会认为这是一段连贯的视频.这种物理现象叫视觉暂留.

      元信息:元信息其实就是描述信息的信息.用于描述信息的结构\语义\用途\用法等.比如视频元信息就包含了视频的具体信息,比如编码格式,分辨率等等

参考简书:https://www.jianshu.com/p/0188ab0381ba

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一: 使用javacv来实现,最终也是用过ffmpeg来进行编码和推流,javacv实现到可以直接接收摄像头的帧数据 需要自己实现的代码只是打开摄像头,写一个SurfaceView进行预览,然后实现PreviewCallback将摄像头每一帧的数据交给javacv即可 javacv地址:https://github.com/bytedeco/javacv demo地址:https://github.com/beautifulSoup/RtmpRecoder/tree/master 二: 使用Android自带的编码工具,可实现硬编码,这里有一个国内大神开源的封装很完善的的库yasea,第一种方法需要实现的Camera采集部分也一起封装好了,进行一些简单配置就可以实现编码推流,并且yasea目前已经直接支持摄像头的热切换,和各种滤镜效果 yasea地址(内置demo):https://github.com/begeekmyfriend/yasea 服务器 流媒体服务器我用的是srs,项目地址:https://github.com/ossrs/srs 关于srs的编译、配置、部署、在官方wiki中已经写的很详细了,并且srs同样是国内开发人员开源的项目,有全中文的文档,看起来很方便 这里有最基本的简单编译部署过程 Android直播实现(二)srs流媒体服务器部署 播放器 android的播放使用vitamio,还是国内的开源播放器,是不是感觉国内的前辈们越来越屌了^~^! vitamio支持几乎所有常见的的视频格式和流媒体协议 vitamio地址(内置demo):https://github.com/yixia/VitamioBundle 这里使用的是yaesa库,先介绍一下直播实现的流程:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值