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开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容