当前位置: 首页 > news >正文

FFmpeg 简介与编译

1. ffmpeg 简介:

        FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

        FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。 [1]FFmpeg编码库可以使用GPU加速。

2. ffmpeg组成

        FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了领先的音/视频编码库libavcodec等。

libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能;

libavcodec:用于各种类型声音/图像编解码;

libavutil:包含一些公共的工具函数;

libswscale:用于视频场景比例缩放、色彩映射转换;

libpostproc:用于后期效果处理;

ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等;

ffsever:一个 HTTP 多媒体即时广播串流服务器;

ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示;

3. 编译

3.1 ffmpeg 下载

ffmpeg 官网地址如下:

https://ffmpeg.org/download.html

ffmpeg 下载代码命令:

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg

3.2 编译

将代码切换到release-4.0分支;在根目录下新建文件congfig.sh, 内容如下:

#ndk 环境
NDK=/Users/xxx/Documents/source/android-ndk-r16b
SYSROOT=$NDK/platforms/android-21/arch-arm
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
# cpu 架构平台,若要编译 x86 则指定 x86
#CPU=armv7-a
CPU=arm64-v8a

在根目录下创建build_android.sh,文件内容如下:

#!/bin/sh
. config.shPREFIX=$(pwd)/android/$CPU
ISYSROOT=$NDK/sysroot
ASM=$ISYSROOT/usr/include/$PLATFORMmkdir -p $PREFIX
ADDI_CFLAGS="-marm"
function build_android
{
./configure \--prefix=$PREFIX \--enable-shared \--enable-static \--disable-doc \--disable-ffmpeg \--disable-ffplay \--disable-ffprobe \--disable-avdevice \--disable-doc \--disable-symver \--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \--target-os=android \--arch=arm \--enable-cross-compile \--sysroot=$SYSROOT \--extra-cflags="-I$ASM -isysroot $ISYSROOT -isystem $ISYSROOT/usr/include/arm-linux-androideabi -Os -fpic -marm" \--extra-ldflags="$ADDI_LDFLAGS" \$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_android

在根目录下的终端输入如下命令进行编译:

./build_android.sh

运行完成以后可以在android目录下看到如下文件:

4.参考文献:

ffmpeg 百度百科

http://www.lryc.cn/news/494867.html

相关文章:

  • 低代码与微服务融合在医疗集团中的补充应用探究
  • 速盾:高防cdn的搜索引擎回源是什么?
  • 减少电路和配电系统谐波的五种方法
  • 基于Java Springboot Vue3图书管理系统
  • vue-cli项目质量约束配置
  • 第七课 Unity编辑器创建的资源优化_UI篇(UGUI)
  • 【docker】docker build上下文
  • ESLint 配置文件全解析:格式、层叠与扩展(3)
  • org.apache.commons.lang3包下的StringUtils工具类的使用
  • HarmonyOS4+NEXT星河版入门与项目实战(23)------组件转场动画
  • 十一、快速入门go语言之接口和反射
  • 智能化图书馆导航系统方案之系统架构与核心功能设计
  • 学习嵩山版《Java 开发手册》:编程规约 - 命名风格(P13 ~ P14)
  • Qt关于padding设置不起作用的的解决办法
  • Golang教程第10篇(语言循环语句-语言循环嵌套)
  • Python Web 开发:FastAPI 入门实战 —— HTTP 基础与 RESTful API 设计
  • uniapp实现组件竖版菜单
  • osg、osgearth源码编译(二)
  • 从单一设备到万物互联:鸿蒙生态崛起的未来之路
  • Kotlin的object修饰符定义类似Java的静态类/静态方法
  • html 中的 <code>标签
  • 【Oracle11g SQL详解】GROUP BY 和 HAVING 子句:分组与过滤
  • SSE基础配置与使用
  • Android -- 简易音乐播放器
  • 【开源免费】基于Vue和SpringBoot的技术交流分享平台(附论文)
  • Python异步编程新写法:asyncio模块的最新实践
  • 【Docker】Docker配置远程访问
  • 网络安全入门之网络安全工具分享-含初期所有工具(附百度网盘链接)
  • 玩转 uni-app 静态资源 static 目录的条件编译
  • Docker 容器隔离关键技术:Seccomp