omxplayer выходит с задержкой 15 с при запуске с использованием QProcess

В моем Qt5.9.2 под RPi3 я запускаю omxplayer следующим образом:

QProcess *_omx = new QProcess(this);

void MyQPlayer::play(QString uri)
{
QStringList args;
args << "-o" << "0" << "-i" << "0";
args << "omxplayer";
args << "--vol=-6000";
args << "-I" << "-s";
args << "-o" << "hdmi" << uri;
_omx->start("stdbuf", args, QProcess::Unbuffered | QProcess::ReadWrite);
}

Мне нужно использовать stdbuf чтобы избежать буферизации, в противном случае я не могу прочитать в режиме реального времени вывод из приложения.

Когда видео заканчивается, omxplayer должен немедленно выйти — и это происходит, когда я запускаю его из командной строки:

$ stdbuf -o 0 -i 0 omxplayer --vol=6000 -I -s -o hdmi myfile.mp4

Вместо этого, когда видео запускается из моего приложения, оно заканчивается, и оно остается в работе около 15 секунд, прежде чем завершится. Я ловлю finished() сигнал и это подтверждает, что он успешно завершен: код выхода = 0 и статус выхода = NormalExits.

Я не уверен, полезна ли эта другая информация или это совсем другая проблема, но я все равно сообщаю здесь.
Чтобы приостановить видео, я отправляю на трубу письмо «p»:

void MyPlayer::pause()
{
qDebug() << "toggle pause";
if (_omx->state() == QProcess::Running)
{
_omx->write("p");
}
}

печать отладки говорит мне, что функция фактически вызывается каждый раз, когда я вызываю функцию, но часто мне нужно вызывать ее несколько раз, чтобы фактически приостановить или возобновить выполнение видео.

Это не должно быть проблемой с буферизацией, потому что моя командная строка должен Избегайте этого.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]