目前我尝试了几个方式,都有问题。包括
ijkplayer参数设置讲解
里面的
_playerNative.SetOptionIntValue(IJKFFOptionCategory.Player, "vol", (int)(volume / 30 * 256));
这句在直播已经播放后设置是完全没有作用的,播放前设置是否起作用未知,但因为不是想要的实时调节音量的效果,所以这里就暂时抛弃。
以及 [IJKPLAYER]基于DEMO分析IJKPLAYER的
_playerNative.SetOptionIntValue(IJKFFOptionCategory.Player, "volume", volume);
这句代码只是在直播视频开始播放之前,才能设置音量的大小。
打算去查看源工程以及ffmpeg的源工程的,后来百度到了用af的方式来进行音量调节
// _playerNative.SetOptionIntValue(IJKFFOptionCategory.Player,
// "af", (int)(volume / 30f));
// _playerNative.SetOptionValue(IJKFFOptionCategory.Player,
// "af", (int)(volume / 30f) + "dB");
_playerNative.SetOptionValue(IJKFFOptionCategory.Player,
"af", (int)((volume - 50f) * 10) + "dB");
// _playerNative.SetOptionIntValue(IJKFFOptionCategory.Player,
// "af", (int)(volume - 50f) * 10));
因为ijkplayer的使用文档网上特别少,所以只能自己试着去使用这个参数,上面的写法试了都是不可行的。
源仓库代码中,选项的定义部分在ff_ffplay_options.h,关于输入的含义,目前找不到af相关的选项,所以只能挨个测试。
无论传入的db是范围0-3 还是 0-100 ,都是有声音。负数500到整数500都有声音。无论是作为int传入还是作为字符串传入
#if CONFIG_AVFILTER
{ "af", "audio filters",
OPTION_OFFSET(afilters), OPTION_STR(NULL) },
{ "vf0", "video filters 0",
OPTION_OFFSET(vfilter0), OPTION_STR(NULL) },
#endif
可以看到,原仓库中需要宏定义CONFIG_AVFILTER
开启了,af设置才会有效。这个宏定义目前来看不知道怎么开启。
关于这个宏参考:
最简单的让IJKPLAYER自动旋转带有ROTATION视频的方法
iOS ijkplayer无法旋转带有rotation信息的视频
静音静音这部分也是有相关的参数说明
{ “an”, “disable audio”, OPTION_OFFSET(audio_disable), OPTION_INT(0, 0, 1) },
按照归类应该是属于Play设置,但是代码中这样设置,是无效的。
_playerNative.SetOptionIntValue(IJKFFOptionCategory.Player, "an", 1);
目前感觉这个参数在unity中设置也是无效的。
如果是在程序挂起的时候,要进行暂停播放,只能是调用退出播放的接口了
关于ijkplayer使用过程中的问题讨论地址https://github.com/Bilibili/ijkplayer/issues
哔哩哔哩官网在github上给到的关于ijkplayer里面各个选项的参数网址ijkplayer/ijkmedia/ijkplayer/ff_ffplay_options.h