当HlsPlayer拉取索引失败后会触发PlayerProxy的重试机制. 但是这里就有一个bug会导致重试次数不准确. 因为HlsPlayer播放失败会调用onShutdown. 然后回调PlayerProxy. 之后如果触发重试, 那么在HlsPlayer析构的时候又会在调用一次onShutdown. 这时候是安全的, 因为_on_shutdown已经被置空. 但是如果重试时又再次失败, 那么首先会调用 onPlayResult 这时候在PlayerProxy中会再次触发重试, 紧接着HlsPlayer析构, 又会调用一次onShutdown, 那么就又会触发一次重试. 修复方法有很多, 最简单的就是直接在 onShutdown中判断如果没有_demuxer就不需要父类的onShutdown方法来释放资源与重连了. 因为针对HlsPlayer来说, 如果重试拉取索引没有成功, 应该没有什么资源需要在onShutdown方法中释放了. 当然更完善的修复应该是在PlayerProxy中增加相关的判断逻辑, 给rePlay一个状态. 确保rePlay执行完成前, 不再执行一次rePlay. 具体哪种方式, 大佬您可以看着办.
| Name |
Last commit
|
Last Update |
|---|---|---|
| .github | 正在载入提交数据... | |
| 3rdpart | 正在载入提交数据... | |
| Android | 正在载入提交数据... | |
| api | 正在载入提交数据... | |
| cmake | 正在载入提交数据... | |
| conf | 正在载入提交数据... | |
| docker | 正在载入提交数据... | |
| package/rpm | 正在载入提交数据... | |
| player | 正在载入提交数据... | |
| postman | 正在载入提交数据... | |
| server | 正在载入提交数据... | |
| src | 正在载入提交数据... | |
| tests | 正在载入提交数据... | |
| webrtc | 正在载入提交数据... | |
| www | 正在载入提交数据... | |
| .clang-format | 正在载入提交数据... | |
| .gitattributes | 正在载入提交数据... | |
| .gitignore | 正在载入提交数据... | |
| .gitmodules | 正在载入提交数据... | |
| .travis.yml | 正在载入提交数据... | |
| AUTHORS | 正在载入提交数据... | |
| CMakeLists.txt | 正在载入提交数据... | |
| LICENSE | 正在载入提交数据... | |
| README.md | 正在载入提交数据... | |
| README_en.md | 正在载入提交数据... | |
| _config.yml | 正在载入提交数据... | |
| build_docker_images.sh | 正在载入提交数据... | |
| dockerfile | 正在载入提交数据... | |
| k8s_readme.md | 正在载入提交数据... | |
| sources.list | 正在载入提交数据... | |
| version.h.ini | 正在载入提交数据... |