-
大小: 569KB文件类型: .zip金币: 1下载: 0 次发布日期: 2021-06-18
- 语言: 其他
- 标签: gstreamer1 QT播放器 gstreamer+qt
资源简介
gstreamer1+QT实现的 播放器
可以直接播放网路URL,实现基本的播放控制
代码片段和文件信息
#include “kwidget.h“
#include “SinkerMacros.h“
KWidget::KWidget(QWidget *parent)
: QWidget(parent)
{
trace_routine();
mVolumeSlider = NULL;
pipeline = NULL;
mVolumeSlider = new QSlider(this);
mVolumeSlider->setOrientation(Qt::Horizontal);
mVolumeSlider->setMinimum(0);
mVolumeSlider->setMaximum(100);
mVolumeSlider->setSingleStep(1);
mVolumeSlider->setTickInterval(5);
mVolumeSlider->move(10this->height()-40);
mVolumeSlider->setValue(60);
mVolumeSlider->show();
muteButton = new QToolButton;
muteButton->setFixedSize(4525);
muteButton->setIcon(style()->standardIcon(Qstyle::SP_MediaVolume));
muteButton->move(10this->height()-40);
queryTimer = new QTimer;
queryTimer->setInterval(200);
queryTimer->start();
Qobject::connect(mVolumeSliderSIGNAL(valueChanged(int))thisSLOT(setVolume(int)));
Qobject::connect(queryTimerSIGNAL(timeout())thisSLOT(slotTimerout()));
}
KWidget::~KWidget()
{
if (mVolumeSlider)
{
delete mVolumeSlider;
}
if (bus)
{
gst_object_unref (bus);
bus = NULL;
}
}
void KWidget::resizeEvent(QResizeEvent *event)
{
trace_routine();
QWidget::resizeEvent(event);
trace_print_f(“=====>>> %d %d“this->width()this->height());
if(this->width() > 100 && this->height()> 45)
{
trace_print_f(“move 10%d“this->height()-40);
mVolumeSlider->move(this->width()-100this->height()-30);
muteButton->move(this->width()-150this->height()-30);
}
}
void KWidget::showAllControl()
{
trace_routine();
mVolumeSlider->show();
}
bool KWidget::setGstPipeLine(GstElement *pipe)
{
trace_routine();
pipeline = pipe;
g_object_set (pipeline “volume“ 60/100.0 NULL);
bus = gst_element_get_bus (pipeline);
if (!bus)
{
return false;
}
return true;
}
void KWidget::setVolume(int value)
{
trace_routine();
trace_print_f(“setVolume value=%d“ value);
g_object_set (pipeline “volume“ value/100.0 NULL);
}
void KWidget::handle_message (GstMessage *msg)
{
switch (GST_MESSAGE_TYPE (msg))
{
case GST_MESSAGE_ERROR:
{
trace_print_f(“handle_message error“);
}
case GST_MESSAGE_EOS:
{
trace_print_f(“handle_message over“);
}
case GST_MESSAGE_DURATION:
{
trace_print_f(“handle_message duration“);
}
default:
{
//trace_print_f(“handle_message default“);
}
}
}
void KWidget::slotTimerout()
{
//trace_routine();
GstMessage *msg;
if (!bus)
{
return;
}
msg = gst_bus_timed_pop_filtered (bus GST_CLOCK_TIME_NONE GstMessageType(GST_MESSAGE_STATE_CHANGED | GST_MESSAGE_ERROR | GST_MESSAGE_EOS | GST_MESSAGE_DURATION));
if (msg)
{
handle_message(msg);
gst_message_unref (msg);
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-06-03 19:42 kwidget\
文件 587720 2018-05-15 18:22 kwidget\kwidget
文件 2763 2018-05-15 15:40 kwidget\kwidget (复件).cpp
文件 6614 2018-05-15 18:21 kwidget\kwidget.cpp
文件 1157 2018-05-15 17:10 kwidget\kwidget.h
文件 516688 2018-05-15 18:21 kwidget\kwidget.o
文件 2126 2018-05-15 15:16 kwidget\kwidget.pro
文件 1755 2018-05-15 17:01 kwidget\main.cpp
文件 423056 2018-05-15 17:12 kwidget\main.o
文件 20720 2018-05-15 15:16 kwidget\Makefile
文件 3489 2018-05-15 17:12 kwidget\moc_kwidget.cpp
文件 413224 2018-05-15 17:12 kwidget\moc_kwidget.o
文件 8479 2018-05-15 15:16 kwidget\moc_predefs.h
文件 6060 2018-05-11 11:44 kwidget\SinkerMacros.h
- 上一篇:数据库课程设计大作业
- 下一篇:RADStudioKeyPatch_Lite.rar
评论
共有 条评论