​很多程序员想学习音视频的编程开发,却不知从何学习,因为音视频技术的体系庞大、知识杂糅,一眼望去就令人生怯。那么学习音视频建议站在前人的肩膀上,从优秀的音视频开源框架开始钻研,先熟悉这些开源工具的具体用法,再深入了解这些开源框架的实现代码。

有鉴于此,博主整理了几个流行的音视频开源框架,分别对它们概要说明如下:

一、计算机视觉库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开发实战:从零基础到短视频上线》一书。

FFmpeg开发笔记(五十一)适合学习研究的几个音视频开源框架的更多相关文章

  1. FFmpeg开发笔记(五):ffmpeg解码的基本流程详解(ffmpeg3新解码api)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  2. FFmpeg开发笔记(四):ffmpeg解码的基本流程详解

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  3. FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放

    前言   ffmpeg播放rtsp网络流和摄像头流.   Demo   使用ffmpeg播放局域网rtsp1080p海康摄像头:延迟0.2s,存在马赛克     使用ffmpeg播放网络rtsp文件流 ...

  4. FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台

    FFmpeg和SDL开发专栏(点击传送门) 上一篇:<FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放>下一篇:敬请期待   前言   将ffmpeg移植到海思H ...

  5. Django开发笔记五

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.页面继承 定义base.html: <!DOC ...

  6. FFmpeg开发笔记(三):ffmpeg介绍、windows编译以及开发环境搭建

    前言   本篇章是对之前windows环境的补充,之前windows的是无需进行编译的,此篇使用源码进行编译,版本就使用3.4.8.   FFmpeg简介   FFmpeg是领先的多媒体框架,能够解码 ...

  7. Modbus库开发笔记之十一:关于Modbus协议栈开发的说明(转)

    源: Modbus库开发笔记之十一:关于Modbus协议栈开发的说明

  8. Modbus库开发笔记之十一:关于Modbus协议栈开发的说明

    对于Modbus协议栈的整个开发内容,前面已经说得很清楚了,接下来我们说明一下与开发没有直接关系的内容. 首先,关于我为什么开发这个协议栈的问题.我们的初衷只是想能够在开发产品时不用每次都重写这一部分 ...

  9. FFmpeg开发笔记(一)搭建Linux系统的开发环境

    对于初学者来说,如何搭建FFmpeg的开发环境是个不小的拦路虎,因为FFmpeg用到了许多第三方开发包,所以要先编译这些第三方源码,之后才能给FFmpeg集成编译好的第三方库.不过考虑到刚开始仅仅调用 ...

  10. FFmpeg开发笔记(二)搭建Windows系统的开发环境

    由于Linux系统比较专业,个人电脑很少安装Linux,反而大都安装Windows系统,因此提高了FFmpeg的学习门槛,毕竟在Windows系统搭建FFmpeg的开发环境还是比较麻烦的.不过若有已经 ...

随机推荐

  1. Java权限认证框架比较

    认证.授权.鉴权和权限控制 定义 英文 实现方式 认证 确认声明者的身份 identification 根据声明者独特的识别信息 授权 获取用户的委派权限 authorization 颁发一个授信媒介 ...

  2. 面试官:Java对象引用都有哪些类型?

    哈喽,大家好,我是世杰. 本文我为大家介绍面试官经常考察的「Java对象引用相关内容」 照例在开头留一些面试考察内容~~ 面试连环call Java对象引用都有哪些类型? Java参数传递是值传递还是 ...

  3. 🎉我是如何从零到成为 Apache 顶级项目的 Committer

    最近收到了 Apache Pulsar 和 Apache HertzBeat社区的邀请邮件,成为了这两个项目的 Committer. 一路走来我从最开始的打游击战的闲散人员到如今活跃在各个开源项目里的 ...

  4. 记一次 .NET某上位视觉程序 离奇崩溃分析

    一:背景 1. 讲故事 前段时间有位朋友找到我,说他们有一个崩溃的dump让我帮忙看下怎么回事,确实有太多的人在网上找各种故障分析最后联系到了我,还好我一直都是免费分析,不收取任何费用,造福社区. 话 ...

  5. EasyDesktop 浏览器书签管理从未如此简单

    作为一名软件开发从业人员, 每天80%的时间都在与浏览器打交道, 一半的时间在用浏览器开发调试, 另一半时间则是在互联网上搜寻各种知识和资源. 为此, 我的浏览器书签栏存储和很多非常棒的链接, 多到2 ...

  6. Visual Studio 必备插件集合:AI 助力开发

     一.前言 2024年AI浪潮席卷全球,编程界迎来全新的挑战与机遇.智能编程.自动化测试.代码审查,这一切都得益于AI技术的迅猛发展,它正在重塑开发者的日常,让编写代码变得更加高效.智能. 精选出最受 ...

  7. 20+前端常用的vscode插件(总结推荐)

    本篇文章给大家总结分享20多个前端常用的vscode插件.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 1. vscode 简介vscode是微软开发的的一款代码编辑器,就如官网上 ...

  8. 2023/4/14 SCRUM个人博客

    1.我昨天的任务 初步了解项目的整体框架,并对接下来的人脸识别库以及组件有基本了解和安装 2.遇到了什么困难 ------------ 3.我今天的任务 获得了人脸识别作弊检测和绘制界面的分工,准备先 ...

  9. 我出一道面试题,看看你能拿 3k 还是 30k!

    大家好,我是程序员鱼皮.欢迎屏幕前的各位来到今天的模拟面试现场,接下来我会出一道经典的后端面试题,你只需要进行 4 个简单的选择,就能判断出来你的水平是新手(3k).初级(10k).中级(15k)还是 ...

  10. systempath:Python开发者必备的文件与系统路径操作神器!

    systempath - 专业级的文件与系统路径操作库 English | 中文 systempath 是一个专为Python开发者设计的,高度专业化的文件与系统路径操作库.通过提供一套直观且功能强大 ...