音视频项目—基于FFmpeg和SDL的音视频播放器解析(二十一)

介绍

在本系列,我打算花大篇幅讲解我的 gitee 项目音视频播放器,在这个项目,您可以学到音视频解封装,解码,SDL渲染相关的知识。您对源代码感兴趣的话,请查看基于FFmpeg和SDL的音视频播放器

如果您不理解本文,可参考我的前一篇文章音视频项目---基于FFmpeg和SDL的音视频播放器解析(二十)

解析

我们继续解析 videooutput 的函数

RefreshLoopWaitEvent:
cpp 复制代码
#define REFRESH_RATE 0.01
void VideoOutput::RefreshLoopWaitEvent(SDL_Event* event){
    double remaining_time = 0.0;
    SDL_PumpEvents();
    while (!SDL_PeepEvents(event, 1, SDL_GETEVENT, SDL_FIRSTEVENT, SDL_LASTEVENT)){
        if(remaining_time > 0.0){
            this_thread::sleep_for(chrono::milliseconds(int64_t(remaining_time * 1000.0)));
        }
        remaining_time = REFRESH_RATE;
        videoRefresh(&remaining_time);
        SDL_PumpEvents();
    }   
}

SDL_PumpEvents:用于更新事件队列并处理事件

SDL_PeepEvents:用于从事件队列中获取特定类型的事件

如果 remaining_time 大于 0,则等待一会

接着给 remaining_time 赋值 0.01

接着调用 videoRefresh,更新 SDL

MainLoop:
cpp 复制代码
int VideoOutput::MainLoop(){
    SDL_Event event;
    while (true)
    {
        RefreshLoopWaitEvent(&event);
        switch (event.type){
        case SDL_KEYDOWN:
            if(event.key.keysym.sym == SDLK_ESCAPE){
                return 0;
            }
            break;
        case SDL_QUIT:
            return 0;
        default:
            break;
        }
    }
    return 0;
}

主循环函数

检测 SDL_Event 的类型

SDL_KEYDOWN:检测到按键的按压,如果是 escape,则退出

SDL_QUIT:如果类型为 QUIT(停止),则退出

好了,videooutput 这个类解析完了,我们最后可以看一下,main 函数是如何运行的,把总体运行起来。

欲知后事如何,请听下回分解。

相关推荐
神奇霸王龙21 小时前
GPT-Image-2 角色一致性屠榜:2026 五款图生图模型 IP 漫剧实测
人工智能·gpt·tcp/ip·ai·ai作画·prompt·音视频
grey_csdn1 天前
1930_再论本地大模型处理音视频
ai·音视频
小龙报1 天前
远控功能哪个全?2026六款远控横评实测
实时互动·音视频·交互
小猴子爱上树1 天前
电商多语言图片翻译工具,批量翻译视频字幕加智能抠图
python·音视频
pla888888881 天前
ERNIE-Image + InfiniteTalk,从文生图到无限时长视频——国产DCU部署:从图像生成到音画同步数字人视频的全链路实现(含完整代码)
音视频
中微极客1 天前
AI视频生成器技术选型与工程实践指南(2026)
人工智能·音视频
神奇霸王龙1 天前
国产音乐视频 Prompt 三段式屠夫榜:5 个国产视频模型实测对比
人工智能·ai·prompt·音视频·agent·ai编程·agi
神奇霸王龙1 天前
AI视频Prompt结构化实战指南:可灵/万相/豆包
人工智能·ai·prompt·aigc·音视频·ai编程
SEONIB_Explorer2 天前
跨境电商新手零门槛教程:AI 一键生成 TikTok/Ins 投放短视频,5 步 60 秒出片
人工智能·音视频·跨境电商·视频制作·veonib
运营小白2 天前
电商产品链接自动生成视频广告:从“信息搬运“到“链接进、视频出“的工程化思路
大数据·人工智能·aigc·音视频·veonib·电商视频广告·产品链接解析