0

QTMovieView我得到了我喜欢的当前时间:

QTTime time = self.movieView.movie.currentTime;

然后把它变成SMPTE形式

NSString *SMPTE_string;
int days, hour, minute, second, frame;
long long result;

result = time.timeValue / time.timeScale; // second
frame = (time.timeValue % time.timeScale) / 100;

second = result % 60;

result = result / 60; // minute
minute = result % 60;

result = result / 60; // hour
hour = result % 24;

days = result;

SMPTE_string = [NSString stringWithFormat:@"%02d:%02d:%02d:%02d", hour, minute, second, frame]; // hh:mm:ss:ff

但我不想让它以帧号结尾。我希望它在几毫秒内结束 (hh:mm:ss.mil)

4

1 回答 1

2

以下应该有效:

double second = (double)time.timeValue / (double)time.timeScale;
int result = second / 60;
second -= 60 * result;
int minute = result % 60;
result = result / 60;
int hour = result % 24;
int days = result / 24;

NSString *SMPTE_string = [NSString stringWithFormat:@"%02d:%02d:%06.3f", hour, minute, second];

秒数被计算为double而不是int然后使用%06.3f格式以毫秒精度打印。

(请注意,days = result您的代码不正确。)

如果您更喜欢整数算术,那么您还可以计算毫秒 QTTime time

long long milli = (1000 * (time.timeValue % time.timeScale)) / time.timeScale;
于 2013-05-04T15:34:05.707 回答