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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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