Форум программистов, компьютерный форум, киберфорум
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
 Аватар для Drouge
3 / 21 / 0
Регистрация: 22.12.2013
Сообщений: 342
Записей в блоге: 1

Проигрыватель видео разных форматов в Delphi

14.05.2020, 14:34. Показов 2844. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Мне нужно в моей программе проигрывать видео, точнее превратить каждый кадр видео в tbitmap для дальнейшей обработки. Если я правильно понимаю, компонент TMediaPlayer проигрывает только avi файлы, а мне нужно и mp4, и mkv и т.д. Пробую разные библиотеки и везде натыкаюсь на грабли:

1) Скачал библиотеку Delphi-FFMPEG-master.zip с этого сайта, пытался запустить пример ffmpeg_sample_player.exe – сначала он требовал библиотеку sdl.dll, я её скачал с этого сайта, запускаю пример снова, он требует уже avutil-56.dll, скачиваю библиотеку ffmpeg с этого сайта, наконец пример запустился. Но все примеры из исходного враппера – консольные, а не vcl приложения, там нет ни одного dfm файла. Без визуальных компонент сложно и долго с этим разбираться.

2) Скачал библиотеку PasLibVlc_3.0.6.zip с этого сайта. Почему-то пример для Delphi XE7 не запускается (требует библиотеку libvlccore которую я не смог к нему подключить), но запускается пример для Delphi 7. Он выводит видео на handle формы:

Delphi
1
libvlc_media_player_set_display_window(p_mi, SELF.Handle);
Я попытался вывести изображение на TImage:

Delphi
1
libvlc_media_player_set_display_window(p_mi, image1.Canvas.Handle);
Изображение не выводится, Image1 остаётся белым. Я не понял, где-нибудь вообще есть документация к PasLibVlc, например хотелось бы узнать что это за параметр p_mi.

3) Нашёл библиотеку с компонентом VLDSVideoPlayer от mitov.com. Поскольку мне нужно иметь доступ к каждому кадру видео в виде tbitmap, я использую метод VLDSVideoPlayer1.Pump. Почему то в таком варианте видео проигрывается медленно и дёргано. Попробовал подключить TTLClockGen как ClockPin для VLDSVideoPlayer1, пробовал разные настройки TTLClockGen – всегда видео проигрывается крайне медленно, и кажется не все кадры. Не исключаю что это баг в библиотеке.
Подскажите что делать, в каком направлении копать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.05.2020, 14:34
Ответы с готовыми решениями:

При нажатии на первую кнопку открывать проигрыватель музыки, а на вторую - проигрыватель видео
Как сделать что бы при нажатии на первую кнопку открывался проигрыватель музыки а на вторую открывался проигрыватель видео. Help.

Файлы разных форматов
В инете нигде не нащел ничего подобного. Очень давно мучает вопрос: Как в своей проге воспроизвести мп3, ави, анимацию, как работать с зип,...

Отрисовка изображений разных форматов
С помощью чего можно отрисовать jpeg,png,gif в окне приложения ? С помощью HBITMAP пробовал - работает только с bmp. Находил в...

8
Модератор
4115 / 2347 / 807
Регистрация: 15.11.2015
Сообщений: 9,329
14.05.2020, 14:46
Цитата Сообщение от Drouge Посмотреть сообщение
libvlc_media_player_set_display_window(p _mi, image1.Canvas.Handle);
Скорее всего, нужно передавать Handle окна, а не DC. А так срабатывает?:
Delphi
1
libvlc_media_player_set_display_window(p_mi, Panel1.Handle);
0
 Аватар для Drouge
3 / 21 / 0
Регистрация: 22.12.2013
Сообщений: 342
Записей в блоге: 1
14.05.2020, 15:17  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
Скорее всего, нужно передавать Handle окна, а не DC. А так срабатывает?:
DelphiВыделить код
1
libvlc_media_player_set_display_window(p _mi, Panel1.Handle);
Да, действительно, это я не сообразил. Но я боюсь что я не разберусь дальше. Как вывести отдельные кадры на tbitmap-ы?
0
Модератор
4115 / 2347 / 807
Регистрация: 15.11.2015
Сообщений: 9,329
14.05.2020, 15:31
Drouge, в данном случае не знаю, но могу подкинуть проект (на C++), который использует ffmpeg для декодирования и получения кадров видео.
0
 Аватар для Drouge
3 / 21 / 0
Регистрация: 22.12.2013
Сообщений: 342
Записей в блоге: 1
15.05.2020, 11:32  [ТС]
AzAtom,
Я в C++ не силён, мне бы Delphi.
0
Модератор
4115 / 2347 / 807
Регистрация: 15.11.2015
Сообщений: 9,329
15.05.2020, 11:36
Drouge, там консольная утилита, используются Pipes и функции WinApi, переделать на delphi нужный кусок будет не сложно, если разбираешься. Я пока ещё не перекинул, руки не дошли.
0
 Аватар для Drouge
3 / 21 / 0
Регистрация: 22.12.2013
Сообщений: 342
Записей в блоге: 1
16.05.2020, 13:23  [ТС]
AzAtom,
Может вы так подскажете, в каком направлении копать. Я скомпилировал этот пример, теперь надо вывести каждый кадр в tbitmap. Мне показалось, что после строки 132 сама картинка хранится в объекте frame.data. Это так? Можно ли напрямую оттуда получить каждый пиксель кадра? Пусть скорость будет довольно медленная, мне это не критично.
0
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,656
Записей в блоге: 21
18.05.2020, 16:01
ну дык же
https://github.com/Laex/Delphi... pframe.dpr

Добавлено через 52 секунды
Цитата Сообщение от Drouge Посмотреть сообщение
каждый пиксель кадра
а пиксели и так там судя по коду
0
Модератор
4115 / 2347 / 807
Регистрация: 15.11.2015
Сообщений: 9,329
18.05.2020, 16:20
Drouge, исходник во вложении.
Эта программа получает из внешней программы (ffmpeg) кадры видео и звук и упаковывает в свой формат. Вычленить получение кадров не сложно.
Вложения
Тип файла: zip tgvzapil.zip (231.2 Кб, 35 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.05.2020, 16:20
Помогаю со студенческими работами здесь

Базы данных разных форматов
Создавал базы данных обычно PARADOX (в DesktopDataBase). Стоит задача использовать Oracle. Как подключить его драйвер? (и где его взять). У...

Перевод разных форматов ценников в цифровые
Добрый день, уважаемые гуру, помогите советом со следующей проблемой. При объединении прайсов имеются ценники разных форматов, например ...

Word. Список страниц разных форматов
Задача следующая: Есть документ со страницами формата А4 и А3 (ориентация страницы не важна). Нужно сформировать список страниц для...

Считывание метаданных о файлах разных форматов
Помогите написать код! Нужно написать программу, которая считывает метаданные о файлах (файлы разных форматов) которые находятся в ...

Встроить поддержку разных форматов в chromium
интересует как и на каких условиях можно встроить поддержку разных форматов например mp3, может знает кто?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru