|
Модератор
|
||||||
Воспроизведение видео15.02.2021, 22:46. Показов 4568. Ответов 34
Давно уже были мысли создать тему про это, но только сейчас дошли руки. Собственно сам вопрос, как правильно воспроизводить видео с использованием opengl? Знаю про pbo, но с ним надо мапить буфер а сам этот процесс довольно затратный. Пока сделал тупо в лоб, рисую прямоугольник с текстурой на весь экран, две текстуры, одну рисую, другую заполняю через glTextureSubImage2D декодированными данными в том же кадре.
На fullhd видео у меня выдает в среднем 60 фпс (+- 1 крайне редко 2), в 4к все похуже, в среднем около 22 (+- 5) фпс Форматы и размер видео не влияют на фпс, по крайней мере я не заметил. Видео декодирую через ffmeg (думаю в идеале нужно остановиться на одном формате, а то +15мб к весу как-то не очень, другой вопрос какой формат, но сейчас не об этом). Так как движок игровой куча форматов не нужны и буду видео подгонять к нужному фреймрейту, а то сейчас у меня всегда стремится к 60 не взирая на фпс самого видео)) Звук не реализовывал, будет думаю отдельно и через openal Есть у кого опыт в данном вопросе? Точно ли будет выигрыш от pbo и стоит ли его использовать? В сети не нахожу понятных примеров использования pbo, особенно с dsa. И везде советуют заполнять буфер после мэппинга в другом потоке, а с потоками я совсем не разбираюсь. Знаю что нельзя использовать один контекст в разных потоках и можно расшаривать ресурсы, не проблема, в glfw создать еще одно окно как дочернее от основного и ресурсы будут общими. Думаю для меня важнее неблокируемый запись данных в текстуру, но можно ли это сделать в одном потоке. Ведь декодирование и конвертирование видео из YUV в RGBA тоже процесс не быстрый и блокирующий основной поток. В данный момент так рисую
OpenGL_VideoPlayer.7z
0
|
||||||
| 15.02.2021, 22:46 | |
|
Ответы с готовыми решениями:
34
Воспроизведение видео-файлов DirectShow воспроизведение видео из буфера в ОЗУ Воспроизведение видео .h264 без сторонних кодеков |
|
Модератор
|
|
| 20.02.2021, 13:53 [ТС] | |
|
zayats80888, потоки для меня темный лес, в особенности синхронизация и обмен данными, у меня опыта в программировании больше на джаве, но даже там потоки не использовал почти.
Немного обновил код, а то у меня похоже была утечка памяти, так как каждые 2-3 секунды программа отъедала лишний мегабайт оперативки. Некоторые классы слил в один, некоторое наоборот выделил в отдельные, шейдеры теперь в коде, чтобы не таскать за собой 2 файла. OpenGL_VideoPlayer.7z (выгружать на гит не вижу смысла, так как это в будущем часть более крупного проекта который и так на гите). Погуглил видеокодеки и ужаснулся, бесплатных раз два и обчелся, особенно для игр. Везде находятся ffmpeg и libsmacker (как понимаю бесплатный аналог bink от тех же авторов) Просто я думал что у меня что-то с таймером, ведь если к нему прибавить 7-9 кадров то фпс выравнивается +- к тому что нужен. Более подробно расписать (по функциям) не смогу, лень компилировать pdb файлы Тут как видно процессор почти не загружен. В графике по действиям 65% или чуть больше занимает IO.
0
|
|
|
6353 / 3524 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||||
| 20.02.2021, 14:36 | ||||
. Там особо ничего сложного. Можешь почитать книгу Энтони Уильямса, хотя бы первые несколько глав, что бы освоиться и написать асинхронное чтение/декодирование.
. Вот как тут: Оптимизация для слабых ПК
0
|
||||
|
6353 / 3524 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 20.02.2021, 15:04 | ||
end добавь строчку clock = now перед sleep
0
|
||
|
6353 / 3524 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 21.02.2021, 14:45 | ||
![]() Как ты и сам видишь, декодинг узкое место. Выноси в отдельный поток. Не по теме: А вот почему TextureSubImage подтупливает, тоже интересно. Возможно это из-за дебаг режима драйвера. И на будущее, смотри профилировку во время рабочей нагрузки, там на графике можно выделить анализируемый участок, а то ты походу самый старт программы показал.
0
|
||
|
Модератор
|
|||
| 21.02.2021, 14:57 [ТС] | |||
|
Добавлено через 2 минуты Я думал основной затык в чтении кадра)) (это то что внутри while) Добавлено через 3 минуты Не по теме: Еще можно глянуть в Nvidia Nsight, оно у меня и отдельной программой и как плагин для студии, но лень разбираться с ним. Я и так анреал на плюсах начал изучать
0
|
|||
|
0 / 0 / 0
Регистрация: 22.01.2020
Сообщений: 32
|
|
| 10.05.2024, 15:08 | |
|
Пытаюсь собрать ваш пример. Нет файла <gl46.h> Пробовал искать в сети... нет. Где можно его взять? Спасибо.
0
|
|
|
Модератор
|
||
| 10.05.2024, 15:17 [ТС] | ||
|
настройки Version 4.6 Core header only loader merge вроде так получившийся файл переименовать в gl46.h
0
|
||
|
0 / 0 / 0
Регистрация: 22.01.2020
Сообщений: 32
|
||||||
| 10.05.2024, 16:46 | ||||||
|
Ох и наворот там у Вас! Компилятор "кровью умылся".
Например такое:
Надо достаточно много исправлять
0
|
||||||
|
Модератор
|
||
| 10.05.2024, 21:11 [ТС] | ||
|
Если что версию OpenGL можно понизить, не обязательно использовать мою, вот например то что точно можно в обратную сторону заменять. Мне просто удобно использовать последнюю, удобно и некоторые вещи быстрее, нету ничего такого что есть только в 4.6.
0
|
||
|
0 / 0 / 0
Регистрация: 22.01.2020
Сообщений: 32
|
|
| 11.05.2024, 10:10 | |
|
>>Юниформ инициализация
В мире статистически достаточно много идиотов и это научный факт. Вероятно, их по дешевке набрали в команду "улучшать" стандарты. Но это совсем не значит, что следует делать что они нам предлагают.. Например, если я напишу такое в своих проектах на работе - меня сразу уволят. Добавлено через 2 часа 6 минут Не получается собрать ffmpeg. У вас есть файл конфигурации? >> libavutil\macros.h(28): fatal error C1083: Cannot open include file: 'libavutil/avconfig.h': No such file or directory
0
|
|
|
0 / 0 / 0
Регистрация: 22.01.2020
Сообщений: 32
|
||
| 14.05.2024, 06:19 | ||
|
Зато тут правильно: https://glad.dav1d.de/ Описание как подключить: https://ravesli.com/urok-2-pod... lad/#toc-7 ffmpeg успешно собрал
0
|
||
|
0 / 0 / 0
Регистрация: 22.01.2020
Сообщений: 32
|
|
| 14.05.2024, 08:09 | |
|
Приложение собралось без ошибок. Окно создается, видео файл открывается. При инициализации буфера ошибка доступа. Посмотрел версию драйвера, 4.6 поддерживается, функция glCreateBuffers - OK в списке есть.
Как исправить - идей нет...
0
|
|
| 14.05.2024, 08:09 | |
|
Наложить видео с альфа каналом поверх картинки с камеры, чтобы видео не перекрывало картинку Воспроизведение видео воспроизведение видео на пк Воспроизведение видео Воспроизведение видео Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов.
Логика кажется понятной:
1. Находим ключевые слова.
2. Добавляем их на. . .
|
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302
Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
|