洋洋喜洋洋 2023-06-19 17:39 采纳率: 42.9%
浏览 37

mpp硬解码显示Mppframe

使用ffmpeg+mpp进行硬解码显示,用FFMPEG读取AVPacket,再使用MPP进行硬解码,将AVPacket转换成MppPacket以后进行硬解码得到MppFrame,如何将MppFrame转换成AVFrame呢?或者得到MppFrame以后如何显示,有哪些方法呢?

  • 写回答

3条回答 默认 最新

  • MarkHan_ 2023-06-19 18:05
    关注
    
    SDL_Window* window = nullptr;
    SDL_Renderer* renderer = nullptr;
    SDL_Texture* texture = nullptr;
    
    // 初始化 SDL
    if (SDL_Init(SDL_INIT_VIDEO) < 0) {
        // 初始化失败,处理错误
    }
    
    // 创建窗口
    window = SDL_CreateWindow("MppFrame Display", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, avFrame->width, avFrame->height, SDL_WINDOW_SHOWN);
    if (!window) {
        // 窗口创建失败,处理错误
    }
    
    // 创建渲染器
    renderer = SDL_CreateRenderer(window, -1, 0);
    if (!renderer) {
        // 渲染器创建失败,处理错误
    }
    
    // 创建纹理
    texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_IYUV, SDL_TEXTUREACCESS_STREAMING, avFrame->width, avFrame->height);
    if (!texture) {
        // 纹理创建失败,处理错误
    }
    
    // 更新纹理数据
    SDL_UpdateYUVTexture(texture, nullptr, avFrame->data[0], avFrame->linesize[0], avFrame->data[1], avFrame->linesize[1], avFrame->data[2], avFrame->linesize[2]);
    
    // 渲染纹理到窗口
    SDL_RenderClear(renderer);
    SDL_RenderCopy(renderer, texture, nullptr, nullptr);
    SDL_RenderPresent(renderer);
    
    // 等待窗口关闭事件
    SDL_Event event;
    while (SDL_WaitEvent(&event)) {
        if (event.type == SDL_QUIT) {
            break;
        }
    }
    
    // 释放资源
    SDL_DestroyTexture(texture);
    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    SDL_Quit();
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 6月19日

悬赏问题

  • ¥15 数据库原理及应用上机练习题
  • ¥30 征集Python提取PDF文字属性的代码
  • ¥15 如何联系真正的开发者而非公司
  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?