1.FFmpeg详细安装步骤和使用笔记
2.FFmpeg开发笔记(八)Linux交叉编译Android的源码FFmpeg库
3.FFmpeg视频播放器开发-FFmpeg简介与项目环境搭建(一)
4.FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx
5.msys2编译FFmpeg全网最详细步骤
6.CentOS7下使用SRS搭建流媒体服务器
FFmpeg详细安装步骤和使用笔记
FFmpeg安装步骤与使用指南
FFmpeg是一款强大的多媒体处理工具,它支持音频、下载视频、源码流媒体和图像的下载跨平台操作,功能涵盖解码、源码编码、下载伴侣源码转换、源码流处理等,下载适用于多种格式,源码如MP4、下载AVI、源码MKV、下载MP3等,源码就像一个多功能的下载多媒体工具箱。安装版本
FFmpeg提供了GPL许可证和GPL Shared两种版本,源码GPL适用于要求源代码公开的应用,而GPL Shared则允许以库形式嵌入到专有软件中,无需公开源代码。Windows安装
下载解压到D:\Software\ffmpeg-master-latest-win-gpl
找到bin目录中的ffmpeg、ffplay和ffprobe工具
添加ffmpeg到系统环境变量的path中
验证安装,通过cmd输入ffmpeg -version
Linux安装
在Debian/Ubuntu、Fedora、CentOS和openSUSE等系统中,FFmpeg安装步骤有所不同
使用功能
-
转码视频和音频格式
-
剪切、合并视频
-
查看解码器和编码器列表
-
控制比特率以影响文件大小、质量与传输带宽
硬件加速
利用NVIDIA CUDA、AMD AMF或Intel Quick Sync Video等加速功能提升转码效率常见编码格式对比
H./AVC:普及广泛,兼容性佳
H./HEVC:高效编码,适合高清视频
VP9和AV1:新兴格式,可能需要特定设备支持
其他格式如MPEG-2、MPEG-4等也有适用场景
FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库
在Linux环境中进行FFmpeg库的Android交叉编译,首先需要下载Linux版本的spring源码深度解析 版本android-ndk-re。登录Linux服务器,例如华为云的欧拉系统,执行以下步骤:
1. 进入`/usr/local/src`目录:
cd /usr/local/src
2. 下载并解压ndk:
curl -O dl.google.com/android/r...
unzip android-ndk-re-linux-x_.zip
接下来,你需要将FFmpeg及相关库(如x、freetype、lame)的源码上传到服务器,并进行必要的修改:
- 解压源码,替换`SYSTEM=windows-x_`为`SYSTEM=linux-x_`,并确保sh文件无回车符。
- 修改`config_x.sh`、`config_freetype.sh`等文件,赋予可执行权限:
chmod +x config_*.sh
3. 编译x库,修改configure文件并执行编译:
修改configure文件
./config_x.sh
make -j4
make install
4. 对其他第三方库进行类似操作:
./config_xxx.sh
make -j4
make install
5. 配置环境变量`PKG_CONFIG_PATH`:
在.bash_profile中添加环境变量
source .bash_profile
6. 最后,编译FFmpeg库:
./config_ffmpeg_full.sh
make -j4
make install
完成后,可以在指定目录找到so文件,并将其复制到App工程的jniLibs\arm-v8a目录,然后按照《FFmpeg开发实战:从零基础到短视频上线》的章节“.1.3 App工程调用FFmpeg的so库”进行App的配置、编译和运行。
FFmpeg视频播放器开发-FFmpeg简介与项目环境搭建(一)
前言:在众多视频开发库中,微软的DirectShow、开源库OpenCV、SDL以及大华和海康的专属库等都是不错的选择。然而,FFmpeg在音视频领域具有举足轻重的地位。众多软件如迅雷、腾讯视频、QQ、微信、QQ音乐、暴风影音、爱奇艺、顺势为王指标源码优酷和格式工厂等都采用了FFmpeg技术。
QQ客户端
腾讯视频
爱奇艺客户端
FFmpeg的流媒体视音频编解码功能十分强大,几乎涵盖了所有的视音频编码标准。因此,只要涉及到视音频开发,几乎都离不开FFmpeg。
关于FFmpeg的博客和源码讲解有很多,其中雷神的博客最为知名。本系列教程在讲解过程中也会引用到其他人的研究成果,以便我们站在巨人的肩膀上。如有不当或错误之处,请各位朋友及时指出。
本教程是在Windows下的VS + Qt环境中开发。对于Linux或Mac操作系统,部分代码可以借鉴,但环境配置会有所不同。
一、配置Windows下FFmpeg开发环境
1.1 FFmpeg下载
官网链接:ffmpeg.zeranoe.com/buil...
可以下载最新版本或以前的版本,例如4.0版本。选择4.0版本后,依次下载Static、Share、Dev三个文件。位版本的三个文件如下:
Dev文件夹下包含include和lib文件
Shared文件的Bin目录包含ffmpeg的dll
1.2 在VS中配置FFmpeg
FFmpeg在VS中的配置很简单,只需按照常规SDK配置方式操作,开发时只需包含include、lib和bin目录中的文件。例如,创建一个C++控制台程序,右键点击项目名--属性。
(1)添加头文件目录
(2)添加lib目录
(3)在附加依赖项中填写lib名称
附上各个lib的linuxdhcp6源码下载名称,方便大家粘贴。
(4)将ffmpeg bin目录下的dll文件放入生成的exe所在目录,方便使用。关于/位版本的选择,请自行决定。
二、VS和Qt的安装
本教程以Qt作为界面库进行播放器开发。Qt相对于MFC来说,学习起来更简单,并且可以跨平台,适用于Linux和Mac程序的开发。我将Qt安装在VS中,因为VS调试方便,功能强大。
如果Qt和VS都安装好了,请继续阅读下一篇博客。如果Qt没有安装好,可以参考网上的安装方法。
三、软件界面与主要功能
本地视频播放
网络拉流
菜单项
播放器的基本功能都有,如双击放大全屏、视频进度拖拽、音量调整等。其他功能将逐步更新。
源码将在第五六篇博客中上传到github。
工欲善其事,必先利其器。环境配置完成后,下一篇文章将开始FFmpeg开发之旅。
首先,恭喜您能认真阅读到这里。runloop源码分析 简书如果对部分内容理解不太清楚,建议将文章收藏起来,查阅相关知识点后再进行阅读,这样您会有更深的认知。如果您喜欢这篇文章,请点赞或关注我吧!!
FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx
在FFmpeg开发中,为了支持WebM格式的视频,特别是其音频编码的Opus和视频编码的VP8/VP9,需要在Linux环境中集成libopus和libvpx库。以下是具体的操作步骤:
1. 安装libopus:首先,从ftp.osuosl.org下载libopus源码,如libopus-1.4。解压后,运行`./configure`进行配置,接着执行`make`和`make install`编译并安装。
2. 安装libvpx:访问github.com/webmproject获取libvpx-1..1源码。解压后,使用`./configure --enable-pic --disable-examples --disable-unit-tests`配置,然后编译并安装,即`make`和`make install`。
3. 重新编译FFmpeg:由于FFmpeg默认不支持opus和vpx,需要在FFmpeg源码目录下,通过`./configure`命令添加`--enable-libopus --enable-libvpx`选项。接着执行`make clean`清理,`make -j4`编译,最后使用`make install`安装并检查FFmpeg版本以确认成功启用。
按照以上步骤,你就能在Linux环境中成功集成libopus和libvpx到FFmpeg,从而支持WebM格式的视频编码。《FFmpeg开发实战:从零基础到短视频上线》一书中的详细说明提供了完整的指导。
msys2编译FFmpeg全网最详细步骤
本文提供详细步骤使用msys2编译FFmpeg源码,无需安装mingw。msys2在Windows上模拟Linux环境,允许使用大多数shell命令,类似于虚拟机但更轻量级。首先,从msys2.github.io下载并安装msys2到D盘,避开系统盘C盘。
在安装过程中,若进度卡住,可取消安装后重新尝试。安装完毕后,进入安装目录启动msys2_shell.cmd,并调整字符集以避免中文乱码。确保设置生效后重启msys2_shell.cmd。
接着,更换msys2的国内源,可参考相关指南。免费音视频学习资源推荐,包括FFmpeg、WebRTC、RTMP等技术,点击下方链接免费报名,先保存学习路径。
使用msys2安装软件,如yasm、make、diffutils、pkg-config。若安装缓慢,多次尝试直至完成。通过命令查看gcc安装状态。
下载最新FFmpeg源码(FFmpeg4.2.2),创建名为“SourceCode”的文件夹,解压源码并存放其中。
通过命令行进入msys2目录,配置FFmpeg编译参数,例如指定安装路径。生成的Makefile文件将用于编译过程。此步骤可使用批处理文件执行以提高效率。
编译完成后,ffmpeg库和可执行文件位于msys/usr/local/ffmpeg/bin目录。将msys\mingw\bin下的dll库复制到msys\usr\local\ffmpeg\bin,以确保依赖性。
需x库时,先编译x库,再编译FFmpeg。遵循本指南的详细步骤,您将成功在Windows上使用msys2编译FFmpeg源码。
CentOS7下使用SRS搭建流媒体服务器
本地服务器配置:使用 CentOS7 Linux 系统(版本:3..0-..1.el7.x_),IP 地址为 ...。将服务器角色定位为使用 SRS(Simple Realtime Server)搭建流媒体服务器。SRS 支持 RTMP、HTTP-FLV、HLS、WebRTC 协议。推流端设备采用 ffmpeg + OBS 软件进行流媒体推送,拉流端则可以使用 VLC 播放器或在网页中嵌入 SRS 自带的播放器。测试场景设计为通过 ffmpeg 测试 RTMP 推流功能,然后分别使用 VLC 和 SRS 播放器进行流媒体拉取。
所需资料与工具:
链接:pan.baidu.com/s/1x5DyST...(提取码:epxx)
参考网站与资源:
GitHub:ossrs/srs(SRS 源码)
SRS 官网:ossrs.net/(SRS 官方网站)
GitHub Wiki:ossrs/srs/wi...(SRS 起步知识与文档)
SRS:如何用 NGINX 搭建 HLS 分发集群(链接:qq.com)(关于使用 NGINX 与 SRS 集成搭建 HLS 分发集群的教程)
下载 ffmpeg 官方地址:ffmpeg.org/download.htm...(官方 ffmpeg 下载页面)
1、准备工作与环境搭建(使用 root 用户执行):
1.1、安装 CentOS 基础依赖环境
1.2、关闭与禁用防火墙(避免重启服务器后自动开启)
1.3、将 ffmpeg、yasm 和 kk.flv 等文件拷贝至 CentOS 主目录下(使用主目录作为存储位置)
1.4、安装 yasm 编译器
1.5、安装 ffmpeg
1.6、修改 /etc/ld.so.conf 文件
1.7、配置环境变量
1.8、检查环境变量配置是否生效
1.9、Windows 下安装 VLC 和 OBS 播放器
2、SRS 流媒体服务搭建:
2.1、获取 SRS 源码:
- 通过官网下载
- 通过 GitHub 使用**软件下载(推荐)
- 在国内码云使用 gitee.com/ossrs/srs 下载(推荐)
2.2、配置与编译 SRS:
2.3、查看 SRS 配置文件与支持的协议配置(参考 SRS 官方 Wiki)
2.4、启动与关闭 SRS 服务
2.5、通过网页控制台查看 SRS 状态
3、流媒体服务测试:
3.1、使用 ffmpeg 进行 RTMP 推流测试(注意替换实际值)
3.2、RTMP、HTTP-FLV、HLS 拉流地址获取与测试(VLC 或网页 SRS 播放器)
3.3、使用 OBS 播放器进行推流测试(文件推流、摄像头推流与更多推流方式)
4、扩展与学习资源:
4.1、Windows 下搭建 nginx-rtmp 流媒体服务器(参考教程)
4.2、深入学习 SRS 相关知识与技巧(访问 GitHub Wiki 或 SRS 官方网站)
Ubuntu 9.ä¸å®è£ å使ç¨ffmpegç详ç»è¿ç¨ï¼
ffmpegçç¼è¯ãå®è£ å使ç¨(for x,for arm)
/iminway/blog/item/bda2db4ecedb2def1.html
ææ°çffmpegå¯ä»¥éè¿svnä¸è½½ï¼SVNè¾ å©ç软件æï¼
SubVersionï¼ä» /modules/mydownloads/ï¼pile --cc=arm-linux-gcc --arch=arm --enable-gpl --disable-strip --disable-network --disable-ipv6 --disable-vhook --disable-audio-beos --disable-audio-oss --disable-mpegaudio-hp --enable-pthreads --enable-small --disable-parsers --disable-debug
#make
#make install
xä¸çldconfigä¸è½å¨armä¸è¿è¡ï¼armä¸çldconfigå·¥å ·æ¯å¨å»ºç«äº¤åç¼è¯å¨æ¶ï¼ç¼è¯glibcæ¯äº§ççï¼å¯ä»¥æ·è´å°arm-linuxä¸ã
(4) æ¬æ大é¨åå 容æ¥èªç½ç»ï¼å ¶ä¸xvid,xçåºï¼æ亲æå®è£ è¿ï¼ffmpegçé ç½®ç¼è¯for xçç®æé ç½®ï¼for armï¼æ亲æé ç½®ç¼è¯è¿ï¼å¹¶å¨xï¼armä¸å¯ç¨ï¼ç¼è¯é ç½®é½æ¯éç¨éæåºã
ffmpegä½ä¸ºåªä½æ件å¤ç软件ï¼åºæ¬ç¨æ³å¦ä¸ï¼
ffmpeg -i INPUTfile [OPTI
æç« åºå¤ï¼DIYé¨è½(/course/6_system/linux/Linuxjs//.html)
FFMPEG音视频同步-音频实时采集编码封装成MP4
音视频同步录制相关文章
1、 ffmpeg-摄像头采集保存
2、 ffmpeg音视频同步-摄像头采集编码封装
3、 ffmpeg-音频正弦产生并编码封装
4、 ffmpeg-音频实时采集保存
5、 ffmpeg音视频同步-音频实时采集编码封装
6、 ffmpeg音视频同步-音视频实时采集编码封装
7、 ffmpeg音视频同步-音视频实时采集编码推流
8、 ffmpeg音视频同步-音视频实时采集编码推流-优化版本
系统环境:
系统版本:lubuntu .
Ffmpge版本:ffmpeg version N--g
摄像头:1.3M HD WebCan
虚拟机:Oracle VM VirtualBox 5.2.
指令查看设备 ffmpeg -devices
指令播放实时音频 ffplay -f alsa -showmode 1 -ac 2 -i default -ar
Linux使用ffplay实时采集音频并实时播放_唐传林的博客-CSDN博客
指令录制实时音频ffmpeg -f alsa -ar -i hw:0,0 audio.wav
ffmpeg -f alsa -ar -i default ffmpeg_record_audio.wav
ubuntu下用ffmpeg录制音频文件_ubuntu使用指令录制mp3音频_dingjianfeng的博客-CSDN博客
指令分离音视频:ffmpeg -i test.mp4 -vn -y -acodec copy test.aac
ffmpeg -i test.mp4 -vn -y -avcodec copy test.h
本章文档基于ubuntu alsa格式。实时采集音频一帧数据并将其转化为pcm,编码成AAC,封装成mp4保存下来
1.简介
FFmpeg中有一个和多媒体设备交互的类库:Libavdevice。使用这个库可以读取电脑(或者其他设备上)的多媒体设备的数据,或者输出数据到指定的多媒体设备上。
ffmpeg中的音频相关内容
ffmpeg中AVPacket中可能会含有多个音频帧(AVFrame),一个音频帧含有多个采样,采样率决定了1s有多少个采样(或者说一个音频帧可以播放多久)。对于aac,一帧有个采样,mp3一帧则固定为个字节。
对于音频,由于有多声道的音频,那么音频解码出来的数据不同声道也储存在不同的指针,如data[0]是左声道,data[1]是右声道,由于各个声道的数据长度是一样的,所以linesize[0]就代表了所有声道数据的长度。
成员extended_data则指向了data,是一个拓展,上面可以看到data 是包含8个指针的数组,也就是说对于音频,最多只支持8个声道
如果是以下格式:
只能保存再AVFrame的uint8_t *data[0]; 音频保持格式如下: LRLRLR。。。。
如果是以下格式
plane 0: LLLLLLLLLLLLLLLLLLLLLLLLLL…
plane 1: RRRRRRRRRRRRRRRRRRRR…
plane 0对于uint8_t *data[0];
plane 1对于uint8_t *data[1];
相关学习资料推荐,点击下方链接免费报名,先码住不迷路~
音视频免费学习地址:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发
免费分享音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击 加群免费领取~
2.源码
最简单的基于Libavdevice的摄像头数据读取一帧帧pcm数据,经过音频重采样获取目标AAC的音频源数据参数,保存成MP4文件
3.验证
3.1编译
3.2结果
使用软件mp4打开test.mp4,可以听到实时采集的音频
3.3存在的问题
1、本文档源码,采集ALSA获取的源数据是K,stereo声道,采样大小,经转换成pcm的格式,同样是K,stereo声道大小;不同的采样率会出现部分声音数据丢失,具体原因,在 《ffmpeg-音频实时采集保存》具体分析 ,涉及其他分辨率转换,不在本文讨论范围里。
2、由于本例程没有没有对ALSA音频进行重采样,(采样率,个采样点,双声道,bit),故若保存成ts,flv等封装格式是,默认采用的音频编码格式分别是mpga,mp3,其采样点为。所以运行此程序会有问题,数据无法写入。而且目前暂不探讨音频重采样问题。故想到一种解决方法是,指定AAC音频编码格式(ts,mp4等都支持AAC音频编码,参考《ffmpeg-摄像头采集编码封装》的表格)。
4.附件
无
5.参考链接
[1] ffmpeg之PCM转AAC
FFmpeg()PCM编码AAC_pkt.data 就是pcm吗_mengzhengjie的博客-CSDN博客
[2]官方Encode pcm file to aac
[FFmpeg-user] Encode pcm file to aac
[3]PCM编码AAC,参考其普通PCM格式与AAC转格式差异 FFmpeg()PCM编码AAC_pkt.data 就是pcm吗_mengzhengjie的博客-CSDN博客
[4] 音频编码(一)--FFmpeg编码-腾讯云开发者社区-腾讯云
原文链接: FFMPEG音视频同步-音频实时采集编码封装成MP4_qinyi_style的博客-CSDN博客