Gstreamer (fbdevsink) покрывается приложением EGLFS

У меня есть приложение EGLFS (QT/C++), работающее на встроенном устройстве Linux (Arago). Этому приложению в какой-то момент необходимо воспроизвести видеофайл MP4 с помощью gstreamer, используя приемник видео fbdevsink.

Однако по какой-то причине приложение EGLFS закрывает видео так, чтобы его нельзя было увидеть. т.е. если я запустил gstreamer из командной строки, видео будет нормально воспроизводиться на экране.

      gst-launch-1.0 playbin uri=file:///usr/bin/myApp/videos/myVid.mp4 video-sink=fbdevsink audio-sink=fakesink

Однако, если я также запустил приложение, видео больше не будет видно. Если я закрою приложение, оно снова откроет видео.

На самом деле я хочу, чтобы само приложение воспроизводило видео, но, похоже, это дает тот же результат, т.е. если я запускаю воспроизведение видео, я его не вижу. Но если я закрою приложение, оно покажет последний кадр видео «позади», как если бы он проигрывался все это время.

      QWidget vidWidget;
vidWidget.setStyleSheet( "color: rgb(0, 0, 0);" );
vidWidget.showFullScreen();

//Create a new dialog
hwTestDialog testDialog( &vidWidget, QString( "Video Test\n%1" ).arg( testType.at( i ) ) );
testDialog.showFullScreen();
qApp->processEvents(); //Update the GUI

//Play the media (external call)
QProcess systemCall( &vidWidget);

systemCall.start( QString( "gst-launch-1.0 playbin \
                             uri=file:///usr/bin/myApp/videos/myVid.mp4 \
                             video-sink=fbdevsink \
                             audio-sink=fakesink" ).toUtf8() );

Итак, очевидно, что fbdevsink записывает непосредственно в буфер кадра, а приложения EGLFS - нет? Как и везде, где показано это приложение, имеет ли оно в графическом плане более высокий приоритет, чем буфер кадра для отображения? (Простите меня, я не слишком разбираюсь в том, как работает графика для этого).

Как ни странно, у меня есть более старая сборка Arago со старой версией fbdevsink, и у нее нет этой проблемы. На нем gstreamer пишет на экран, запущено приложение EGLFS или нет.

Более новая версия fbdevsink - 1.8.3 (то есть там, где я столкнулся с проблемами) и Arago 2017.12.

Более старая версия (которая отлично работает) - fbdevsink 1.2.3 и Arago 2015.05.

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

0 ответов

Другие вопросы по тегам