多媒体框架是一种在电脑上处理媒体并经网络传播的软件框架。一个良好的多媒体框架提供了一个直观的API和一个模块化的架构而易于添加对新的音频、视频和容器格式以及传输协议的支持。这意味着可以被媒体播放器和音频视频编辑器之类的程序支持,但也能被用于编译视频会议程序、媒体转换器及其他多媒体工具。数据在模块上自动处理,无需应用程序在一对一连接的模块之间传送缓冲。https://zh.m.wikipedia.org/zh-hans/%E5%A4%9A%E5%AA%92%E4%BD%93%E6%A1%86%E6%9E%B6
之前查找资料时候,有大佬已经总结的多个开源框架,相关链接请参考如下:
https://www.yuv420.com/openproject/
该文章记录的每个开源库的简介和链接地址,总结的很好,有常用的FFMPEG,WebRTC,VLC,X264、X265等,也有人工智能处理相关的,以及播放器类。
自己之前也有使用,学习过一些开源库,正好借此机会和大家一起分享一下:
GStreamer
GStreamer 是一个用于构建媒体处理组件图的库。它支持的应用范围从简单的 Ogg/Vorbis 播放、音频/视频流到复杂的音频(混合)和视频(非线性编辑)处理。使用这个基于管道的多媒体框架链接各种媒体处理系统以完成复杂的工作流程。这个流行的开源框架是一组用于处理多媒体内容的库和工具:音频、视频、字幕和相关元数据。
官网地址:https://gstreamer.freedesktop.org/
Gitlab地址:https://gitlab.freedesktop.org/gstreamer/gstreamer/
openh264
OpenH264是一个支持H.264编码和解码的编解码器库。它适用于 WebRTC 等实时应用程序。
Github地址:https://github.com/cisco/openh264
libsrtp
libSRTP是 Cisco Systems, Inc. 的开源安全 RTP 库。RTP 是实时传输协议,是一种用于传输实时数据(例如电话、音频和视频)的 IETF 标准,由 RFC 3550 定义. Secure RTP (SRTP) 是一种 RTP 配置文件,用于为 RTP 数据提供机密性并为 RTP 标头和有效负载提供身份验证。SRTP 是 IETF 标准,在 RFC 3711 中定义,由 IETF 音频/视频传输 (AVT) 工作组开发。
Github地址:https://github.com/cisco/libsrtp
libzrtp
ZRTP是加密密钥协商协议,用于协商基于实时传输协议的基于因特网协议的语音(VoIP)电话电话中的两个端点之间的加密密钥。它使用Diffie-Hellman密钥交换和安全实时传输协议(SRTP)进行加密。ZRTP由Phil Zimmermann在Bryce Wilcox-O’Hearn,Colin Plumb,Jon Callas和Alan Johnston的帮助下开发,并被提交给互联网工程任务组(IETF)由Zimmermann,Callas和Johnston于2006年3月5日发布,并于2011年4月11日发布为RFC。
官方地址:http://philzimmermann.com/EN/zrtp/index.html
Github地址:https://github.com/traviscross/libzrtp
opus
思科版本的opus
Github地址:https://github.com/cisco/opus
libva
Libva 是 VA-API(视频加速 API)的一个实现;VA-API 是一个开源库和 API 规范,它提供对用于视频处理的图形硬件加速功能的访问。它由每个受支持的硬件供应商的主库和特定于驱动程序的加速后端组成。
Github地址:https://github.com/intel/libva
Quic
QUIC 是一种建立在 UDP 之上的新型多路复用传输。HTTP/3 旨在利用 QUIC 的特性,包括流之间没有线头阻塞。
官方地址:https://www.chromium.org/quic/
libXCam
这个开源相机库用于扩展相机功能,专注于图像质量改进和视频分析。libXCam 支持许多图像预处理、后处理和智能分析功能。该库使 GPU、CPU 和 ISP 协同工作以提高图像质量。OpenCL 标准、用于嵌入式系统的 OpenGL* 和 Vulkan* 用于提高不同平台的性能。
Github地址:https://github.com/intel/libxcam
VideoDownloader
视频下载SDK功能,下载整视频,如mp4/mkv/mov/3gp等视频;下载HLS,即M3U8视频;M3U8 视频下载完成,会生成一个本地的local.m3u8文件;视频下载完成,可以点击播放视频文件;视频下载数据库记录视频下载信息;增加视频下载队列;增加M3U8合并为MP4的功能;可以定制下载视频的标题和封面;增加视频下载的group-name
Github地址:https://github.com/JeffMony/VideoDownloader
Linphone
Linphone 是用于语音/视频通话和即时消息的开源 SIP 电话,可用于移动和桌面环境(iOS、Android、GNU/Linux、macOS、Windows)。Linphone 将用户界面和核心引擎分开,允许在相同功能之上创建各种用户界面。
Github地址:https://gitlab.linphone.org/BC/public
VideoEye
VideoEye是一个开源的视频分析的软件。本软件可以播放和分析视频数据。它支持多种视频流输入方式:HTTP,RTMP,RTSP以及文件等等。该软件可以实时分析视频流并能以图形化的方式呈现其分析结果。目前该软件还处于完善阶段。
Github地址:https://github.com/leixiaohua1020/VideoEye
YUVPlayer
支持10bitYUV格式的开源播放器
Github地址:https://github.com/Tee0125/yuvplayer
MP4Tools
MP4Tools 是一组用于操作 MP4 文件的跨平台免费工具。
它包含以下应用程序:
⦁ MP4Joiner 是一款免费应用程序,允许将多个 MP4 文件合并为一个
⦁ MP4Splitter 是一款免费应用程序,允许将一个 MP4 文件拆分为多个文件
Github地址:https://www.mp4joiner.org/en/
MPP
MPP库是Rockchip根据自己的硬编解码器开发的应用程序编解码库,如果想达到最好的效果,必须要通过librockchip_mpp来直接编码实现编解码。 Mpp的API思路其实跟目前绝大多数的编解码库是一致的,都是queue/dequeue的队列操作方式,先设置好编解码状态,然后不停的queue/dequeue input/output buffer就可以实现编解码控制了。
Github地址:https://github.com/rockchip-linux/mpp
libheif
libheif 是 ISO/IEC 23008-12:2017 HEIF 和 AVIF(AV1 图像文件格式)文件格式解码器和编码器。HEIF 和 AVIF 是新的图像文件格式,分别采用 HEVC (h.265) 或 AV1 图像编码,以获得目前可能的最佳压缩率。
Github地址:https://github.com/strukturag/libheif
libde265
libde265 是 h.265 视频编解码器的开源实现。它是从头开始编写的,有一个简单的 C API,可以简单地集成到其他软件中。libde265 支持 WPP 和基于图块的多线程,并包括 SSE 优化。解码器包括 Main profile 的所有功能并正确解码几乎所有一致性流
Github地址:https://github.com/strukturag/libde265
作者:我是一枚爱跑步的程序猿,维护公众号和知乎专栏《MediaStack》,有兴趣可以关注,一起学习音视频知识,时不时分享实战经验。
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。