Модераторы: Snowy, Alexeis, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проиграть видео (mp4, divx, xvid) ?????? С помощью TMediaPlayer 
:(
    Опции темы
Nicholas
  Дата 26.10.2004, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 30.9.2004

Репутация: нет
Всего: 0



Делаю так:

Кидаю на форму MediaPlayer1 и Panel1, в свойствах MediaPlayer1 Display ставлю Panel1, запускаю видео - видно, но некоторые файлы почему-то только звук слышен, хотя Windows Media Player установленный в Windows запускаю все работает????????

Но главное объясните как сделать так, что бы видео при максимизации формы тоже увеличивалось (вместе с фомой)??
У меня форму с панелью можно во весь экран развернуть, но видео остается маленьким если например у него размер 420х240 то так и отображается!
:sample
PM MAIL ICQ   Вверх
deMike
Дата 26.10.2004, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


M.Shinoda
**


Профиль
Группа: Участник
Сообщений: 361
Регистрация: 12.10.2004
Где: Санкт-Петербург

Репутация: нет
Всего: 0



Во 1, у меня тоже проблемы с этим, что нету звука, во 2, Поставить Align на Client и она будет во всё форму всегда! :thumbs-up
PM MAIL WWW   Вверх
Snowy
Дата 27.10.2004, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



1. Воспроизводить через DirectX
2. Воткнуть на форму OLE контейнер в который запихнуть MediaPlayer
PM MAIL   Вверх
Nicholas
Дата 28.10.2004, 03:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 30.9.2004

Репутация: нет
Всего: 0



Цитата

Во 1, у меня тоже проблемы с этим, что нету звука, во 2, Поставить Align на Client и она будет во всё форму всегда!


Со звуком у меня порядок, у меня изображения не идет.

Яж не совсем тупой я ставил свойства и Panel действитель но во всесь экран, но видео свой размер не меняет!!! :stena
PM MAIL ICQ   Вверх
Nicholas
Дата 28.10.2004, 03:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 30.9.2004

Репутация: нет
Всего: 0



Цитата(Snowy @ 27.10.2004, 16:09)

1. Воспроизводить через DirectX
2. Воткнуть на форму OLE контейнер в который запихнуть MediaPlayer


Можно про DirectX пример кода увидеть?

Кстати насчет контейнера: MediaPlayer запихнуть ты имеешь ввиду, ток точ в системе т.е. стандартный с Win идеи, я так пробывал он запускается как обычно, а можно сделать чтобы он в окне моей проги запускался, если да то как ???????? :sample
PM MAIL ICQ   Вверх
Jey_k
Дата 28.10.2004, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


WEB-командир
****


Профиль
Группа: Комодератор
Сообщений: 4149
Регистрация: 16.11.2003
Где: Москва

Репутация: нет
Всего: 61



Вот который раз вижу подобные темы... То мп3 как проиграть то MPEG4, да пофигу этому компоненту что играть, он это все воспроизводит по умолчанию, лишь бы кодеки стояли.
По крайней мере у меня проигрывал все.


--------------------
PM MAIL WWW   Вверх
Nicholas
Дата 30.10.2004, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 30.9.2004

Репутация: нет
Всего: 0



Цитата(Jey_k @ 28.10.2004, 18:32)

По крайней мере у меня проигрывал все.


Ок. Все проигрывается, а каже видео растянуть во весь экран?
:sample
PM MAIL ICQ   Вверх
p0s0l
Дата 30.10.2004, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 16
Всего: 112



Сделай при старте программы и при OnResize у Panel1 такой код:
MediaPlayer1.DisplayRect := Panel1.ClientRect;


--------------------
С уважением, г-н Посол.
PM   Вверх
Nicholas
Дата 1.11.2004, 06:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 30.9.2004

Репутация: нет
Всего: 0



Цитата(p0s0l @ 30.10.2004, 15:25)

Сделай при старте программы и при OnResize у Panel1 такой код:
MediaPlayer1.DisplayRect := Panel1.ClientRect;


Сделал, но у меня теперь появляется новое окно, а в нем уже видео, но кнопка Maximize блокирована.
:qstn
PM MAIL ICQ   Вверх
Nicholas
Дата 1.11.2004, 07:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 30.9.2004

Репутация: нет
Всего: 0



Извеняюсь поторопился!!! Все работает.

Но теперь видео обрезается справа и слева, если не соответствует размерам экрана, как это исправить??
PM MAIL ICQ   Вверх
p0s0l
Дата 1.11.2004, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 16
Всего: 112



Хм... А как ты хочешь ? Чтобы было растянуто ?
Тут же пропорции сохраняются...
Как ты видео будешь глядеть, если оно будет сплющенным ?
Или тебе такое и надо ?


--------------------
С уважением, г-н Посол.
PM   Вверх
Nicholas
Дата 1.11.2004, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 30.9.2004

Репутация: нет
Всего: 0



Цитата(p0s0l @ 1.11.2004, 11:08)

Или тебе такое и надо ?


Такого не надо.

Здесь пропорции-то сохраняются, но видео как бы приблежается и фокусируется на центре картинки.

К примеру у меня разрешение экрана 800*600, а видео 800*240 - обычно в проигрывателях мы видем черные полосы сверху и снизу - изображение пропорционально.

Я это ввиду имею, а в данном случае видео как бы приближено до верхней и нижней грани картинки.
PM MAIL ICQ   Вверх
p0s0l
Дата 1.11.2004, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 16
Всего: 112



Nicholas, хм...
Я у себя посмотрел - дык вообще фильм расстягивается во всю панель. Т.е. никаких чёрных полос, пропорции не сохраняются...
Тут значит надо DisplayRect указывать правильно, сохраняя пропорции.
(т.е. в твоём случае указать такой Rect: (0, 180, 800, 420) )
Для этого нужно знать ширину/высоту фильма... А как это сделать - надо смотреть... Возможно, можно как-то через MCI сделать...




--------------------
С уважением, г-н Посол.
PM   Вверх
Nicholas
Дата 3.11.2004, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 30.9.2004

Репутация: нет
Всего: 0



Цитата(p0s0l @ 1.11.2004, 23:09)

(т.е. в твоём случае указать такой Rect: (0, 180, 800, 420) )


Ширина/ высота известны, знать бы где и как их задать?

:sample кода.
PM MAIL ICQ   Вверх
p0s0l
Дата 3.11.2004, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 16
Всего: 112



Цитата(Nicholas @ 3.11.2004, 08:25)

Ширина/ высота известны, знать бы где и как их задать?
Дык как где ?
В DisplayRect :)

MediaPlayer1.DisplayRect := Rect(х, y, w, h)
где x, y - координаты левого верхнего угла прямоугольника, в который будет выводиться фильм
w, h - ширина и высота прямоугольника

Если высота и ширина фильма тебе известны (ты так сказал), то делай так:
Код

procedure TForm1.Panel1Resize(Sender: TObject);
var
 vid_w, vid_h : integer;
 w, h : integer;
 kf, k : real;
 r : TRect;

begin
 vid_w := 528; // ширина фильма
 vid_h := 384; // высота фильма
 kf := vid_w / vid_h; // соотношение ширины к высоте (фильма)

 w := Panel1.ClientWidth;
 h := Panel1.ClientHeight;
 k := w / h; // соотношение ширины к высоте (панели)

 if kf >= k then // если пропорционально фильм шире панели
   h := Round( w/kf )
 else
   w := Round( h*kf );

 r := Rect((Panel1.ClientWidth-w) div 2, (Panel1.ClientHeight-h) div 2, w, h);
 MediaPlayer1.DisplayRect := r;
end;




--------------------
С уважением, г-н Посол.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0564 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.