主流多媒体库vlc, gstreamer, ffmage(libav)
vlc
vlc代码, 使用GPL-2.0, LGPL-2.1 licenses
gstreamer
gstreamer代码, 使用GPL-2.0
FFmpeg
FFmpeg代码
libav
oneapi-src/oneVPL
blog
移动端进行直播和音视频开发
- 移动应用开发:熟悉移动应用开发平台,例如Android(Java/Kotlin)或iOS(Objective-C/Swift),以便能够创建直播和音视频应用程序。
- 视频编解码:了解视频编解码的基本原理和常见的视频编码标准,如H.264、H.265(HEVC)等。这将帮助您理解视频流的压缩和解压过程,以及如何处理视频数据。
- 音频编解码:熟悉音频编解码的原理和常用的音频编码标准,如AAC、MP3等。这将使您能够处理音频流,并进行编码和解码。
- 实时传输协议:了解实时传输协议(Real-Time Transport Protocol,简称RTP)和实时传输控制协议(Real-Time Transport Control Protocol,简称RTCP)等协议,它们用于在网络上传输音视频数据,并支持实时性和同步性。
- 流媒体协议:熟悉流媒体协议,如HTTP Live Streaming(HLS)、Dynamic Adaptive Streaming over HTTP(DASH)等。这些协议用于将音视频数据分段并以流的形式传输,以适应不同的网络条件和设备。
- 网络通信:了解网络通信的基本原理和常用的网络通信协议,如TCP、UDP等。这将有助于您实现音视频数据的传输和接收,以及处理网络延迟和丢包等问题。
- 实时处理:掌握实时处理音视频数据的技术,包括音视频采集、音视频编码、数据压缩、流媒体传输、数据解码和渲染等。您需要了解如何处理实时音视频数据流,以确保流畅的播放和良好的用户体验。
- 网络安全:熟悉网络安全的基本概念和常见的安全机制,以保护音视频数据的传输和存储过程中的安全性和完整性。
除了以上的知识,还可以学习和使用一些开源的音视频开发框架和工具,例如FFmpeg、WebRTC、OpenTok等,它们提供了丰富的功能和接口,可以简化音视频开发过程。
Reference
The FFmpeg/Libav situation
gstreamer,vlc,ffmpeg比较