写点什么

我与音视频的故事

作者:Changing Lin
  • 2022 年 2 月 17 日
  • 本文字数:3230 字

    阅读完需:约 11 分钟

1.音视频行业背景

音视频是多媒体应用的一种主要形式,其给用户带来的体验效果远超过与静态文字,更加直观和真实、具象化。现代,直播与视频行业紧密相连,是视频行业不可分割的一部分。在不同时代,直播形式也一直在更新。我国的视频业大致经历了从长视频到短视频,从录播到直播,从PC端到移动端等几个阶段。在走过漫长的“面对面”直播期后,我国迎来了第一代媒体——电视直播。电视直播在20世纪8年代中期才兴起,是人们感受最深,也是伴随着70后、80后、90后“大批人成长起来的一种方式。 我国首次电视直播事件是1983年的春节联欢晚会,首次大规模室外直播是1984年中华人民共和国国庆35周年大阅兵,出动了200多人,5辆转播车,23套摄像机,14套微波设备,并通过卫星向国外直播。紧接着是PC端直播,PC端直播门槛较低,这也使越来越多的网民能参与到视频制作和直播当中。移动互联网兴起后,直播又从PC端转移至移动端,门槛更低,参与性更强,互动性更好,使直播直接成为大众社交、娱乐、企业产品营销、用户引流的新入口。在直播强大的影响力之下,直播平台也逐步兴起,我国比较早的直播平台在2005年兴起,如YY、 9158等, 而后又有六间房、A站、BiLiBiLi等。高峰期是在2013年和2014年,这两年大量网络直播平台如雨后春笋般崛起,如美拍、秒拍、龙珠、熊猫、花椒、映客、闪咖、抖音等。
复制代码

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.总结

回望过去,我所参与的几个项目,主要承担音视频传输方面的工作比较多,较少涉及音视频处理方向。音视频的知识体系很大,每一个点深入去研究都需要耗费不小的精力,很多情况下,我只是停留在知道或了解这个技术,而且会使用这个技术,但技术背后的工作原理就不得而知。在深入研究技术和贴近工作生活本来就是一件事情的两个方面,需要取得一个平衡。在深入研究技术的同时,也不要忘了把技术应用起来,就是建立一个正向反馈。
复制代码


发布于: 刚刚阅读数: 2
用户头像

Changing Lin

关注

获得机遇的手段远超于固有常规之上~ 2020.04.29 加入

我能做的,就是调整好自己的精神状态,以最佳的面貌去面对那些未曾经历过得事情,对生活充满热情和希望。

评论

发布
暂无评论
我与音视频的故事