首页 > 其他分享 >FFmpeg开发笔记(五十一)适合学习研究的几个音视频开源框架

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

时间:2024-09-18 13:53:58浏览次数:11  
标签:FFmpeg opencv 数为 音视频 OpenCV 五十一 https

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

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

一、计算机视觉库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,opencv,数为,音视频,OpenCV,五十一,https
From: https://blog.51cto.com/u_15067275/12045671

相关文章

  • 关闭windows11锁屏右下角音视频窗口方法
    edge&google浏览器关闭方法目前只见到浏览器播放时,锁屏状态右下角有显示Edge流程以Edge浏览器为例:在顶部搜索栏输入edge://flags/#hadware-media-key-handing默认应是Default,改成Disabled解决Google流程同Edge顶部搜索edge://flags/#hadware-media-key-handing......
  • 音视频直播应用场景探讨之RTMP推流还是GB28181接入?
    技术背景好多开发者跟我们沟通音视频解决方案的时候,不清楚什么时候用RTMP推送模块,什么时候用GB28181设备接入模块,也不清楚二者差异化。实际上,RTMP推流和GB28181接入模块,在很多方面存在差异,如应用领域、协议性质、功能特性以及传输机制等。RTMP推流RTMP推流模块优缺点优点:广泛应用与......
  • C++音视频毕设项目计划书
    最近我经常收到私信,询问如何准备秋季招聘,以及学生阶段如何参与实习或进行小项目来提升自己的技能。我个人建议,找到相关行业的公司进行实习是个不错的选择。不过,自己也可以尝试做一些小项目,不断改进和优化,以提升动手能力。以下是一个音视频项目计划书,分享给大家:项目开发计划书:流媒......
  • ffmpeg实现视频的合成与分割
    视频合成与分割程序使用    作者开发了一款软件,可以实现对视频的合成和分割,界面如下:   播放时,可以选择多个视频源;在选中“保存视频”情况下,会将多个视频源合成一个视频。如果只取一个视频源中一段视频,就实现了视频分割。   对视频的处理采用了ffmpeg库。作......
  • 常见的web音视频播放器
    1.video-js是否开源:是是否免费:是官网地址:https://videojs.com/特点:支持hls、dash、.mp4、webm等多种视频类型,2.西瓜播放器是否开源:是是否免费:是官网地址:https://v2.h5player.bytedance.com/特点:一款带解析器、能节省流量的HTML5视频播放器。支持播放hls、.m3u8、.flv、......
  • 互联网医疗|基于音视频SDK和即时通讯IM技术实现线上问诊功能
    近期,包括北上广深在内的国内多个城市相继推动线上医保购药试点,实施进展备受网民关注。 不止于线上买药,包括健康咨询、在线问诊在内的互联网医疗服务进一步满足了人们对便捷医疗服务的需求,得到了相关政策的积极引导和大力支持,已经逐渐成为我们日常生活的一部分。 《中国互联......
  • Linux环境下安装FFmpeg的教程
    下面是一个关于在Linux环境下安装FFmpeg的教程,它结合了理论知识与实际操作步骤。请注意,本教程假设您具备基本的Linux命令行使用经验,并且您的系统已经安装了必要的开发工具包。FFmpeg简介FFmpeg是一个强大的跨平台音视频处理工具集,支持流媒体处理的几乎所有标准。它可以用......
  • Android视频编辑:利用FFmpeg实现高级功能
    在移动设备上进行视频编辑的需求日益增长,用户期望能够在智能手机或平板电脑上轻松地编辑视频,以满足社交媒体分享或个人存档的需求。Android平台因其广泛的用户基础和开放的生态系统,成为视频编辑应用的理想选择。FFmpeg,作为一个强大的多媒体框架,为Android视频编辑应用提供了......
  • 音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现
    =================================================================音视频入门基础:WAV专题系列文章:音视频入门基础:WAV专题(1)——使用FFmpeg命令生成WAV音频文件音视频入门基础:WAV专题(2)——WAV格式简介音视频入门基础:WAV专题(3)——FFmpeg源码中,判断某文件是否为WAV音频文件......
  • Qt/C++ 音视频开发: 使用 mpv 进行录像存储
    Qt/C++音视频开发:使用mpv进行录像存储介绍在现代应用中,音视频处理与存储是非常常见的需求。mpv是一个开源的视频播放器,具有强大的功能,可以通过其API进行定制化开发。本文将详细介绍如何使用Qt/C++和mpv实现录像存储功能。应用使用场景视频监控系统:实时采集......