最简单ffmpeg库调用例子

本文提供了一个简单的ffmpeg库调用示例,通过创建main.c文件并包含必要的头文件。在编译过程中遇到pthread_once和lzma相关错误,通过添加-pthread和-lbz2 -llzma解决链接错误,最终成功编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先编译好ffmpeg-4.0.2,编译过程这里不陈述。

ffmpeg安装后会有以下几 目录:

bin  include  lib  share

创testffmpeg目录,并在将安装目录中include 和lib两个目录copy进来。

增加main.c,内容如下

#include <stdio.h>
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libavutil/avutil.h"
int main(int argc, char *argv[])
{

        av_register_all();

        return 0;
}

增加Makefile,内容如下:

HOME=$(PWD)
INCLUDE = $(HOME)/include/

LIBPAH = $(HOME)/lib/
LIB = -lavformat -lavcodec -lswscale -lswresample -lavutil -lm -lz
LIB += 
all:
    gcc main.c -I $(INCLUDE) -L $(LIBPAH) $(LIB) -o ffmpeg
    
clean:
    rm *.o -rf

 

编译:make

gcc main.c -I /nfsroot/ffmpeg/testffmpeg/include/ -L /nfsroot/ffmpeg/testffmpeg/lib/ -lavform

### FFmpeg 及其调用方式 FFmpeg 是一个功能强大的多媒体处理工具,它本身是一个命令行程序,同时也提供了多种编程接口供开发者使用。以下是关于 FFmpeg组成以及如何通过不同方式进行调用的相关信息。 #### 一、FFmpeg 使用的主要 FFmpeg 主要由以下几个核心构成: 1. **libavcodec**: 这是用于音频/视频编解码的核心[^1]。它可以支持几乎所有的主流编码器和解码器。 2. **libavformat**: 提供了封装格式的多路分解和多路复用功能。该负责解析文件头、提取元数据以及管理流媒体容器格式。 3. **libavutil**: 包含了一些通用函数集合,比如随机数生成器、日志记录以及其他辅助功能。 4. **libswscale**: 负责图像缩放和色彩空间转换操作。 5. **libavfilter**: 实现了各种音视频滤镜效果的支持。 6. **libpostproc**: 后期处理模块,主要用于提高低质量视频的质量。 这些共同构成了完整的 FFmpeg 功能体系结构。 --- #### 二、FFmpeg调用方法 ##### 1. 命令行调用 最简单的方式就是直接通过命令行来运行 FFmpeg 工具。例如,下面是一条基本的转码命令: ```bash ffmpeg -i input.mp4 output.avi ``` 这条命令会读取 `input.mp4` 文件作为输入源,并将其重新编码保存到名为 `output.avi` 的新文件中。 ##### 2. Python 绑定 (ffmpeg-python) 对于希望在 Python 中集成 FFmpeg 的开发人员来说,“ffmpeg-python”提供了一种优雅的方式来实现这一目标[^2]。以下是一个简单的例子展示如何利用此绑定完成相同的功能: ```python import ffmpeg stream = ffmpeg.input('input.mp4') stream = ffmpeg.output(stream, 'output.avi') ffmpeg.run(stream) ``` 上述脚本实现了与前面提到的 Bash 版本完全一致的结果——即将 MP4 格式的视频转换成 AVI 格式。 ##### 3. C/C++ 编程接口 如果项目需求更底层控制,则可以直接链接静态或动态版本的 FFmpeg ,在自己的应用程序里编写自定义逻辑。这通常涉及加载共享对象(.so)/DLLs 或者嵌入预构建好的可执行文件副本。 为了能够成功地进行这样的开发工作,首先需要确保已经正确设置了环境变量 PATH 并完成了必要的依赖项安装过程[^3]。 --- #### 总结 无论是采用高级别的抽象层(如 python-bindings),还是深入到底层 API 层面去探索更多可能性,都可以借助于丰富的文档资源和技术社区的帮助快速入门并熟练掌握 FFmpeg 的强大能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值