QMediaPlayer и gstreamer в Astra Linux

Truefish

New member
Сообщения
3
#1
Здравствуйте!
Установлена Astra Linux Смоленск.
Написал в Qt 5.51 программу для воспроизведения видео (в Ubuntu работает). При этом VLC Media Player, предустановленный на Astra воспроизводит это видео.
В Astra Qt выдает ошибку в консоль при воспроизведении (при воспроизведении mp3 QMediaPlayer кстати работает нормально):
Код:
annot connect to server socket err = Нет такого файла или каталога
Cannot connect to server request channel
jack server is not running or cannot be started
Cannot connect to server socket err = Нет такого файла или каталога
Cannot connect to server request channel
jack server is not running or cannot be started
GStreamer; Unable to pause - "file:///home/oddy/Загрузки/small.mp4"
Warning: "Для типа «video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)3, profile=(string)constrained-baseline, codec_data=(buffer)0142c01effe1001b6742c01e9e218118534d40404050000003001000000303c8f162ee01000568ce06cb20, width=(int)560, height=(int)320, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1» недоступен декодер."
Warning: "Для типа «audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream-format=(string)raw, level=(string)2, base-profile=(string)lc, profile=(string)lc, codec_data=(buffer)1188, rate=(int)48000, channels=(int)1» недоступен декодер."
Error: "В вашей установке GStreamer отсутствует модуль."
Вот код:
Код:
#include "widget.h"
#include <QMediaPlayer>
#include <QVideoWidget>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    QVideoWidget *videoWidget = new QVideoWidget(this);
    QMediaPlayer *player = new QMediaPlayer(this);
    player->setMedia(QUrl::fromLocalFile("/home/oddy/Загрузки/small.mp4"));
    player->setVideoOutput(videoWidget);
    videoWidget->show();
    player->play();
}
В системе установлены ВСЕ пакеты gstreamer

Код:
oddy@astra:~$ dpkg -l | grep gstreamer
ii  bluez-gstreamer                          4.99-2                               amd64        Bluetooth GStreamer support
ii  gir1.2-gstreamer-0.10                    0.10.36-1.2                          amd64        Description: GObject introspection data for the GStreamer library
ii  gstreamer-tools                          0.10.36-1.2                          amd64        Tools for use with GStreamer
ii  gstreamer0.10-alsa:amd64                 0.10.36-1.1                          amd64        GStreamer plugin for ALSA
ii  gstreamer0.10-crystalhd                  1:0.0~git20110715.fdd2f19-9          amd64        Crystal HD Video Decoder (GStreamer plugin)
ii  gstreamer0.10-doc                        0.10.36-1.2                          all          GStreamer core documentation and manuals
ii  gstreamer0.10-fluendo-mp3:amd64          0.10.23.debian-2                     amd64        Fluendo mp3 decoder GStreamer plugin
ii  gstreamer0.10-gconf:amd64                0.10.31-3+nmu1ubuntu5                amd64        GStreamer plugin for getting the sink/source information from GConf
ii  gstreamer0.10-gnomevfs:amd64             0.10.36-1.1                          amd64        GStreamer plugin for GnomeVFS
ii  gstreamer0.10-packagekit                 0.7.6-3                              amd64        GStreamer plugin to install codecs using PackageKit
ii  gstreamer0.10-plugins-base:amd64         0.10.36-1.1                          amd64        GStreamer plugins from the "base" set
ii  gstreamer0.10-plugins-base-apps          0.10.36-1.1                          amd64        GStreamer helper programs from the "base" set
ii  gstreamer0.10-plugins-base-doc           0.10.36-1.1                          all          GStreamer documentation for plugins from the "base" set
ii  gstreamer0.10-plugins-good:amd64         0.10.31-3+nmu1ubuntu5                amd64        GStreamer plugins from the "good" set
ii  gstreamer0.10-plugins-good-doc           0.10.31-3+nmu1ubuntu5                all          GStreamer documentation for plugins from the "good" set
ii  gstreamer0.10-plugins-ugly:amd64         0.10.19-2.1                          amd64        GStreamer plugins from the "ugly" set
ii  gstreamer0.10-plugins-ugly-doc           0.10.19-2.1                          all          GStreamer documentation for plugins from the "ugly" set
ii  gstreamer0.10-pulseaudio:amd64           0.10.31-3+nmu1ubuntu5                amd64        GStreamer plugin for PulseAudio
ii  gstreamer0.10-tools                      0.10.36-1.2                          amd64        Tools for use with GStreamer
ii  gstreamer0.10-x:amd64                    0.10.36-1.1                          amd64        GStreamer plugins for X11 and Pango
ii  libcanberra-gstreamer:amd64              0.28-6                               amd64        GStreamer backend for libcanberra
ii  libgstreamer-plugins-base0.10-0:amd64    0.10.36-1.1                          amd64        GStreamer libraries from the "base" set
ii  libgstreamer-plugins-base0.10-dev        0.10.36-1.1                          amd64        GStreamer development files for libraries from the "base" set
ii  libgstreamer0.10-0:amd64                 0.10.36-1.2                          amd64        Core GStreamer libraries and elements
ii  libgstreamer0.10-dev                     0.10.36-1.2                          amd64        GStreamer core development files
ii  phonon-backend-gstreamer:amd64           4:4.7.1-1ubuntu4                     amd64        Phonon GStreamer 0.10.x backend
ii  phonon-backend-gstreamer-common:amd64    4:4.7.1-1ubuntu4                     amd64        Phonon GStreamer 0.10.x backend icons
ii  phonon4qt5-backend-gstreamer:amd64       4:4.7.1-1ubuntu4                     amd64        Phonon4Qt5 GStreamer 0.10.x backend
oddy@astra:~$

Помогите, пожалуйста, разобраться в этом вопросе!
 
Последнее редактирование:
Сообщения
3
#2
Пишу сам себе, так как поддержка не отвечает.
Попробовал воспроизвести файл mpeg-2, вроде старый формат.
Код:
player->setMedia(QUrl::fromLocalFile("/home/oddy/Загрузки/small.mpg"));
Код:
Запускается /home/oddy/build-Video-Desktop-Debug/Video...
Cannot connect to server socket err = Нет такого файла или каталога
Cannot connect to server request channel
jack server is not running or cannot be started
Cannot connect to server socket err = Нет такого файла или каталога
Cannot connect to server request channel
jack server is not running or cannot be started
Warning: "Не найден элемент управления громкостью"

** (Video:3877): WARNING **: ffmpegcolorspace-vo: size 230400 is not a multiple of unit size 86400
Cannot connect to server socket err = Нет такого файла или каталога
Cannot connect to server request channel
jack server is not running or cannot be started
как решить эту проблему с gstreamer не разобрался(

Так же VLC проигрывает поток из IP камеры, код же не работает, gstreamer пишет "не удалось прочитать из ресурса"
Код:
Код:
#include "widget.h"
#include <QMediaPlayer>
#include <QVideoWidget>
#include <QVBoxLayout>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    QVBoxLayout *lay = new QVBoxLayout(this);
    QVideoWidget *videoWidget = new QVideoWidget(this);
    QMediaPlayer *player = new QMediaPlayer(this);
    //player->setMedia(QUrl::fromLocalFile("/home/oddy/Загрузки/small.mpg"));
    player->setMedia(QUrl("rtsp://10.10.4.223:554/live1.sdp"));
    lay->addWidget(videoWidget);
    this->setLayout(lay);
    this->resize(640,480);
    player->setVideoOutput(videoWidget);
    videoWidget->show();
    player->play(); 
}

Widget::~Widget()
{

}
 
Последнее редактирование:
Сообщения
3
#3
Получилось воспроизвести видеопоток следующим способом, используя VLC библиотеку
Код:
#include "player.h"
#include <vlc/vlc.h>
#include <QVBoxLayout>
#include <QPushButton>
#include <QSlider>
#include <QTimer>
#include <QFrame>

Player::Player()
: QWidget()
{
    _videoWidget=new QFrame(this);
    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(_videoWidget);
    setLayout(layout);
    //create a new libvlc instance
    _vlcinstance=libvlc_new(0, NULL);
    // Create a media player playing environement
    _mp = libvlc_media_player_new (_vlcinstance);
}

Player::~Player()
{
    /* Stop playing */
    libvlc_media_player_stop (_mp);
    /* Free the media_player */
    libvlc_media_player_release (_mp);
    libvlc_release (_vlcinstance);
}

void Player::playFile(const char *file)
{
    /* Create a new LibVLC media descriptor */
    _m = libvlc_media_new_location (_vlcinstance, file);
    libvlc_media_player_set_media (_mp, _m);
    /* Get our media instance to use our window */
        int windid = _videoWidget->winId();
        libvlc_media_player_set_xwindow (_mp, windid );
        libvlc_audio_set_volume (_mp,0);
    /* Play */
    libvlc_media_player_play (_mp);
}