侧边栏壁纸
博主头像
Z同学博主等级

工作磨平激情前,坚持技术的热忱。 欢迎光临Z同学的技术小站。 分享最新的互联网知识。

  • 累计撰写 290 篇文章
  • 累计创建 57 个标签
  • 累计收到 98 条评论

ijkplayer SDK 自定义编码解码协议。介绍相关配置和参数。

Z同学
2022-01-26 / 0 评论 / 1 点赞 / 436 阅读 / 1,029 字
温馨提示:
本文最后更新于 2022-02-27,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

介绍

我们如果不想使用ijkPlayer 提供的默认的sdk版本。

那么我们可以自定义需要支持的播放协议。本篇主要介绍如何扩展自己想要的播放协议

前提

如果要达成自定义播放,那么你需要明白如何编译成SO文件。否则没有意义了。

你可以先尝试本地下载文件,然后进行编译so。

自定义

FFmpeg 实际上支持比较多的播放协议和视频格式。但是我们在实际操作中,很多时候并不需要支持那么全,因为支持的越多。编译文件就越大。

ijkplayer 提供了三个不同的版本让我们选择:

  • module-default.sh :生成的文件同时支持ts格式的视频,例如一些电视台的m3u8 格式
  • module-lite.sh : 官方默认引用了该文件配置,这个生成的最小库模板,不支持ts格式的视频
  • module-lite-hevc.sh : 相对于lite 格式只是多加上了hevc function的引用

然后通过module.sh 引用上面三个配置里面的数据。在这个文件中指定的地址,就是代表编译时采用哪个配置进行编译so库。

我们具体的需要了解的就是module-xxxx文件里面的配置了。

image-20220126180206506

所有配置前面都是:export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS

我们需要关注的就是后面的配置项。

image-20220126180323490

该命令有两种:

--disable : 代表禁止该功能

--enable :代表开放该功能

然后每个大模块都有一个注释,注释告诉了我们下面的配置都是哪些功能。

我们之后就可以根据自己的需求,进行定义是否开启某些项了。

例如,我们开启rtp协议支持:

文档默认为:
`export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-protocol=rtp"`

修改为:
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-protocol=rtp"

例如我们不想开启rtmpt协议:

export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-protocol=rtmpt"
改为:
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-protocol=rtmpt"

这个文档的所有配置,都是这么进行调整的。

1

评论区