FFmpeg开发笔记(五十一)适合学习研究的几个音视频开源框架
有鉴于此,博主整理了几个流行的音视频开源框架,分别对它们概要说明如下:
一、计算机视觉库OpenCV
OpenCV全称Open Source Computer Vision Library,它是一个跨平台计算机视觉和机器学习软件库,可运行于Linux、Windows、Android和MacOS等操作系统。
OpenCV的官网地址为https://opencv.org/,它在Github上的源码托管入口页面为https://github.com/opencv/opencv。截止2024年8月4日的Github统计,OpenCV项目的星标数为7.73万,副本数为5.57万。
OpenCV在编程实践中的用法主要有下列三种:
1、通过Python脚本使用OpenCV
先执行下面命令安装OpenCV的Python支持库。
pip install opencv-python
然后在Python代码的开头通过下面语句导入OpenCV库:
import cv2
接着即可在Python代码中调用OpenCV的各种处理函数了。
2、通过Qt在桌面程序中集成OpenCV
先把OpenCV的C++支持库下载到本地目录,再打开Qt的C++工程的CMakeLists.txt,在文件内容的qt_add_executable之前添加下面几行配置,表示指定OpenCV库的头文件目录和库文件目录。
# 添加头文件的所在目录
include_directories(opencv/include)
# 指定lib文件的链接目录
link_directories(opencv/lib)
接着把下面这行配置:
target_link_libraries(test_opencv PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
改成下面几行配置,目的是引入链接新增的OpenCV库文件:
# 设置名叫opencv-libs的库集合,指定它包括哪些so库文件
set(opencv-libs opencv_world480)
target_link_libraries(test_opencv PRIVATE Qt${QT_VERSION_MAJOR}::Widgets ${opencv-libs})
接着即可在C++代码中导入OpenCV的头文件,并调用OpenCV的各种处理函数了。
3、通过Android Studio在移动App中集成OpenCV
首先下载OpenCV的源码包,解压后找到OpenCV-android-sdk目录,该目录下有两个子目录,分别是和samples和sdk。其中sdk为库工程,App使用OpenCV前都要引用该库工程;samples是样例工程,下面有若干范例模块。
接着把上面的sdk目录集成到Android Studio的App工程中,详细的集成步骤参见《Android App开发进阶与项目实战》一书第12章的“12.2.2 OpenCV简介及其集成”,这里不再赘述。
二、计算机图形库学习教程LearnOpenGL
LearnOpenGL是一个开源的OpenGL教程,可供初学者学习如何使用OpenGL来创建3D图形和动画。LearnOpenGL既提供了实体的英文书籍,也提供了免费的英文电子版PDF,官网的电子版PDF下载链接为https://learnopengl.com/book/book_pdf.pdf。
LearnOpenGL的官网地址为https://learnopengl.com/,它在Github上的源码托管入口页面为https://github.com/JoeyDeVries/LearnOpenGL。截止2024年8月4日的Github统计,LearnOpenGL项目的星标数为1.07万,副本数为0.27万。
三、多媒体处理框架FFmpeg
FFmpeg全称Fast Forward MPEG,意思是快速掌握MPEG,它是一个开源的跨平台多媒体处理框架,可运行于Linux、Windows、Android和MacOS等操作系统。FFmpeg不仅能够处理音频、视频文件,还能处理图像、字幕等文件,可谓功能强悍。
FFmpeg的官网地址为https://ffmpeg.org/,它在Github上的源码托管入口页面为https://github.com/FFmpeg/FFmpeg。截止2024年8月4日的Github统计,FFmpeg项目的星标数为4.41万,副本数为1.19万。
FFmpeg在编程实践中的用法主要有下列三种:
1、在命令行中运行FFmpeg
按照之前文章《在欧拉系统上编译安装FFmpeg》的说明,在Linux系统上编译与安装FFmpeg,即可生成三个可执行程序,分别是ffmpeg、ffplay、ffprobe。接着按照之前文章《FFmpeg的可执行程序介绍》的说明,即可在命令行中执行相关的音视频处理操作。
2、通过Qt在桌面程序中集成FFmpeg
先按照《FFmpeg开发实战:从零基础到短视频上线》一书第8章“8.1 Windows环境编译FFmpeg”的介绍,在Windows系统上编译出FFmpeg的dll动态库。再按照《FFmpeg开发实战:从零基础到短视频上线》一书第11章“11.2.1 给Qt集成FFmpeg”的介绍,给Qt的C++工程集成前面编译好的dll动态库及其头文件。接着即可在C++代码中调用FFmpeg提供的各种API。
3、通过Android Studio在移动App中集成FFmpeg
先按照《FFmpeg开发实战:从零基础到短视频上线》一书第12章“12.1.2 交叉编译Android需要的so库”的介绍,在Windows系统上交叉编译出FFmpeg用于Android平台的so动态库。再按照《FFmpeg开发实战:从零基础到短视频上线》一书第12章“12.1.3 App工程调用FFmpeg的so库”的介绍,给Android Studio的App工程集成前面编译好的so动态库及其头文件。接着即可在App代码中调用FFmpeg提供的各种API。
四、视频录制直播工具OBS Studio
OBS Studio全称Open Broadcaster Software Studio,它是一个开源的跨平台实时流媒体和屏幕录制工具,可运行于Linux、Windows和MacOS等操作系统。
OBS Studio的官网地址为https://obsproject.com/,它在Github上的源码托管入口页面为https://github.com/obsproject/obs-studio。截止2024年8月4日的Github统计,OBS Studio项目的星标数为5.8万,副本数为0.78万。
有关OBS Studio的安装和使用说明参见之前的文章《使用OBS Studio开启RTMP直播推流》和《结合OBS与MediaMTX实现SRT直播推流》,这里不再赘述。
五、音视频播放器VLC media player
VLC media player是一款开源的跨平台多媒体播放器及框架,可以播放几乎全部多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议的直播地址。
VLC media player的官网地址为https://www.videolan.org/,它在Github上的源码托管入口页面为https://github.com/videolan/vlc。截止2024年8月4日的Github统计,VLC media player项目的星标数为1.35万,副本数为0.5万。
除了供用户播放媒体文件之外,VLC media player还常常被开发者用来调试音视频文件格式是否正确,以及网络上的流媒体数据是否正确传输。因为凡是VLC media player无法打开的音视频文件,几乎肯定是文件内部编码或封装出了问题;凡是VLC media player无法播放的流媒体地址,几乎肯定是流媒体数据出现缺失,或是网络状况不佳。
有关VLC media player的安装和使用说明参见《FFmpeg开发实战:从零基础到短视频上线》一书第3章的“3.4.1 通用视频播放器VLC”,这里不再赘述。
更多详细的FFmpeg开发知识参见