|
Модератор
|
||||||
Воспроизведение видео15.02.2021, 22:46. Показов 4035. Ответов 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
|
|
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||||
| 20.02.2021, 14:36 | ||||
. Там особо ничего сложного. Можешь почитать книгу Энтони Уильямса, хотя бы первые несколько глав, что бы освоиться и написать асинхронное чтение/декодирование.
. Вот как тут: Оптимизация для слабых ПК
0
|
||||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 20.02.2021, 15:04 | ||
end добавь строчку clock = now перед sleep
0
|
||
|
6352 / 3523 / 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 | |
|
Помогаю со студенческими работами здесь
35
Наложить видео с альфа каналом поверх картинки с камеры, чтобы видео не перекрывало картинку Воспроизведение видео воспроизведение видео на пк Воспроизведение видео Воспроизведение видео Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|