首页| 论坛| 消息
主题:Qt音视频开发1-vlc解码播放
liudianwu发表于 2020-08-02 13:54
dia_player_event_manager(vlcPlayer);
libvlc_event_new(vlcEvent, this);
}
//回调方式和句柄方式两种分别处理
if (callback) {
callbackData = new CallbackData;
callbackData->thread = this;
callbackData->pixels = new uchar;
memset(callbackData->pixels, 0, bufferWidth * bufferHeight * 4);
int width = callbackData->thread->getBufferWidth();
int height = callbackData->thread->getBufferHeight();
//设置回调拿到每帧数据
libvlc_video_set_callbacks(vlcPlayer, lock, unlock, display, callbackData);
//设置每帧格式 RV32-Format_RGB32RGBA-Format_RGBA8888 YUYV I420
libvlc_video_set_format(vlcPlayer, "RV32", width, height, width * 4);
} else {
//设置播放句柄
if (playWidget == NULL) {
return false;
}
#if defined(Q_OS_WIN)
libvlc_media_player_set_hwnd(vlcPlayer, (void *)playWidget->winId());
#elif defined(Q_OS_LINUX)
libvlc_media_player_set_xwindow(vlcPlayer, playWidget->winId());
#elif defined(Q_OS_MAC)
libvlc_media_player_set_nsobject(vlcPlayer, (void *)playWidget->winId());
#endif
//禁用句柄鼠标消息
QTimer::singleShot(1000, this, SLOT(disableHwnd()));
}
//设置硬件加速 none auto any d3d11va dxva2
setOption(QString(":avcodec-hw=%1").arg(hardware));
//设置通信协议 tcp udp
setOption(QString(":rtsp-%1").arg(transport));
//设置缓存时间 默认500毫秒
setOption(QString(":network-caching=%1").arg(caching));
//:rtsp-frame-buffer-size=1000000
//设置宽度高度,本地USB摄像头需要单独设置
if (suffix == "dshow") {
setOption(QString(":dshow-size=%1*%2").arg(videoWidth).arg(videoHeight));
} else {
setSize(videoWidth, videoHeight);
}
//设置保存文件
this->initSave();
//打开播放
libvlc_media_player_play(vlcPlayer);
//qDebug()

浏览大图
下一页上一页  (2/3)
回帖(0):

全部回帖(0)»
最新回帖
收藏本帖
发新帖