【scisdemo查看源码】【lattice测试源码】【源码技术用词】linuxffmpeg源码编译

时间:2024-12-23 03:17:43 来源:视频后台管理源码 分类:焦点

1.Linux 交叉编译FFmpeg库
2.FFmpeg开发笔记(十六)Linux交叉编译Android的源译OpenSSL库
3.FFmpeg之Linux下编译与调试
4.FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist
5.FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx
6.FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid

linuxffmpeg源码编译

Linux 交叉编译FFmpeg库

       Linux 交叉编译FFmpeg库

       配置环境

       在Linux上配置NDK环境和FFmpeg,首先下载并解压NDK,码编配置/etc/profile的源译环境变量,然后下载FFmpeg,码编解压后使用./configure --help查看帮助文档。源译

       FFmpeg包含libavformat、码编scisdemo查看源码libavcodec、源译libavutil、码编libswscale、源译libpostproc等模块,码编为各种音视频封装格式的源译生成和解析、声音/图像编解码、码编公共工具函数、源译视频场景比例缩放和色彩映射转换、码编后期效果处理以及工具和服务器等。源译

       编写编译脚本

       定义NDK路径,指定GCC路径,设置FLAGS结合Linux环境修改,参考externalNativeBuild/xxx/build.ninja的传参内容。学习资料推荐,免费报名学习音视频知识,资料包括C/C++、Linux、lattice测试源码FFmpeg等。

       配置参数

       优化大小、不编译ffmpeg程序(命令行工具)、关闭avdevice模块、关闭所有编码器、关闭所有复用器、关闭所有滤镜、开启交叉编译、设置GCC的前缀、关闭动态库、开启静态库、传给gcc的参数等。

       执行make完成编译输出

       编写脚本过程中注意关闭asm、权限要求、手动创建输出文件夹、命令行格式等。

       移植到Android项目中使用

       创建NDK项目,将编译好的include文件夹复制到/src/main/cpp目录下,将ffmpeg lib目录下的文件复制到armeabi-v7a目录下,Cmake文件中引入库,即可愉快使用FFmpeg库。

       FFmpeg是源码技术用词纯C的库,需要在代码中进行引用。显示ffmpeg版本号完成整个流程。

       至此,Linux交叉编译FFmpeg库的流程介绍完成。

FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库

       《FFmpeg开发实战:从零基础到短视频上线》一书中,示例程序主要针对本地音视频文件进行测试。鉴于安全性考虑,众多网络视频都采用了/openssl/open...,各版本openssl的下载页面是github.com/openssl/open...。以年月发布的openssl-3.2.0为例,可以从以下链接下载该版本的openssl源码包:

       github.com/openssl/open...

       将openssl的源码包上传到Linux服务器,解压并进入源码目录,执行以下命令:

       tar zxvf openssl-3.2.0.tar.gz cd openssl-3.2.0

       确认ndk已放置在服务器上,创建编译脚本build_openssl.sh,填入以下脚本内容(注意android-arm表示编译位的so库,no-shared表示只编译静态库不编译动态库):

       #!/bin/bash NDK_HOME=/usr/local/src/android-ndk-re SYSTEM=linux-x_ HOST=aarch-linux-android API= export PATH=$NDK_HOME/toolchains/llvm/prebuilt/$SYSTEM/bin:$NDK_HOME/toolchains/$HOST-4.9/prebuilt/$SYSTEM/bin:$PATH export ANDROID_NDK_ROOT=$NDK_HOME echo "config for openssl" ./Configure android-arm no-shared --prefix=/usr/local/app_openssl -D__ANDROID_API__=$API echo "config for openssl completed" make -j4 make install

       保存并退出build_openssl.sh,执行以下命令编译和安装openssl:

       chmod +x build_openssl.sh ./build_openssl.sh

       2、加载openssl的环境变量

       第一步将openssl安装在/usr/local/app_openssl,并将openssl的pkgconfig路径加载到环境变量PKG_CONFIG_PATH中。Linux系统的profile文件位于用户初始目录的.bash_profile。执行以下命令编辑当前用户的profile文件:

       cd vi .bash_profile

       往.bash_profile文件末尾添加以下一行:

       export PKG_CONFIG_PATH=/usr/local/app_openssl/lib/pkgconfig:$PKG_CONFIG_PATH

       保存并退出.bash_profile后,执行以下命令加载环境变量:

       source .bash_profile

       然后执行以下环境变量查看命令,视频项目源码确保openssl的环境变量已经成功加载:

       env | grep PKG

       3、重新编译FFmpeg启用openssl

       打开《FFmpeg开发实战:从零基础到短视频上线》随书源码的chapter/config_ffmpeg_full.sh,将该文件另存为config_ffmpeg_openssl.sh,并在文件内部这行--enable-libx \的下面增加如下一行配置:

       --enable-openssl \

       将config_ffmpeg_openssl.sh上传到服务器的FFmpeg源码目录,执行以下命令赋予可执行权限:

       chmod +x config_ffmpeg_openssl.sh

       然后运行以下命令配置、编译和安装FFmpeg:

       ./config_ffmpeg_openssl.sh make clean make -j4 make install

       4、将so文件导入App工程

       (1)将FFmpeg交叉编译好的include目录(位于/usr/local/app_ffmpeg/include)整个复制到App工程的src/main/cpp目录下。

       (2)在src\main目录下创建jniLibs目录,并在jniLibs下面创建子目录arm-v8a,将FFmpeg交叉编译好的8个so文件(位于/usr/local/app_ffmpeg/lib)全部复制到arm-v8a目录下。

       (3)将config_ffmpeg_openssl.sh里面启用的几个第三方库的so文件也一起复制到arm-v8a目录下,包括x、x、mp3lame、freetype等。

       (4)打开App工程的cpp代码,将待播放的在线视频地址改为/Haivision/sr...。安装步骤如下:

       上传压缩包至服务器并解压。

       进入解压后的srt目录,执行配置命令。

       编译libsrt。

       安装libsrt。捡漏商城源码

       接下来,安装支持RIST协议的librist库。librist的最新版本为年月发布的librist-v0.2.,下载地址为code.videolan.org/rist/...。安装步骤包括:

       安装编译工具meson和ninja。

       上传压缩包并解压。

       进入解压后的build目录,配置librist。

       编译librist。

       安装librist。

       集成SRT和RIST协议至FFmpeg需要重新配置FFmpeg,通过添加选项“--enable-libsrt --enable-librist”来启用这两个库。编译过程如下:

       回到FFmpeg源码目录,重新配置FFmpeg。

       编译FFmpeg。

       安装FFmpeg。

       完成集成后,通过运行命令“ffmpeg -version”查看FFmpeg版本信息,确认是否正确启用了SRT协议的支持库libsrt和RIST协议的支持库librist。

       以上步骤详细介绍了在Linux环境下给FFmpeg集成SRT和RIST协议的支持库,旨在提升流媒体应用的传输性能和稳定性。

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开发实战:从零基础到短视频上线》一书中的详细说明提供了完整的指导。

FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid

       在FFmpeg的开发过程中,尽管XviD曾是早期MP4视频编码的主流选择,但因其逐渐被H.所取代,相关教程如《FFmpeg开发实战:从零基础到短视频上线》并未详细阐述如何在Linux环境下集成libxvid。然而,对于那些仍需使用XviD编解码的开发者,libxvid的集成还是有其必要性。以下是如何在Linux环境中安装和启用libxvid的步骤:

       首先,从labs.xvid.com/source/下载libxvid的最新版本,例如1.3.7,然后解压并进入build/generic目录进行配置,使用`./configure`命令。接着,通过`make -j4`编译并安装libxvid。

       要让FFmpeg支持libxvid,需要回到FFmpeg源码目录,使用`./configure`命令重新配置FFmpeg,添加`--enable-libxvid`选项。配置完成后,执行`make clean`,`make -j4`编译,最后通过`make install`进行安装。安装成功后,可以通过`ffmpeg -version`验证FFmpeg是否启用了XviD编解码器,如果输出中包含`--enable-libxvid`,说明集成已成功。

       尽管libxvid的使用逐渐减少,但在特定场景下,了解并集成libxvid对FFmpeg开发者来说仍然是有价值的技能。

FFmpeg开发笔记(七)欧拉系统编译安装FFmpeg

       FFmpeg是一款功能强大的多媒体编码和解码工具,支持Linux、macOS、Windows、Android等操作系统,如Ubuntu、Debian、Mint、CentOS、RHEL、Fedora等分支。

       在CentOS上编译安装FFmpeg涉及一系列步骤,确保工具包的安装,然后单独安装NASM、Yasm、libx、libx、libfdk_aac、libmp3lame、libopus、libvpx等依赖库。接着,配置并安装libx、libx、libfdk_aac等关键库,最后编译安装FFmpeg。具体步骤包括使用git下载源码,配置编译选项,执行make和make install命令,确保所有依赖正确安装。

       对于EulerOS(欧拉系统),基于CentOS源码开发,运行环境兼容CentOS。在欧拉系统上编译安装FFmpeg,同样需要安装一些基础工具和依赖库,如nasm、g++、openssl-devel、curl-devel、cmake、git等。接下来,下载并编译x、x和FFmpeg源码包,使用特定命令配置编译选项,并完成make和make install操作。最终,通过执行ffmpeg -version命令验证FFmpeg安装成功。

       通过遵循上述步骤,用户可以在不同操作系统如CentOS和EulerOS上成功编译安装FFmpeg,实现多媒体编码和解码功能。