Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 09.11.2017, 10:02   #1
NitroSki
Давно не
Форумчанин
 
Аватар для NitroSki
 
Регистрация: 19.05.2011
Адрес: В параллельной вселенной
Сообщений: 58
Репутация: 10
Восклицание Продолжительность 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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


13:32.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru