iphone MPMoviePlayerViewController: извлечь общую продолжительность - PullRequest
4 голосов
/ 18 января 2012

как я могу получить общее количество видео до его воспроизведения в MPMoviePlayerViewController?

Ответы [ 4 ]

7 голосов
/ 18 января 2012

Для получения общей продолжительности фильма вы можете использовать:

1).Используйте AVPlayerItem класс и AVFoundation и CoreMedia framework.(Я использовал UIImagePickerController для выбора фильма)

#import <AVFoundation/AVFoundation.h>
#import <AVFoundation/AVAsset.h>

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    selectedVideoUrl = [info objectForKey:UIImagePickerControllerMediaURL];

    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:selectedVideoUrl];

    CMTime duration = playerItem.duration;
    float seconds = CMTimeGetSeconds(duration);
    NSLog(@"duration: %.2f", seconds);
}

2). MPMoviePlayerController имеет свойство duration. Ссылка Apple Doc

3 голосов
/ 29 сентября 2014

Чтобы получить общую длительность в MPMoviePlayerViewController

MPMoviePlayerViewController *mp;
float seconds =mp.moviePlayer.duration;

Примечание. Над кодом приведена общая длительность связанных носителей в секундах

1 голос
/ 18 января 2012

Если вы не хотите получать общее время из свойства duration MPMoviePlayerViewController (поскольку оно вызывает пользовательский интерфейс проигрывателя фильмов), вы можете вместо этого создать объект AVAsset с вашим видеофайломпередается через URL-адрес файла и затем проверяет свойство duration для этого.

Этот трюк будет работать только на iOS 5 (с которой пришел assetWithURL: от AVAsset).

0 голосов
/ 09 марта 2015

Вы можете использовать этот метод в быстрой

func getMediaDuration(url: NSURL!) -> Float64{
        var asset : AVURLAsset = AVURLAsset.assetWithURL(url) as AVURLAsset
        var duration : CMTime = asset.duration

        return CMTimeGetSeconds(duration)
    }
...