Конвертировать время в микросекундах в минуты и секунды - PullRequest
1 голос
/ 24 мая 2011

Приложение для iPhone использует FFMPeg для декодирования / воспроизведения аудиофайла.

Я успешно получаю текущее время в микросекундах из соответствующей функции FFMPeg, но не могу преобразовать его в минуты и секунды (ММ: СС).

Это мой код для отображения NSString, содержащего время; getFFMPEGtime - время в микросекундах:

 self.currentAudioTime = [NSString stringWithFormat: @"%02d:%02d",
                                (int) getFFMPEGtime / (int)1000000,
                                (int) getFFMPEGtime % 1000000];

Кажется, что время в минутах хорошо, но секунды перепутаны. Как правильно преобразовать микросекунды в минуты и секунды?

Ответы [ 3 ]

6 голосов
/ 24 мая 2011

Код:

int microseconds = 59434225;
int seconds = microseconds / 1000000;
NSString * result = [NSString stringWithFormat:@"%02d:%02d",seconds/60,seconds%60];

Выход:

63434225 -> 01:03
59434225 -> 00:59
4 голосов
/ 24 мая 2011

Я бы сказал, что ваше время в секундах, вероятно, правильное, а ваше время в минутах, скорее всего, неправильное.

(int) getFFMPEGtime / (int)1000000 дает вам всего секунд

Чтобы получить MM:SS, вам нужно сделать следующее:

self.currentAudioTime = [NSString stringWithFormat: @"%02d:%02d",
                                (int) getFFMPEGtime / (int)60000000,
                                (int) ((getFFMPEGtime % 60000000)/1000000)];
1 голос
/ 24 мая 2011

Это математика, если у вас есть мкс, а у одной минуты есть 60 с, разделите ваше число на 60000000, и у вас есть ваши минуты.

Остальная часть от деления вашего числа на 60e6 указана в мкс, поэтому разделите этона 1e6 для получения секунд.

Пример:

При заданных 123456789 мкс у вас есть:

  1. 123456789 / 60e6 = 2 минуты
  2. ((123456789% 60e6) / 1e6) = 3,45 секунды
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...