14|如何在FFmpeg中定制一个自己专属的模块?
刘歧
你好,我是刘歧。
通过前面 13 节课的学习,我们对 FFmpeg 整体的使用和架构已经有了一定的了解。接下来,我们一起来探索一下 FFmpeg 社区的“玩法”,了解一下 FFmpeg 常用的交流工具、反馈 bug 和贡献代码的渠道,以及定制专属板块的方法。这个部分,我会分成两讲给你介绍。这节课我们先来学习一下如何在 FFmpeg 中定制一个专属于自己的模块。定制模块的作用有很多,比如可以通过定制自己的私有格式,防止别人播放自己的视频。
在 FFmpeg 中添加模块,需要深入了解源代码架构。但 FFmpeg 源代码太多,我们需要找到一个突破口深入进去。下面,我们一步一步来解决这些问题。
首先,我们下载官方的源代码库,基于 5.0 分支做一个新分支 kwai,作为我们源码的基础。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了在FFmpeg中定制自己的模块的具体步骤,重点讲解了添加自定义AVFormat模块和文件封装格式的操作。作者首先介绍了下载官方源代码库并创建新分支的步骤,然后通过示例展示了如何定义文件格式结构体、准备参数、定义一个类以及向FFmpeg注册文件格式等操作。文章还介绍了编译可用版本以及添加自定义模块的方法。通过本文,读者可以了解到在FFmpeg中定制自己的模块需要深入了解源代码架构,以及具体的操作步骤和注意事项。文章中的示例代码和详细讲解有助于读者快速了解并掌握定制FFmpeg模块的技术要点。此外,文章还提供了完整的命令行参考,帮助读者更好地应用所学知识。文章还提出了思考题,引发读者思考和讨论。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《快手 · 音视频技术入门课》,新⼈⾸单¥59
《快手 · 音视频技术入门课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(5)
- 最新
- 精选
- 大土豆这种私有文件格式的玩法,确实很多😄,微信的语音文件是silkv3格式,和标准格式有点差别是文件最前面加了一个字节的点号“.” ,导致其他播放器都打不开,也不知道是图个啥。
作者回复: 这种场景内容保护的可能性大一些。还有一种场景是为了防止盗链,当拿到内容播不了的时候,自然也就没那么大的毕业去盗链了
2022-08-26归属地:北京3 - peter请教老师两个问题: Q1:查看FFmpeg源码,linux下一般用什么软件? Win10下一般用什么软件?(win10下用sourceInsight吗?) Q2:添加文件封装格式之后,编译失败 “添加文件封装格式”之前的操作都是成功的。 从“添加文件封装格式”开始,我的操作是: 1 打开kwaienc.c: vi kwaienc.c 2 将“添加文件封装格式”下面五个小步骤中每一个小步骤的代码都 拷贝到kwaienc.c中(原样拷贝,没有修改), 3 打开kwaidec.c,加入下面两句: #include "avformat.h" const AVInputFormat ff_kwai_demuxer; 然后编译: make -j4 报错:/usr/bin/ld: libavformat/libavformat.a(allformats.o):(.data.rel.ro+0xa40): undefined reference to `ff_kwai_demuxer' 请问错误原因是什么? 怎么修改?
作者回复: 1. 我以前是vim,现在是VSCode和code-server在服务器上弄了 2. 应该是你需要自己加一个kwaidec.c 按照kwaienc那么添加一下空实现就可以了
2022-08-24归属地:北京 - 青晨昊天请问老师,关于自定义filter的编写,有哪些教程2022-11-04归属地:四川1
- ifelse学习打卡2024-01-01归属地:浙江
- jcy写音视频数据 部分里的函数开头部分: static int kwai_write_packet(AVFormatContext *s, AVPacket *pkt) { // kwaiMuxContext *mov = s->priv_data; uint32_t size = pkt->size; // 获取数据大小 if (!pkt) { return 1; } ... 这里应该在函数开头先判断指针是否为空 if (!pkt) 然后再取 pkt->size2022-09-20归属地:北京1
收起评论