Pergunta

Estou tendo problemas com o lançamento da Nokia próprio player de vídeo do meu pedido que eu apenas não parecem ser capazes de resolver.

Minha primeira tentativa de chamar incluído

Qt.openUrlExternally(url)

a partir de software livre, e que parecia fazer o truque tudo bem, exceto que é aberto o navegador de cada vez e é usado em vez do vídeo-suite (nativo do jogador).

Seguinte, eu tentei cuteTube -abordagem onde eu iniciar novo processo como este:

QStringList args;
args << url;
QProcess *player = new QProcess();
connect(player, SIGNAL(finished(int, QProcess::ExitStatus)), player, SLOT(deleteLater()));
player->start("/usr/bin/video-suite", args);

Que trabalhou, exceto que é necessária vídeo-suite para ser fechado ao chamar o jogador->iniciar, caso contrário, ele não fez nada.

Minha terceira tentativa envolvidos iniciar o vídeo-suite através QDBus, mas que não funcione melhor:

QList<QVariant> args;
QStringList urls;
urls << url;
args.append(urls);

QDBusMessage message = QDBusMessage::createMethodCall(
    "com.nokia.VideoSuite",
    "/",
    "com.nokia.maemo.meegotouch.VideoSuiteInterface",
    "play");

message.setArguments(args);
message.setAutoStartService(true);

QDBusConnection bus = QDBusConnection::sessionBus();

if (bus.isConnected()) {
    bus.send(message);
} else {
    qDebug() << "Error, QDBus is not connected";
}

O problema com isso é que ele requer de vídeo-suite e autoStartService parâmetro não ajudou muito.Se o vídeo-suite não estiver em execução, já, a chamada abre-o bem, mas, infelizmente, nenhum vídeo começa a reproduzir.

Eventualmente, eu tentei usar também VideoSuiteInterface, mas, mesmo tendo o programa compilar com ele, parecia ser difícil.Quando eu finalmente consegui compilar e vincular todas as bibliotecas, os resultados não diferem opção 3 acima.

Então, existe uma maneira de usar VideoSuiteInterface diretamente ou através de DBus, para que ele possa iniciar a reprodução de vídeo, independentemente do estado atual do aplicativo?

Foi útil?

Solução

A solução, na verdade, foi mais simples do que eu realmente pensei inicialmente;o VideoSuiteInterface -abordagem trabalhou depois de tudo.Bastou para usá-lo corretamente.Aqui, são de total fontes, se alguém deseja experimentar a si mesmos.

jogador.h:

#ifndef PLAYER_H
#define PLAYER_H
#include <QObject>
#include <maemo-meegotouch-interfaces/videosuiteinterface.h>

class Player : public QObject {
  Q_OBJECT
private:
  VideoSuiteInterface* videosuite;
public:
  Player(QObject *parent = 0);
  Q_INVOKABLE void play(QString url);
};
#endif // PLAYER_H

player.cpp:

#include "player.h"
#include <QObject>
#include <QStringList>
#include <QtDeclarative>

Player::Player(QObject *parent) : QObject(parent) {}

void Player::play(QString url) {
  QList<QVariant> args;
  QStringList urls;
  urls << url;
  args.append(urls);

  videosuite = new VideoSuiteInterface();
  videosuite->play(urls);
}

Além disso, você pode conectar-se alguns sinais para tornar a INTERFACE mais ágil, mas basicamente o que deve fazer o truque.

É necessário, finalmente, lembre-se de adicionar o seguinte ao seu .pro arquivo e você é bom para ir:

CONFIG += videosuiteinterface-maemo-meegotouch
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top