-
大小: 569KB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2021-06-18
- 語言: 其他
- 標(biāo)簽: gstreamer1??QT播放器??gstreamer+qt??
資源簡介
gstreamer1+QT實現(xiàn)的 播放器
可以直接播放網(wǎng)路URL,實現(xiàn)基本的播放控制

代碼片段和文件信息
#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?(復(fù)件).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
評論
共有 條評論