合集-FFmpeg开发实战
摘要:
对于初学者来说,如何搭建FFmpeg的开发环境是个不小的拦路虎,因为FFmpeg用到了许多第三方开发包,所以要先编译这些第三方源码,之后才能给FFmpeg集成编译好的第三方库。
不过考虑到刚开始仅仅调用FFmpeg的API,不会马上去改FFmpeg的源码,因此只要给系统安装编译好的FFmpeg动态库,即可着手编写简单的FFmpeg程序。
阅读全文
![FFmpeg开发笔记(一)搭建Linux系统的开发环境](https://img2023.cnblogs.com/blog/729938/202304/729938-20230416190107034-294076379.png)
摘要:
由于Linux系统比较专业,个人电脑很少安装Linux,反而大都安装Windows系统,因此提高了FFmpeg的学习门槛,毕竟在Windows系统搭建FFmpeg的开发环境还是比较麻烦的。不过若有已经编译好的Windows版本FFmpeg开发包,那就免去了繁琐的Windows编译过程,所以直接安装已
阅读全文
![FFmpeg开发笔记(二)搭建Windows系统的开发环境](https://img2023.cnblogs.com/blog/729938/202304/729938-20230429185440604-1116898356.png)
摘要:
外界对于FFmpeg主要有两种使用途径,一种是在命令行运行FFmpeg的可执行程序,该方式适合没什么特殊要求的普通场景;另一种是通过代码调用FFmpeg的动态链接库,由于开发者可以在C代码中编排个性化的逻辑,因此该方式适合厂商专用的特制场景。更多详细的FFmpeg开发知识参见《FFmpeg开发实战
阅读全文
![FFmpeg开发笔记(三)FFmpeg的可执行程序介绍](https://img2024.cnblogs.com/blog/729938/202403/729938-20240310223215949-996214639.png)
摘要:
FFmpeg不仅提供了ffmpeg、ffplay和ffprobe三个可执行程序,还提供了八个工具库,使得开发者能够调用库里面的函数,从而实现更精准的定制化开发需求。这八个库的名字是avcodec、avdevice、avfilter、avformat、avutil、postproc、swresampl
阅读全文
![FFmpeg开发笔记(四)FFmpeg的动态链接库介绍](https://img2024.cnblogs.com/blog/729938/202403/729938-20240310223238064-1251318157.png)
摘要:
《FFmpeg开发实战:从零基础到短视频上线》一书提到:使用MSYS对FFmpeg进行交叉编译时,需要事先安装交叉编译工具链,也就是执行下面命令。 pacman -S mingw-w64-x86_64-toolchain 一般情况可以正常安装交叉编译工具链,不过有时会提示错误“signature
阅读全文
![FFmpeg开发笔记(五)更新MSYS的密钥环](https://img2024.cnblogs.com/blog/729938/202403/729938-20240316183154092-264688622.png)
摘要:
学习FFmpeg的时候,经常要到GitHub下载各种开源代码,比如FFmpeg的源码页面位于https://github.com/FFmpeg/FFmpeg。然而国内访问GitHub很不稳定,经常打不开该网站,比如在命令行执行下面的ping命令。 ping github.com 上面的ping结果
阅读全文
![FFmpeg开发笔记(六)如何访问Github下载FFmpeg源码](https://img2024.cnblogs.com/blog/729938/202403/729938-20240310223327897-421693915.png)
摘要:
《FFmpeg开发实战:从零基础到短视频上线》一书的“12.1.2 交叉编译Android需要的so库”介绍了如何在Windows环境交叉编译Android所需FFmpeg的so库,前文又介绍了如何在Linux环境交叉编译Android所需FFmpeg的so库,接下来介绍如何在Linux环境交叉编
阅读全文
![FFmpeg开发笔记(九)Linux交叉编译Android的x265库](https://img2024.cnblogs.com/blog/729938/202403/729938-20240317121231981-1147902362.png)
摘要:
FFmpeg内置了aac音频格式,在《FFmpeg开发实战:从零基础到短视频上线》一书的“5.2.2 Linux环境集成mp3lame”又介绍了如何给FFmpeg集成mp3格式,常见的音频文件除了这两种之外,还有ogg和amr两种格式也较常用。其中ogg格式的编解码依赖于libogg和libvor
阅读全文
![FFmpeg开发笔记(十)Linux环境给FFmpeg集成vorbis和amr](https://img2024.cnblogs.com/blog/729938/202403/729938-20240317121513736-698582784.png)
摘要:
FFmpeg内置了aac音频格式,在《FFmpeg开发实战:从零基础到短视频上线》一书的“5.2.2 Linux环境集成mp3lame”又介绍了如何给FFmpeg集成mp3格式,常见的音频文件除了这两种之外,还有ogg和amr两种格式也较常用。其中ogg格式的编解码依赖于libogg和libvor
阅读全文
![FFmpeg开发笔记(十一)Windows环境给FFmpeg集成vorbis和amr](https://img2024.cnblogs.com/blog/729938/202403/729938-20240317121704802-300237261.png)
摘要:
FFmpeg支持Linux、macOS、Windows、Android等操作系统,其中Linux系列包括Ubuntu、Debian、Mint、CentOS、RHEL、Fedora等分支。FFmpeg官网的编译入口地址为https://trac.ffmpeg.org/wiki/CompilationG
阅读全文
![FFmpeg开发笔记(七)欧拉系统编译安装FFmpeg](https://img2024.cnblogs.com/blog/729938/202403/729938-20240310223350852-883359311.png)
摘要:
《FFmpeg开发实战:从零基础到短视频上线》一书的“12.1.2 交叉编译Android需要的so库”介绍了如何在Windows环境交叉编译Android所需FFmpeg的so库,接下来介绍如何在Linux环境交叉编译Android所需FFmpeg的so库。 1、下载Linux版本的androi
阅读全文
![FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库](https://img2024.cnblogs.com/blog/729938/202403/729938-20240310223422039-359792678.png)
摘要:
MP4是最常见的视频封装格式,在《FFmpeg开发实战:从零基础到短视频上线》一书的“1.2.3 自行编译与安装FFmpeg”介绍了如何给FFmpeg集成x264和x265两个库,从而支持H.264和H.265两种标准的编解码。 视频的封装格式除了古老的MP4和ASF之外,还有较新的WebM格式,
阅读全文
![FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx](https://img2024.cnblogs.com/blog/729938/202403/729938-20240330165604933-489159447.png)
摘要:
MP4是最常见的视频封装格式,在《FFmpeg开发实战:从零基础到短视频上线》一书的“1.2.3 自行编译与安装FFmpeg”介绍了如何给FFmpeg集成x264和x265两个库,从而支持H.264和H.265两种标准的编解码。 视频的封装格式除了悠久的MP4和ASF之外,还有较新的WebM格式,
阅读全文
![FFmpeg开发笔记(十三)Windows环境给FFmpeg集成libopus和libvpx](https://img2024.cnblogs.com/blog/729938/202403/729938-20240330165833484-1375725736.png)
摘要:
FFmpeg在很多地方都运用了缓存机制,比如《FFmpeg开发实战:从零基础到短视频上线》一书的“3.3.2 对视频流重新编码”介绍了编解码的数据缓存,不单是视频编码过程和视频解码过程有缓存,甚至连音频重采样都用到了缓存。 也就是说,重采样函数swr_convert一次只会输出指定长度的音频数据,
阅读全文
![FFmpeg开发笔记(十四)FFmpeg音频重采样的缓存](https://img2024.cnblogs.com/blog/729938/202403/729938-20240330170030789-89851710.png)
摘要:
MediaMTX是个开源的轻量级流媒体服务器,它的安装过程参见《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2.2 FFmpeg向网络推流”。MediaMTX下载后的压缩包包括可执行程序mediamtx.exe和配置文件mediamtx.yml,看起来非常简约,但它提供的流媒体服务一
阅读全文
![FFmpeg开发笔记(十五)详解MediaMTX的推拉流](https://img2024.cnblogs.com/blog/729938/202403/729938-20240330170152501-263071262.png)
摘要:
《FFmpeg开发实战:从零基础到短视频上线》一书的例程主要测试本地的音视频文件,当然为了安全起见,很多网络视频都采用了https地址。FFmpeg若要访问https视频,就必须集成第三方的openssl库,但编译FFmpeg时却默认关闭了openssl。为了让App能够播放采用https的在线视
阅读全文
![FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库](https://img2024.cnblogs.com/blog/729938/202404/729938-20240413122233319-1202527691.png)
摘要:
libass是一个适用于ASS和SSA格式(Advanced Substation Alpha/Substation Alpha)的字幕渲染器,支持的字幕类型包括srt、ass等,凡是涉及到给视频画面添加字幕,均需事先集成libass。 《FFmpeg开发实战:从零基础到短视频上线》一书的“7.3
阅读全文
![FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass](https://img2024.cnblogs.com/blog/729938/202404/729938-20240413123234437-1521807967.png)
摘要:
FFmpeg结合SDL可以播放音频文件,也能播放视频文件中的音频流,《FFmpeg开发实战:从零基础到短视频上线》一书第10章的示例程序playaudio.c支持播放mp3和aac两种格式的音频,却不支持播放其他格式的音频。 因为mp3和aac两个格式拥有标准的规范定义,比如mp3规定每帧音频固定
阅读全文
![FFmpeg开发笔记(十八)FFmpeg兼容各种音频格式的播放](https://img2024.cnblogs.com/blog/729938/202404/729938-20240413123456662-1659833070.png)
摘要:
同步播放音视频的时候,《FFmpeg开发实战:从零基础到短视频上线》一书第10章的示例程序playsync.c采取一边遍历一边播放的方式,在源文件的音频流和视频流交错读取的情况下,该方式可以很好地实现同步播放功能。 但个别格式的音频流和视频流是分开存储的,前面一大段放了所有的音频帧,后面一大段放了
阅读全文
![FFmpeg开发笔记(十九)FFmpeg开启两个线程分别解码音视频](https://img2024.cnblogs.com/blog/729938/202404/729938-20240427115459166-1794675420.png)
摘要:
AVS3是中国AVS工作组制定的第三代音视频编解码技术标准,也是全球首个已推出的面向8K及5G产业应用的视频编码标准。AVS工作组于2019年3月9日完成第三代AVS视频标准(AVS3)基准档次的制订工作,参考软件的测试表明,AVS3基准档次的性能比上一代标准AVS2和HEVC提升了约30%。 l
阅读全文
![FFmpeg开发笔记(二十)Linux环境给FFmpeg集成AVS3解码器](https://img2024.cnblogs.com/blog/729938/202404/729938-20240427115700677-618267907.png)