最近在封装播放库,我用的是FFMPEG+SDL库封装,这个库其实用起来不难,因为网上可供参考的资源也多,所以我自己也封装了一个,但是播放视频时只要我电脑一锁屏再重新打开,我靠视频卡住不动了,我调试看来下渲染也是正常的,最后终于解决了
方法一:网上介绍的,获取windows锁屏信号,然后重新播放,但是这种我感觉不太友好
方法二:渲染和纹理不在同一个线程运行,这个就是我遇到的问题。
最后
m_SdlRender = SDL_CreateRenderer(m_SdlWindow, -1, SDL_RendererFlags::SDL_RENDERER_ACCELERATED);
SDL_CreateTexture(m_SdlRender, SDL_PIXELFORMAT_IYUV, SDL_TEXTUREACCESS_STREAMING, 1920, 1080);
SDL_UpdateYUVTexture(m_SdlTexture, NULL, y, y_pitch, u, u_pitch, v, v_pitch);
SDL_RenderClear(m_SdlRender);
SDL_RenderCopy(m_SdlRender, m_SdlTexture, NULL, prect);
SDL_RenderPresent(m_SdlRender);
这些放在同一个线程就解决啦。。。。浪费我两天时间。。。
后续我回头把封装好的库上传下,有需要的话关注下,谢谢!!!