资源简介

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

评论

共有 条评论