我现在有个rk3399的开发板,上面搭载了一个ubuntu20.04的系统,我现在要在这个系统上进行qt开发,要实现:使用硬解码(rk平台是mpp模块),对h264格式的视频文件进行解码成Yuv数据,并能任意保存一帧图片,要怎么实现。我运行mpp给的源代码的demo程序mpi_dec_test能把我的h264文件解码成yuv文件,我怎么在qt实现这个功能。不要ai回答,我用chatgpt4问了半天弄不出来,如果有完整源码可以加钱。
18条回答 默认 最新
关注 以下回复引自免费微信小程序:皆我百晓生。 如问题解决,还请采纳。如仍有疑问,请回复留言或私信博主,以便获得更精准的帮助。
要将H.264格式的视频文件转换为YUV数据,您需要使用一个特定的解码器(例如,QT编译后的MPM模块)。以下是一个简单的示例,展示了如何在UBUNTU 20.04系统上使用QT库进行处理:
首先,在您的QT应用程序中创建一个新的QT界面和QT编辑器窗口。这可以通过以下命令来完成:
G++ -STD=C++17 -WALL -WEXTRA -O2 -I/USR/INCLUDE/QT5 QTMAIN.CPP
然后,确保您的QT版本支持QT编译后的MPM模块。您可以从QT官方下载并安装MPM模块。
CURL HTTPS://GITHUB.COM/QML/QLIBRARY/RELEASES/DOWNLOAD/V1.8.1/MPM-QT5-COMPILER.TAR.GZ | TAR XZVF MPM-QT5-COMPILER.TAR.GZ CD MPM-QT5-COMPILER && ./CONFIGURE --PREFIX=/USR/LOCAL/QT5 && MAKE
接下来,运行以下命令以开始构建过程:
MAKE INSTALL
在QT主函数中导入MPM模块,并调用其
CONVERTVIDEO
方法,以将其转换为YUV格式:#INCLUDE <QVIDEO> #INCLUDE "MPM.H" INT MAIN(INT ARGC, CHAR **ARGV) { QREGISTERMETATYPE<QMPPICTUREFORMAT>("QMPPICTUREFORMAT"); QMPPICTUREFORMAT FORMAT; FORMAT.SETSAMPLERATE(15); FORMAT.SETCHANNELS(2); IF (ARGC > 1) { FORMAT.SETFILENAME(ARGV[1]); } // CONVERT THE VIDEO TO YUV AND SAVE IT AS A FILE. IF (!QFILE::EXISTS(FORMAT.FILENAME())) { QDEBUG() << "FAILED TO CREATE OUTPUT FILE: " << FORMAT.FILENAME(); RETURN -1; } CONST CHAR *OUTPUT = FORMAT.FILENAME().C_STR(); // USE QT'S MPMMEDIAPROCESSOR TO CONVERT THE VIDEO. MPMMEDIAPROCESSOR PROCESSOR(&FORMAT); PROCESSOR.CONVERTTOYUV(OUTPUT); RETURN 0; }
最后,关闭QT编辑器窗口,并退出QT程序:
QRMAKE QUIT EXIT
请注意,这个例子假设您的目标是将H.264格式的视频文件转换为YUV格式。如果您有其他格式的视频文件,可能需要调整
CONVERTVIDEO
方法中的参数。解决 无用评论 打赏 举报
悬赏问题
- ¥30 stm32f103c8t6制作万能红外遥控器
- ¥15 有人会fastcrud写前端页面吗
- ¥15 如何解除Uniaccess管控
- ¥15 微信小程序跳转关联公众号
- ¥15 Java AES 算法 加密采用24位向量报错如何处理?
- ¥15 使用X11可以找到托盘句柄,监控到窗口点击事件但是如何在监听的同时获取托盘中应用的上下文菜单句柄
- ¥45 字符串操作——数组越界问题
- ¥15 Loss下降到0.08时不在下降调整学习率也没用
- ¥15 QT+FFmpeg使用GPU加速解码
- ¥15 为什么投影机用酷喵播放电影放一段时间就播放不下去了?提示发生未知故障,有什么解决办法吗?