Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2017, 09:02   #1
NitroSki
Давно не
Пользователь
 
Аватар для NitroSki
 
Регистрация: 19.05.2011
Сообщений: 58
Восклицание Продолжительность MP4

Доброе утро, камрадам.

Если у кого-нибудь есть какие-либо мысли, то, будьте добры, подскажите, пожалуйста.

Необходимо каким-то образом узнавать длину (продолжительность) файла MP4. Файлы записаны с использованием различных кодеков.

В танцах с бубнами были использованы следующие конструкции.

Была использована функция считывания Header
из файла и вычисления длительности по формуле общее количество фреймов / кол-во микросекунд на один фрейм.

Использование данной функции не подошло т.к. применима она только для одного типа кодека.

Код:
MediaInfo.Read(Avi, SizeOf(TAviHeader));
    AviLength := Trunc(Avi.MediaFrameCount/(1000000/Avi.MicroSecPerFrame));
    H := AviLength div 3600;
    M := (AviLength - H * 3600) div 60;
    S := AviLength mod 60;

    HMS := Format('%d:%d:%d',[H,M,S]);
    Result:=Trunc(AviLength);
Далее.

В интернете много решений подобного вопроса через TMediaPlayer. Проблема в том, что стоковый медиаплеер работает не со всеми кодеками. В результате чего часто ругается фразой - "Не удаётся определить тип устройства по указанному расширению файла"

Код:
MediaPlayer1.FileName := mediafiles.Items[i];
   MediaPlayer1.Open;
   MediaPlayer1.TimeFormat := tfMilliseconds;
   ShowMessage( 'Время в милисекундах = ' + IntToStr( MediaPlayer1.Length ) );

Пробовал сделать через Windows Media Player.
Проблема в том, что прежде чем показать продолжительность видео, плеер открывает видео. К тому же, wmp.currentMedia.duration срабатывает раньше, чем плеер подгрузит ролик и выводит 0 сек.

Код:
wmp.URL:=mediafiles.Items[0];
wmp.controls.play;
wmp.currentMedia.duration;
showmessage(floattostr(wmp.currentMedia.duration));
Пока думаю копать решение вопроса в сторону свойств медиа файла. На вкладке подробнее отображается продолжительность. Но вот, к сожалению, не знаю как это реализовать.

Огромная просьба, подскажите, пожалуйста, как реализовать.
NitroSki вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
продолжительность жизни зависит от знака зодиака Hallo Свободное общение 27 28.02.2014 15:34
Имеется N аудиокассет. Вывести: название, жанр и продолжительность Soldszar Паскаль, Turbo Pascal, PascalABC.NET 4 29.06.2012 15:21
Узнать продолжительность mp3 файла ramzes777 Мультимедиа в Delphi 5 24.10.2011 21:29
Длительность (продолжительность) видео-файла и Access Рысь Комнатная Microsoft Office Access 10 30.10.2009 17:15