我与音视频的故事
1.音视频行业背景
2.文章概要
3.音视频的可研究方向
3.1.传统领域
协议转换
编解码格式转换
参数修改与裁剪、压缩
音视频分离与合成
播放器开发---全平台
推流端开发
融频技术---视频会议
混音---语音会议
回音消叫
3.2.图像处理
去噪音
去模糊
超分辨率处理
滤镜处理
3.3.图像识别检测
车流量
行为分析
车牌识别
人脸识别
OCR 光学字符识别
图片分类
识别影片中的明星
3.4.图像分析理解
基于文本的图像搜索
图像描述生成
生成图像问答
以图搜图
4.我做过的音视频项目
4.1 基于 DSS 的列车视频监控系统
项目描述:本项目是以无线网络环境,由于实际列车场景,前后端的硬件资源限制,现有环境无法满足抗丢包的需求。故基于 Darwin Stream Server 服务(一个标准的 Linux C/C++应用,是一个优秀的项目,提供了良好的开发框架)开发一套二级视频转发系统(RTSP 协议),解决由于移动网络所带来的视频丢帧、乱序、卡顿等问题,实现把列车里面的高清监控画面实时的传输到地面,并保证播放流畅,满足地面工作人员对列车内部环境的实时调看需求。关键技术:RTSP、RTP、RTCP,SDP、RUDP、
项目效果:负责视频转发系统抗丢包设计与插件开发,实现最多 64 路 1080P 高清视频播放流畅不卡顿(已投入使用)
4.2 基于 RTMP 协议的直播应用
项目描述:该项目可应用于日常生活、紧急情况、户外等场景,具有服务器一人直播多人观看的功能。基于 IP 技术架构,在架构设计上由主播端、观众端、服务端共 3 端组成。服务端包括 2 个:信令服务器、媒体服务器;主播端支持 2 种平台,Android 和 PC;观众端也支持 2 种平台,Android 和 PC。同时,一个主播的内容可以共享给多个观众同时观看,一个观众也可以观看多个主播的内容。核心技术原理是:音视频的采集、流媒体传输、音视频的渲染,简要包括以下流程:采集->编码->打包->传输->解包->解码-播放。在采集阶段,视频源来自于设备的摄像头,通过 H.264 编码成视频帧,进一步打包成 RTMPPacket;音频源来自于设备的麦克风,通过 AAC 编码音频帧,进一步打包成 RTMPPacket,调用底层 RTMP SDK 提供的接口,发送到中心流媒体服务器 Media Server;当用户想观看某路直播时,RTMP SDK 会主动向 Media Server 订阅视频源,可以接收到音频帧、视频帧,通知给上层进行下一步处理,如解码和播放,从而打通整个音视频源的传输流程。
项目效果:实现了可商业应用的点对多的直播功能,支持低延迟、高清、秒开技术,用户体验良好。
4.3 讯通 APP
项目描述:是一款具有音视频特性功能的 IM 应用,其中的音视频功能,主要是以流媒体技术为基础,基于私有协议、FEC/QOS 算法来实现抗丢包能力,通过点对多的音视频分发技术,实现主播和观众的用户体验。同时,使用秒开技术,实现播放端的快速打开与直播同步功能。在直播的视频源方面,是通过 APP 获取摄像头的画面资源,进一步进行 H.264 编码,通过 SDK 的接口,发送到流媒体服务;音频源方面,是通过采集移动终端设备的麦克风的 PCM 数据,进一步通过 Android 系统的 MediaCodec 编码生成 AAC/OPUS 格式,再通过 SDK 的接口,发送到流媒体服务。流媒体服务把接收到的每一个音视频帧,根据观众的数量,进行转发。
项目效果:负责 Android 端的视频源、音频源的采集,编码,发送,同时负责播放端接收到媒体流后的解码工作,以及本地如何使用 MediaCodec 渲染到 SurfaceView,和使用 AudioTracker 来播放声音。
5.我的音视频知识体系
5.1 流媒体协议
5.1.1 RTSP
全称 Real Time Streaming Protocol,实时流传输协议
流媒体协议
公有协议,并有专门机构做维护
一般传输的是 ts,mp4 格式的流
一般需要 2-3 个通道,命令和数据通道分离
5.1.2 RTMP
全称 Routing Table Maintenance Protocol(路由选择表维护协议)
流媒体协议
Adobe 的私有协议,未完全公开
一般传输的是 flv,f4v 格式流
一般在 TCP 一个通道上传输命令和数据
5.1.3 HLS
即超文本传送协议(ftp 即文件传输协议)
HTTP 将所有的数据作为文件做处理。http 协议不是流媒体协议
公有协议,并有专门机构做维护
没有特定的流
一般在 TCP 一个通道上传输命令和数据
总结:RTSP RTMP HTTP 都是在应用层;理论上 RTSP/RTMP/HLS 都可以做直播和点播,但一般做直播用 RTSP/RTMP,做点播用 HTTP。做视频会议的时候原来用 SIP 协议,现在基本上被 RTMP 协议取代了。
5.2 流媒体服务
5.2.1 DSS
DarwinStreamingServer
RTSP
官方为 Apple
5.2.2 EasyDarwin
在 Apple 开源流媒体服务器 Darwin Streaming Server(v6.0.3)基础上进行开发和维护的免费开源、高效、易扩展的面向企业级的流 媒体平台框架
RTSP
开源项目
最新 go 版本
5.2.3 nginx-rtmp
与 nginx 搭配可以作为 RTMP 流媒体服务
RTMP
5.2.4 SRS(Simple RTMP Server)
是国人写的一款非常优秀的开源流媒体服务器软件,可用于直播/录播/视频客服等多种场景,其定位是运营级的互联网直播服务器集群。
5.2.5 七牛云/阿里云/腾讯云等商业方案
七牛云视频直播 (Pili) 是基于强大的全球化实时流网络、完善的客户端服务和云端服务,打造的端到端直播解决方案,提供低延迟、稳定流畅、高可用的一站式视频直播服务。
在阿里云视频直播(ApsaraVideo Live)的基础上,对直播播放端通过 SDK 嵌入的方式集成阿里云直播新 UDP 协议,提供易接入、毫秒级别延迟、高并发、高清流畅的音视频直播服务。
云直播(Cloud Streaming Services,CSS)依托腾讯强大的技术平台,将腾讯视频等核心业务底层能力开放给用户,为用户提供专业稳定快速的直播接入和分发服务,具有低延迟、高安全、高性能、易接入、多终端、多码率支持等特点。
5.3 音视频处理知识体系
ffmpeg:一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序
live555:偏向于底层通信协议,包括 RTSP、RTP、HLS、RTMP 等等
WebRTC:名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的 API。它于 2011 年 6 月 1 日开源并在 Google、Mozilla、Opera 支持下被纳入万维网联盟的 W3C 推荐标准。
opus/aac:音频编码格式
媒体存储技术:容器格式选型:MP4、AVI、Flv、M3u8 等;M3u8 格式的平台适应性;多路高并发性能与架构设计
集群部署扩容:Redis、Docker+k8s
6.总结
版权声明: 本文为 InfoQ 作者【Changing Lin】的原创文章。
原文链接:【http://xie.infoq.cn/article/f4eff596ce8b64d85fa1bbe5b】。文章转载请联系作者。
评论