目前我尝试了几个方式,都有问题。包括
里面的
_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传入还是作为字符串传入
关于ijkplayer使用过程中的问题讨论地址
https://github.com/Bilibili/ijkplayer/issues