当前位置: 首页 > article >正文

嵌入式Qt使用ffmpeg视频开发记录

在此记录一下Qt下视频应用开发的自学历程,可供初学者参考和避雷。

  • 了解常用音频格式yuv420p、h264等
  • 了解QML,了解QVideoOutput类的使用,实现播放yuv420p流
  • 参考ffmpeg官方例程,调用解码器实现h264解码播放
    • 不需要手动分帧。ffmpeg库函数av_parser_parse2可以帮我们完成分帧,不足一帧的数据也会继续留在上下文中,不用担心,大可从文件中不断读取固定长度的数据送入parser,获取到完整的packet后就可以向解码器中传入packet数据
    • 只有在avcodec_receive_frame获取完整的帧后,avframe中的信息才可用,其他时候读到的是无效值
    • 解码后的YUV通道数据分别保存在avframe->data[0]、avframe->data[1]、avframe->data[2],仅通过avframe->data[0]取数据,大概率可以取到不完整的UV数据,表现为视频颜色有残影,因为这几段数据内存不连续。如果要将数据发送到VideoOutput显示,需要将YUV数据拷贝到一段连续的内存。
      请添加图片描述

因为VideoOutput支持YUV格式,所以就没有再转成RGB,这部分相信也不难了。


http://www.kler.cn/a/416197.html

相关文章:

  • 穿越机与无人机的区别:深入解析
  • 【Leetcode 每日一题】3250. 单调数组对的数目 I
  • 【C#】C# resx方式实现多语言切换(静态切换)
  • RAG架构类型
  • 物联网客户端在线服务中心(客服功能/私聊/群聊/下发指令等功能)
  • 【视频】OpenCV:读写视频文件VideoCapture和VideoWriter
  • HarmonyOS4+NEXT星河版入门与项目实战(23)------实现手机游戏摇杆功能
  • Flink四大基石之Time (时间语义) 的使用详解
  • Android使用UVCCamera打开USBCamera-预览
  • 安卓-碎片的使用入门
  • 浏览器的数据六种存储方法比较 :LocalStorage vs. IndexedDB vs. Cookies vs. OPFS vs. WASM-SQLite
  • 设计一个基于 LSTM 神经网络的文本分类器
  • 如何利用Java爬虫获取1688关键词接口的深度解析
  • String的设计,用到了哪些设计模式?
  • Window 安装 Nginx
  • JavaScript零基础入门速通(完整)
  • 虚拟机CentOS系统通过Docker部署RSSHub并映射到主机
  • ISO 26262与敏捷SPICE:汽车软件开发的双重指南
  • 网关: 用途和产品对比
  • 【Java基础入门篇】三、面向对象和JVM底层分析(1)