如何用ijkplayer使用改变清晰度功能(切换码流)_andylao62的博客-爱代码爱编程
ff_ffplay.c:read_thread()
choose your like video stream id from ic->nb_streams set to st_index[AVMEDIA_TYPE_VIDEO]
自适应码率切换需要服务器端和客户端同时支持,首先服务器端需要提供多码率的码流,对HLS来说,就是需要服务器端提供master m3u8 playlist,也就是通常所说的嵌套m3u8;对Dash来说,manifest文件AdaptationSet里面会包含多个Representation,每个Representation对应某一个码率的流的描述。
在服务器端满足了上述条件之后,播放器通常来说需要如下四步完成自适应码率的切换,分别为:
1.带宽估计
2.切换时机和条件
3.Buffer数据切换
4.无缝切换
ijkplayer 播8K视频卡顿 · Issue #4775 · bilibili/ijkplayer · GitHub
if (!ffp->audio_disable)
st_index[AVMEDIA_TYPE_AUDIO] =
av_find_best_stream(ic, AVMEDIA_TYPE_AUDIO,
st_index[AVMEDIA_TYPE_AUDIO],
st_index[AVMEDIA_TYPE_VIDEO],
NULL, 0);
粗暴直接的做法就是你想同时解码 N 路音轨,就开 N 个 audioq,N 个 sampq,N 个 audio decode thread。
更加优雅的,效率更高的没有仔细考虑过。
按优酷做法,可以音频单独播放,这样视频音频分离没有耦合。视频可以全局时钟同步。
ijkplayer 0.6.0 enable resolution change 代码研究_Czach的博客-CSDN博客