#include "vlcplaywidget.h"
#include "CqCommon.h"
#include <QDebug>
CVlcPlayWidget::CVlcPlayWidget(QWidget *parent)
: QWidget(parent)
{
setAutoFillBackground(true);
setPalette(QPalette(QColor(0, 255, 255)));
m_pVBoxLayout = new QVBoxLayout(this);
m_pVBoxLayout->setObjectName(QString::fromUtf8("verticalLayout"));
m_pVlcWidget = new QWidget();
m_pVBoxLayout->addWidget(m_pVlcWidget);
m_pHBoxLayout = new QHBoxLayout();
m_pHBoxLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
m_pMediaPath = new QLineEdit(this);
m_pMediaPath->setObjectName(QString::fromUtf8("lineEdit"));
m_pHBoxLayout->addWidget(m_pMediaPath);
m_pPlayBtn = new QPushButton(tr("play"), this);
m_pPlayBtn->setObjectName(QString::fromUtf8("pushButton"));
m_pHBoxLayout->addWidget(m_pPlayBtn);
m_pVBoxLayout->addLayout(m_pHBoxLayout);
connect(m_pPlayBtn, SIGNAL(clicked()), this, SLOT(play()));
initVlc();
}
CVlcPlayWidget::~CVlcPlayWidget()
{
SAFE_DELETE(m_pVBoxLayout);
SAFE_DELETE(m_pHBoxLayout);
SAFE_DELETE(m_pVlcWidget);
SAFE_DELETE(m_pMediaPath);
SAFE_DELETE(m_pPlayBtn);
unInitVlc();
}
/******************************************************************************
** 调用vlc播放
** 获取视频文件名进行播放
******************************************************************************/
void CVlcPlayWidget::play()
{
if (m_pMediaPath == Q_NULLPTR)
{
return;
}
QString strMediaFile(m_pMediaPath->text());
if (strMediaFile.isEmpty())
{
return;
}
while (libvlc_media_player_is_playing(m_pLibMp) == 1)
{
CQ_DEBUG() << "VideoLabelManage: is playing";
libvlc_media_player_stop(m_pLibMp);
CqCommon::sleep(1);
}
libvlc_media_t *pLibvlcM = libvlc_media_new_path(m_pLibInst, strMediaFile.toStdString().c_str());
libvlc_media_player_set_media(m_pLibMp, pLibvlcM);
libvlc_media_release(pLibvlcM);
libvlc_media_player_play(m_pLibMp);
}
/******************************************************************************
** 初始化Vlc
******************************************************************************/
void CVlcPlayWidget::initVlc()
{
const char *szVlcArgs[] = {"--ignore-config",
"--network-caching=500",
"--verbose=0"};
//"--longhelp",
//"--advanced"};
m_pLibInst = libvlc_new(sizeof(szVlcArgs) / sizeof(szVlcArgs[0]), szVlcArgs);
m_pLibMp = libvlc_media_player_new(m_pLibInst);
libvlc_media_player_set_hwnd(m_pLibMp, reinterpret_cast<void *>(m_pVlcWidget->winId()));
// libvlc忽略鼠标及键盘消息,由QWidget处理
libvlc_video_set_mouse_input(m_pLibMp, 0);
libvlc_video_set_key_input(m_pLibMp, 0);
// libvlc_video_set_scale(m_pLibvlcMp, 0.0f);
libvlc_video_set_aspect_ratio(m_pLibMp, "16:9");
}
/******************************************************************************
** 去初始化Vlc
******************************************************************************/
void CVlcPlayWidget::unInitVlc()
{
if (m_pLibMp != Q_NULLPTR)
{
while (libvlc_media_player_is_playing(m_pLibMp) == 1)
{
libvlc_media_player_stop(m_pLibMp);
CqCommon::sleep(1);
}
libvlc_media_player_release(m_pLibMp);
m_pLibMp = Q_NULLPTR;
}
if (m_pLibInst != Q_NULLPTR)
{
libvlc_release(m_pLibInst);
m_pLibInst = Q_NULLPTR;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
QT 使用Vlc API实现简易播放器
共115个文件
h:101个
cpp:4个
lib:4个
需积分: 0 14 下载量 64 浏览量
2023-05-02
10:06:50
上传
评论
收藏 359KB ZIP 举报
温馨提示
QT 使用Vlc API实现简易播放器
资源推荐
资源详情
资源评论
收起资源包目录
QT 使用Vlc API实现简易播放器 (115个子文件)
vlcplaywidget.cpp 4KB
CqCommon.cpp 703B
mainwindow.cpp 497B
main.cpp 224B
libvlc_media_player.h 71KB
vlc_about.h 48KB
vlc_fourcc.h 35KB
vlc_threads.h 31KB
vlc_common.h 28KB
libvlc_media.h 28KB
vlc_es.h 22KB
vlc_input.h 22KB
vlc_variables.h 21KB
vlc_arrays.h 20KB
vlc_block.h 20KB
vlc_plugin.h 20KB
libvlc.h 19KB
vlc_demux.h 17KB
vlc_dialog.h 17KB
vlc_playlist.h 16KB
vlc_stream.h 16KB
vlc_input_item.h 16KB
vlc_vout_display.h 16KB
vlc_aout.h 15KB
vlc_filter.h 15KB
vlc_codec.h 14KB
deprecated.h 14KB
vlc_text_style.h 13KB
libvlc_vlm.h 12KB
vlc_tls.h 12KB
vlc_vlm.h 12KB
vlc_block_helper.h 12KB
vlc_vout_window.h 11KB
vlc_config_cat.h 10KB
vlc_sout.h 10KB
vlc_interface.h 10KB
vlc_keystore.h 10KB
vlc_network.h 9KB
vlc_configuration.h 9KB
vlc_fs.h 9KB
vlc_actions.h 9KB
vlc_subpicture.h 9KB
vlc_picture.h 9KB
vlc_charset.h 8KB
libvlc_dialog.h 8KB
libvlc_events.h 8KB
vlc_meta.h 8KB
vlc_interrupt.h 7KB
vlc_services_discovery.h 7KB
libvlc_renderer_discoverer.h 7KB
libvlc_media_list_player.h 7KB
vlc_atomic.h 7KB
vlc_url.h 7KB
vlc_es_out.h 7KB
vlc_picture_pool.h 6KB
vlc_events.h 6KB
vlc_bits.h 6KB
libvlc_media_list.h 6KB
vlc_renderer_discovery.h 6KB
vlc_addons.h 6KB
libvlc_media_discoverer.h 6KB
vlc_media_library.h 6KB
vlc_stream_extractor.h 6KB
vlc_httpd.h 6KB
vlc_vout.h 6KB
vlc_video_splitter.h 5KB
vlc_cpu.h 5KB
vlc_boxes.h 5KB
vlc_mouse.h 5KB
vlc_strings.h 5KB
vlc_config.h 4KB
vlc_mtime.h 4KB
vlc_epg.h 4KB
vlc_messages.h 4KB
vlc_modules.h 4KB
vlc_opengl.h 4KB
vlc_http.h 3KB
vlc_xml.h 3KB
vlc_timestamp_helper.h 3KB
vlc_vout_osd.h 3KB
vlc_image.h 3KB
vlc_spu.h 3KB
vlc_fingerprinter.h 3KB
vlc_objects.h 3KB
libvlc_media_library.h 3KB
vlc_picture_fifo.h 3KB
vlc_access.h 2KB
vlc_memstream.h 2KB
vlc_viewpoint.h 2KB
libvlc_version.h 2KB
vlc_xlib.h 2KB
vlc_probe.h 2KB
vlc_gcrypt.h 2KB
vlc.h 2KB
vlc_md5.h 2KB
vlc_inhibit.h 2KB
vlc_aout_volume.h 2KB
vlc_main.h 2KB
vlc_rand.h 1KB
vlc_meta_fetcher.h 1KB
共 115 条
- 1
- 2
资源评论
炽旗7
- 粉丝: 7
- 资源: 27
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功