WinUI 3 C++/WinRT + OpenCV + GStreamerC++

Программы на C++. Форум разработчиков
Anonymous
WinUI 3 C++/WinRT + OpenCV + GStreamer

Сообщение Anonymous »

У меня есть проект WinUI 3 C++/WinRT, в этом проекте мне нужно транслировать видео с камеры и отображать его в MediaPlayerElement.
Для захвата потока я использую конвейер GStreamer-OpenCV: "dshowvideosrc device-index=0 ! video/x-raw ! videoconvert ! video/x-raw,format=BGRA ! appsink"
После успешной установки конвейера я создаю

Код: Выделить всё

VideoEncodingProperties::CreateUncompressed(
MediaEncodingSubtypes::Bgra8(),
m_width,
m_height);
Настройки частоты кадров, битрейта, создание VideoStreamDescriptor и, наконец, MediaStreamSource(m_videoDescriptor);
В качестве отладки здесь я проверяю, что m_width, m_height, если VideoEncodingProperties имеют правильные значения.
ЭТО правильно, поэтому я создаю источник мультимедиа из ранее созданного источника медиапотока и присваиваю его атрибуту Source моего XAML MediaPlayerElement:

Код: Выделить всё

auto mediaPlaybackItem = MediaPlaybackItem(MediaSource::CreateFromMediaStreamSource(GetMediaStreamSource()));

MyMediaPlayer().Source(mediaPlaybackItem);
После компиляции и запуска я вижу в разделе «Вывод» Visual Studio, что обнаружено исключение: ошибка WinRT originate — 0x80070057: «Скорректированная область видео меньше, чем поддерживается форматом»
Несмотря на это, кажется, что приложение продолжает работать, событие OnSampleRequested продолжает срабатывать, а событие Stopped никогда не запускается.
Мое исследование отладки показало мне, что исключение происходит на этапе назначения атрибута источника MyMediaPlayer: MyMediaPlayer().Source(mediaPlaybackItem);
Итак, вопрос: почему происходит это исключение и обращаю ли я на него внимание или просто игнорирую?

Подробнее здесь: https://stackoverflow.com/questions/797 ... -gstreamer

Вернуться в «C++»