分享QT中引入tplayer,未能渲染到weight中,有没有大佬能改写源码能在QT中使用
-
这是引入库部分,注释掉的是我写的用不上的,其中crypto需要在sdk中全局查找拷贝来的foot@foot-VirtualBox:~/qtFile/videoDemo/videoDemo$ tree . ├── main.cpp ├── mainwindow.cpp ├── mainwindow.h ├── mainwindow.ui ├── tpmanager │ ├── crypto1.1 │ │ ├── libcrypto.a │ │ ├── libcrypto.so -> libcrypto.so.1.1 │ │ ├── libcrypto.so.1.1 │ │ ├── libssl.a │ │ ├── libssl.so -> libssl.so.1.1 │ │ └── libssl.so.1.1 │ ├── include │ │ ├── cdx_config.h │ │ ├── CdxKeyedVector.h │ │ ├── libcedarc │ │ │ └── include │ │ │ ├── cdc_config.h │ │ │ ├── memoryAdapter.h │ │ │ ├── sc_interface.h │ │ │ ├── sdecoder.h │ │ │ ├── typedef.h │ │ │ ├── vbasetype.h │ │ │ ├── vdecoder.h │ │ │ ├── veAdapter.h │ │ │ ├── veInterface.h │ │ │ └── vencoder.h │ │ ├── libcedarx │ │ │ ├── base │ │ │ │ └── include │ │ │ │ ├── AwMessageQueue.h │ │ │ │ ├── AwPool.h │ │ │ │ ├── CdxAtomic.h │ │ │ │ ├── CdxBase64.h │ │ │ │ ├── CdxBinary.h │ │ │ │ ├── CdxBitReader.h │ │ │ │ ├── CdxBuffer.h │ │ │ │ ├── CdxDebug.h │ │ │ │ ├── CdxEnumCommon.h │ │ │ │ ├── CdxISOLang.h │ │ │ │ ├── CdxKeyedVector.h │ │ │ │ ├── CdxList.h │ │ │ │ ├── CdxList.i │ │ │ │ ├── CdxLock.h │ │ │ │ ├── cdx_log.h │ │ │ │ ├── CdxMemory.h │ │ │ │ ├── CdxMessage.h │ │ │ │ ├── CdxMeta.h │ │ │ │ ├── CdxQueue.h │ │ │ │ ├── CdxSocketUtil.h │ │ │ │ ├── CdxStrUtil.h │ │ │ │ ├── CdxSysinfo.h │ │ │ │ ├── CdxTime.h │ │ │ │ ├── CdxTypes.h │ │ │ │ ├── CdxUrl.h │ │ │ │ └── SmartDnsService.h │ │ │ ├── external │ │ │ │ └── include │ │ │ │ ├── adecoder │ │ │ │ │ └── adecoder.h │ │ │ │ ├── aencoder │ │ │ │ │ └── aencoder.h │ │ │ │ └── sdecoder │ │ │ │ └── sdecoder.h │ │ │ ├── parser │ │ │ │ └── include │ │ │ │ ├── awPlayReadyLicense.h │ │ │ │ └── CdxParser.h │ │ │ ├── playback │ │ │ │ └── include │ │ │ │ ├── deinterlace.h │ │ │ │ ├── layerControl.h │ │ │ │ ├── player.h │ │ │ │ ├── soundControl.h │ │ │ │ └── subtitleControl.h │ │ │ └── stream │ │ │ └── include │ │ │ ├── AwRtpStream.h │ │ │ ├── CdxSeqBuffer.h │ │ │ ├── CdxStreamErrno.h │ │ │ └── CdxStream.h │ │ ├── PostProcessCom.h │ │ ├── tplayer.h │ │ ├── videoOutPort.h │ │ └── xplayer │ │ └── include │ │ ├── mediaInfo.h │ │ ├── xplayer.h │ │ └── xplayerUtil.h │ ├── jpegdecode │ │ └── libjpegdecode.so │ ├── lib │ │ ├── libadecoder.so │ │ ├── libasound.so -> libasound.so.2.0.0 │ │ ├── libasound.so.2 -> libasound.so.2.0.0 │ │ ├── libasound.so.2.0.0 │ │ ├── libawrecorder.so │ │ ├── libcdx_playback.so │ │ ├── libcrypto.so -> libcrypto.so.1.0.0 │ │ ├── libcrypto.so.1.0.0 │ │ ├── libscaledown.so │ │ ├── libsubdecoder.so │ │ ├── libuapi.so │ │ ├── libvenc_common.so │ │ ├── libvenc_h264.so │ │ ├── libvenc_h265.so │ │ ├── libvenc_jpeg.so │ │ ├── libVE.so │ │ ├── libvideoengine.so │ │ ├── libxplayer.so │ │ ├── libz.a │ │ ├── libz.so -> libz.so.1.2.8 │ │ ├── libz.so.1 -> libz.so.1.2.8 │ │ └── libz.so.1.2.8 │ ├── libcedarc │ │ └── lib │ │ ├── libaftertreatment.la │ │ ├── libaftertreatment.so │ │ ├── libcdc_base.la │ │ ├── libcdc_base.so │ │ ├── libfbm.la │ │ ├── libfbm.so │ │ ├── libMemAdapter.la │ │ ├── libMemAdapter.so │ │ ├── libOmxCore.la │ │ ├── libOmxCore.so │ │ ├── libOmxVdec.la │ │ ├── libOmxVdec.so │ │ ├── libOmxVenc.la │ │ ├── libOmxVenc.so │ │ ├── libsbm.la │ │ ├── libsbm.so │ │ ├── libvdecoder.la │ │ ├── libvdecoder.so │ │ ├── libvenc_base.la │ │ ├── libvenc_base.so │ │ ├── libvencoder.la │ │ └── libvencoder.so │ ├── libcedarx │ │ └── lib │ │ ├── libcdx_base.la │ │ ├── libcdx_base.so │ │ ├── libcdx_common.la │ │ ├── libcdx_common.so │ │ ├── libcdx_parser.la │ │ ├── libcdx_parser.so │ │ ├── libcdx_stream.la │ │ └── libcdx_stream.so │ ├── tmetadataretriever │ │ └── libtmetadataretriever.so │ ├── tplayer │ │ └── libtplayer.so │ └── trecorder │ └── libtrecorder.so ├── User │ ├── tpmanager.cpp │ └── tpmanager.h ├── videoDemo.pro └── videoDemo.pro.user
文件结构树部分就是整个demo项目的结构,我是将
package->allwinner->tina_multimedia
的部分内容拷贝到项目中,其中User
文件夹是参考tplayerdemo.c
的CallbackForTPlayer
写的。最后
mainwindow.cpp
写的内容是MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); TPlayer* tplayer = TPlayerCreate(CEDARX_PLAYER); TPlayerSetNotifyCallback(tplayer,myCallback,NULL); if(TPlayerSetDataSource(tplayer,"http://192.168.0.123:9999/explorer?path=upload%2F2025-03%2F4.mp4",NULL) != 0) { printf("TPlayerSetDataSource() return fail.\n"); } else { printf("TPlayerSetDataSource() end\n"); } if(TPlayerPrepare(tplayer)!= 0) { printf("TPlayerPrepare return fail.\n"); }else{ printf("TPlayerPrepare end\n"); } if(TPlayerStart(tplayer) != 0) { printf("TPlayerStart() return fail.\n"); }else{ printf("started.\n"); } qInfo() << "video is create now" ; } //最简单的一个tplayer播放流程
总结,折腾几天,发现tplayer没有提供视频数据帧的方法,想着能通过tplayer来实现在qt中播放视频,但是源码是开源的,应该能实现在qt中播放,我不会改。如果我说的有什么错误或者不妥之处,还请大佬指正。
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号