powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Дергание ShockwaveFlash при Visible := false
4 сообщений из 4, страница 1 из 1
Дергание ShockwaveFlash при Visible := false
    #39478792
AlexMik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть непонятной проблемы.

Есть 3D-пространство. Имеем телевизор (модель). Необходимо на экран вывести видеофрагмент. Чтобы пользователь подошел, включил и посмотрел.
Написал на ActionScript FLV-плейер. Который играет flv-шку в потоке.
Дальше делаем так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
procedure Init_Player(from:string; w, h:integer; Parent_: TWinControl);
begin
  ShockwaveFlash := TShockwaveFlash.Create(Parent_);
  ShockwaveFlash.Parent := Parent_;
  ShockwaveFlash.Visible := true;
  ShockwaveFlash.Width := w;
  ShockwaveFlash.Height := h;
  ShockwaveFlash.LoadMovie(0, pchar(ExpandFileName('ext_data/dll/Video_engine.swf')));
  ShockwaveFlash.Play;

  swf_image := TBitmap.Create;
  swf_image.Width := w;
  swf_image.Height := h;
end;


Тут все норм. Теперь кидаем Bitmap на текстуру и обновляем с нужной частотой.

Код: pascal
1.
2.
3.
4.
5.
procedure Update_swf_video(Texture:tgltexture);
begin
  ShockwaveFlash.PaintTo(swf_image.Canvas,0,0);
  Texture.Image.Assign(swf_image);
end;


Все работает - видео классно идет, со звуком.
А вот теперь БАГ.
Если в первой процедуре сделаем ShockwaveFlash.Visible := false; (нам же не надо, чтобы кроме телека еще и в окошке шел фильм), то фильм идет, но происходят постоянные дерганья (замедления).
Причем если все строки закомментировать и оставить только ShockwaveFlash , то при Visible := false - все равно рывки.
Есть идеи? Почему все плавно, если не скрывать плейер?
...
Рейтинг: 0 / 0
Дергание ShockwaveFlash при Visible := false
    #39478881
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно он считает что играется в фоновом режиме (шоквейв-то для браузеров изначально был) и выставляет нижайший приоритет для экономии ресурсов?

Почему бы не сделать сразу что-то типа
Код: pascal
1.
ShockwaveFlash := TShockwaveFlash.Create(swf_image);

?
...
Рейтинг: 0 / 0
Дергание ShockwaveFlash при Visible := false
    #39478899
AlexMik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так это же разные типы - TComponent и TBitmap...
...
Рейтинг: 0 / 0
Дергание ShockwaveFlash при Visible := false
    #39479160
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexMikТак это же разные типы - TComponent и TBitmap...
Ну если он обязательно требует TComponent, то есть еще пара мыслей:
1. А что если делать не ShockwaveFlash.Visible := false , а Parent_.Visible := false , всё равно тормозит?
2. Как вариант не скрывать плеер, а прятать его за пределы экрана. Правда надо будет ещё сделать чтобы на него Alt-TAB не переключался.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Дергание ShockwaveFlash при Visible := false
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]