嵌入式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,这部分相信也不难了。

相关推荐
skynetkang1 小时前
摄像头原始数据读取——gstreamer(gst_parse_launch)
linux·c++·音视频·gstreamer
cuijiecheng20186 小时前
音视频入门基础:MPEG2-TS专题(8)——TS Header中的适配域
音视频
小狮子安度因6 小时前
Qt如何改变串口读取数据的频率
开发语言·数据库·qt
海涛高软7 小时前
QT配置文件详解
开发语言·qt
guoruijun_2012_48 小时前
安卓 获取 喇叭 听筒 音频输出流 AudioPlaybackCapture API 可以捕获音频输出流
android·音视频
龙虎榜小红牛系统9 小时前
Wordcloud+PyQt5写个词云图生成器1.0
python·qt·wordcloud
云樱梦海9 小时前
阿里发布 EchoMimicV2 :从数字脸扩展到数字人 可以通过图片+音频生成半身动画视频
音视频·数字人·echomimicv2
飘逸高铁侠12 小时前
使用 Python 删除视频的某一段并保留其他时间段
python·音视频·剪辑
EasyNVR12 小时前
NVR录像机汇聚管理EasyNVR多个NVR同时管理基于B/S架构的技术特点与能力应用
安全·架构·音视频·监控·视频监控