Delphi XE2: firemonkey проигрывает видео с помощью libvlc? - PullRequest
0 голосов
/ 18 ноября 2011

Я все еще пытаюсь воспроизвести видео на firemonkey, используя DirectX API с libvlc!Я уже воспроизводил видео, используя другой способ, но я хочу воспроизводить видео на DirectX Surface.

, пожалуйста, сначала посмотрел эту ссылку: http://forum.videolan.org/viewtopic.php?f=32&t=82618

кто-то пишет код Delphi о том, как использовать libvlcна DirectX и этот код работает хорошо, но этот код чистый код DirectX.Я хочу интегрировать этот код в firemonkey!Как я могу сделать это с библиотекой FireMonkey (я знаю, что для Windows FireMonkey также используется библиотека DirectX, но библиотеки FireMonkey (интерфейсы, классы, объекты) именуют и используют настолько разные, чем DirectX!

Где я сейчас нахожусь:

Я почти интегрировал этот чистый код Directx в firemonkey, используя библиотеки "Winapi.Direct3D9, Winapi.D3DX9, FMX.Context.DX9"

Я могу получить доступ к объекту IDirect3DDevice9 в контексте firemonkey!

var
   Device: IDirect3DDevice9;
begin
   Device := TCustomDirectXContext(TCustomForm3D(ParentForm).Context).Device;
   Device.CreateTexture(video_width, video_height, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, vlcVideoTexture, nil);
   Device.CreateTexture(video_width, video_height, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, vlcMemoryTexture, nil);
end;

Этот код в здесь полностью работает в firemonkey, но вы увидите, что результирующим объектом этого типа кода является IDirect3DTexture9, этот объект содержит кадровый буфер видео, мне просто нужно визуализировать этот объект нанекоторый контроль в форме firemonkey.

Как я могу нарисовать этот буфер на холсте firemonkey?

Я жду хороших решений для разработчиков Delphi.

Спасибо

1 Ответ

0 голосов
/ 13 января 2012

Я не думаю, что попытка Direct3D с LibVlc возможна, поскольку дескриптор libvlc для любого окна для воспроизведения видео, воспроизведение в любой форме в порядке, поскольку они имеют действительный дескриптор.

...