FFmpeg魔改教程

我个人其实是不太想用 魔改 这个词的,纯粹是为了搜索引擎的流量。我喜欢用一些朴素易懂的词汇,二次开发。魔改其实就是 二次开发。

本章节就是讲解如何二次开发 FFmpeg ,满足自己的项目需求。

FFmpeg 这个开源项目一共 分为两块,如下:

  1. FFmpeg API 函数的基本使用,这个在 《FFmpeg基础API教程》一章有讲解
  2. ffmpeg.c 的业务逻辑,在《ffmpeg.c源码分析-基础篇》一章有讲解,ffmpeg.c 就是 ffmpeg.exe 命令行的实现源码。

如果你只学了 FFmpeg API 函数的基本使用,然后就去匆匆忙忙 调 API 去写功能,通常会遇到各种各样的坑。

例如时间戳 pts 不对,不知道怎么实现帧率转换,参数设置错了,漏了。而这些坑,基本都在 ffmpeg.c 里面填完了。

既然这些坑都被 ffmpeg.c 填完了,非常稳定了,那其实我们可以直接使用 ffmpeg.c

但是由于 ffmpeg.c 会开进程跑,退出也会直接退出进程,所以本章内容主要讲解如何把 ffmpeg.c 修改成可以线程调用,讲解如何在 ffmpeg.c 里面使用 自定义AVIO,最后把 ffmpeg.c 等相关文件 封装成 静态库,或者 动态库 来调用。

因为修改后的 ffmpeg.c 线程与当前线程处于同一个进程,所以在使用 自定义AVIO 的时候,可以使用线程间通信,传递数据非常方便。

最终的效果如下:

1-1

1-2


虽然 FFmpeg 命令行功能很强大,但是如果 ffmpeg.c 没有实现自己要的功能,你可以继续二次开发 ffmpeg.c ,例如 overlay 混流的时候,动态增减一个流,来实现视频会议里面一个人加入退出的 场景。

版权所属 xianwanzhiyin.net 罗上文 2023 all right reserved,powered by Gitbook该文件修订时间: 2023-05-11 03:36:22

results matching ""

    No results matching ""