Вверх ↑
Этот топик читают: Гость
Ответов: 2237
Рейтинг: 676
#1: 2015-06-27 01:36:19 ЛС | профиль | цитата
Взял MediaPlayerEx из этой темы Media.pas и приукрасил (что добавил, что удалил).
Основа это компонент MediaPlayer в который еще до меня были добавлены некоторые методы и свойства. Так же внесены изменения и в файл Media.pas от которого зависит как MediaPlayerEx так и MediaPlayer (последний вроде не пострадал).
Не вдаваясь в подробности кто что менял, опишу что есть:

1. Добавилось событие doOpen и только оно открывает файл, а не как раньше doPlay. Но так же добавлено свойство AutoPlay (True/False) которое позволяет после открытия сразу начать воспроизведение.
2. Теперь не придется "таскать" с собой таймер чтоб отслеживать позицию проигрывания. Еще с давних времен в MediaPlayer имеется свой таймер который отслеживает onEndPlay (окончание проигрывание), пришлось научить этого лентяя выдавать и onPosition (позицию проигрывания). Выведено свойство Interval.
3. Добавились свойства StartPos и FinishPos определяющие начало и конец проигрывания. Можно проигрывать не весь файл, а только нужную чать.
4. Возможность изменения скорости проигрывания (как быстрей, так и медленнее).
5. Установка громкости.
6. Свойством Channels можно включитьотключить левый или правый канал.
7. Появилась возможность не только масштабировать видео (по центру, на весь экран), но и задать свой размер проигрывания видео (doSetDisplayRect). В простом примере Test02.pas (см. архив) на одном окне одновременно проигрывается 6 видео. В теории можно вывести видео на любое окно в нужной позиции.
8. Добавлено получение частоты кадров видео файла (FrameRate).
Окно с 6 видео
Прочие мелочи.
Вроде все работает, но тестировать нужно.

Скачать архив (обновлен 28.06.2020) с компонентом и примерами
(один пример тестирует все возможное, второй пример описан в пункте 7)

Если нет предыдущего MediaPlayerEx, то устанавливаем (ini файл перетащить на рабочее поле HiAsm) и в папку HiAsm (Elements\delphi\code) копируем Media.pas.

История

2020-06-28
-Исправлена ошибка отображения при изменении позиции, если при загрузке файла не было установлено свойство AutoPlay = True.
-При остановке (doStop) устанавливается в стартовую позицию.
-При Replay = True начинает проигрывать без необходимости отлавливания события onEndPlay.
2017-06-27
-Исправлена ошибка изменения свойства Interval.
-Изменена процедура получения данных FrameRate.
2017-02-24
-Добавлено получение частоты кадров FrameRate.
2015-06-27
-Выложен компонент.

Редактировалось 13 раз(а), последний 2020-06-28 18:36:05
карма: 11

9
файлы: 1mp_test02.png [203.8KB] [3127]
Голосовали:Shonyi, MAV, wasya, miver, ogrif, Konst, 3042, andrestudio, Alex_Kir
Ответов: 8923
Рейтинг: 823
#2: 2015-06-27 10:49:33 ЛС | профиль | цитата
sla8a, ну теперь плееры посыпятся, как из рога изобилия, да такие что MS и не снились
Молодец!
карма: 19

0
Ответов: 2237
Рейтинг: 676
#3: 2015-06-27 13:42:39 ЛС | профиль | цитата
Леонид, сарказм это хорошо.
Кстати интересное наблюдение: в примере идущем к компоненту MediaPlayer на 11 элементов 3 таймера (два Timer и один в самом MediaPlayer). В соседней ветке в схеме из 819 компонентов всего 154 таймеров. Пример MediaPlayer лидирует.
карма: 11

0
Ответов: 8923
Рейтинг: 823
#4: 2015-06-27 13:58:13 ЛС | профиль | цитата
sla8a, никакого сарказма, сам скачал, опробовал, удивился, правда шести фильмов не нашлось, но сколько есть играли
БольшеНет.jpg
карма: 19

0
файлы: 1БольшеНет.jpg [77.9KB] [2524]
Ответов: 2237
Рейтинг: 676
#5: 2015-06-27 15:53:43 ЛС | профиль | цитата
Для тех кто любит посмотреть фильмы не отрываясь от схемастроения есть возможность просмотра медиа-файлов прямо на рабочем поле HiAsm.
code_35923.txt

карма: 11

0
файлы: 1code_35923.txt [1.3KB] [1266]
Ответов: 1304
Рейтинг: 405
#6: 2015-06-27 17:07:48 ЛС | профиль | цитата
Леонид писал(а):
никакого сарказма, сам скачал, опробовал, удивился, правда шести фильмов не нашлось, но сколько есть играли

Леонид, у меня нашлось на один фильм больше и не один не запустился все упакованны в mkv. Для теста пришлось кусочек фильма перегнать в avi.
карма: 3

0
Ответов: 223
Рейтинг: 24
#7: 2015-06-27 18:04:58 ЛС | профиль | цитата
У меня все нормально- mkv тоже воспроизводит без проблем
карма: 0

0
Ответов: 2237
Рейтинг: 676
#8: 2015-06-27 22:37:13 ЛС | профиль | цитата
MAV писал(а):
и не один не запустился все упакованны в mkv
MAV, а onError ничего не говорил по этому поводу?
карма: 11

0
Ответов: 204
Рейтинг: 2
#9: 2015-06-29 14:55:56 ЛС | профиль | цитата
Очень хороший компонент для локального плеера, жаль что он с потоком не дружит.

Для сравнения запустил видео-поток в стандартном DirectShow и в MediaPlayerEx:



А в остальном компонент очень понравился! Прибрал в коллекцию!

code_35928.txt
карма: 1

0
файлы: 1code_35928.txt [1.5KB] [1198]
Ответов: 1304
Рейтинг: 405
#10: 2015-06-29 16:08:43 ЛС | профиль | цитата
sla8a писал(а):
MAV, а onError ничего не говорил по этому поводу?

sla8a, говорит что ошибка инициализации MCI(примерно так по памяти), а попробовал на рабочем компе так всё mkv запускаются. На рабочем компе SAM CoDeC Pack 5.7(LAV-видео декодер), дома K-Lite Codec Pack 9.хх(FFdshow-видео декодер).
карма: 3

0
Ответов: 1926
Рейтинг: 172
#11: 2015-06-29 21:06:04 ЛС | профиль | цитата
Наконец-то руки дошли у кого-то улучшить! А то я находил возможности улучшения, да так и не довёл дело до конца. Спасибо, sla8a!
------------ Дoбавленo в 21.06:
sla8a писал(а):
4. Возможность изменения скорости проигрывания (как быстрей, так и медленнее).


Только для видео, да?
Media.pas писал(а):
property DGV_Speed: Integer read DGVGetSpeed write DGVSetSpeed;
{* Returns speed of digital video as a ratio between the nominal frame
rate and the desired frame rate where the nominal frame rate is designated
as 1000. Half speed is 500 and double speed is 2000. The allowable speed
range is dependent on the device and possibly the file, too. }

карма: 9
0
Ответов: 2237
Рейтинг: 676
#12: 2015-06-29 22:54:09 ЛС | профиль | цитата
3042 писал(а):
Только для видео, да?
И звук тоже, ну как минимум mp3 и wav точно.
3042 писал(а):
Наконец-то руки дошли у кого-то улучшить
Там еще работы не початый край. Лично мне нужно была установка начальной и конечной позиции для произведения звуковых файлов.
3042, может будет минутку, пробежитесь по коду как MediaPlayerEx.pas так и по Media.pas, может со стороны заметите что "кривое". Со стороны оно всегда лучше видно.
карма: 11

0
Ответов: 1926
Рейтинг: 172
#13: 2015-07-01 19:56:14 ЛС | профиль | цитата
Ничего кривого вроде не заметил, хотя работу компонента не проверял из-за нехватки времени. Вообще, в MCI я не сильно разбираюсь, у меня есть спецификация на него, но глубоко не вникал.
карма: 9
0
Ответов: 2237
Рейтинг: 676
#14: 2015-07-01 20:10:16 ЛС | профиль | цитата
3042 писал(а):
у меня есть спецификация на него
А можно посмотреть?
карма: 11

0
Ответов: 1926
Рейтинг: 172
#15: 2015-07-01 20:46:13 ЛС | профиль | цитата
Строго говоря, это книга, написанная довольно давно, но функции не потеряли актуальность и сейчас (правда, только для звукового адаптера и для C++).
карма: 9
0
файлы: 1mmwin.rar [473.7KB] [1297]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)