音视频流媒体开发【三十四】FFmpeg+QT播放器3-播放器模块
2023-03-28 本文已影响0人
AlanGe
重点内容:
-
理解播放器的框架
-
理解播放器的状态转换(后续章节继续深⼊讲解,这⾥先理解个⼤概即可)
-
理解播放器的代码逻辑
1 模块分析
2 播放器状态转换
播放器状态我们参考成熟的ijkplayer的状态转换实现。
状态转换图
注意图中的线条:
实线箭头连接的状态变化通过 API 调⽤完成,
虚线箭头连接的状态变化是通过 播放器内部执⾏完特定任务或者发⽣错误 ⽽⾃动发⽣的状态变化。
状态释义
可播放状态
prepared、 started、 paused、 completed。
可播放状态中可以通过调⽤ start函数 转化为 started 状态,并且进⾏媒体播放。
稳定状态
idle、 initialized、 prepared、 paused、 completed、 stopped、 end、error。
稳定状态只可以通过 API 调⽤转换为其他的状态,不会⾃主发⽣状态变化。
⾮稳定状态
async_preparing、 started。
⾮稳定状态会在⼀定条件下⾃动转变为其他状态,也可以通过 API 调⽤进⾏状态跳转。
完整转换 API
idle
initialized
async_preparing
prepared
started
paused
completed
stoped
error
end
3.参考
https://blog.csdn.net/weixin_52622200/article/details/114880502