Nano Hash - криптовалюты, майнинг, программирование

Черный экран при попытке воспроизвести фильм из камеры

Я просмотрел дюжину разных постов здесь и в сети. Все еще не могу понять. Я могу воспроизвести фильм локально, который я прикрепил к вспомогательным файлам, но когда я пытаюсь воспроизвести фильм, выбранный из камеры, я получаю черный экран. Итак, я считаю, что проблема в том, чтобы получить URL-адрес от uipicker и воспроизвести его.

Думаю, моя проблема здесь в первых двух строках фильма.

NSURL *videoURL = [NSURL URLWithString:@"public.movie"];
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL: videoURL]; 

Это не дает мне правильный URL-адрес для воспроизведения фильма из средства выбора. Я также пробовал использовать url вместо @ "public.movie".

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize player;

-(IBAction) selectMovie
{

    UIImagePickerController *picker =
    [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.sourceType =
    UIImagePickerControllerSourceTypePhotoLibrary;


    picker.mediaTypes = [[NSArray alloc] initWithObjects:(NSString *)kUTTypeMovie, nil];

    [self presentModalViewController:picker animated:YES];
}

-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{

    //NSString *mediaType = [info valueForKey:UIImagePickerControllerMediaType];
    //[mediaType isEqualToString:@"public.movie"];
    //{
        NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];//used to be*videoURL
    MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];


    [picker dismissModalViewControllerAnimated:YES];
    //[picker release];

}

-(IBAction)playMovie
{

    NSURL *videoURL = [NSURL URLWithString:@"public.movie"];
    MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL: videoURL];
    [moviePlayer prepareToPlay];
    moviePlayer.view.frame = CGRectMake(100, 100, 200, 200);
[self.view addSubview:moviePlayer.view];
    moviePlayer.shouldAutoplay = NO;
    moviePlayer.view.backgroundColor = [UIColor grayColor];

[moviePlayer play];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(moviePlayBackDidFinish:)
                                                 name:MPMoviePlayerPlaybackDidFinishNotification
                                               object:moviePlayer];
    //[player release];

}

-(void) moviePlayBackDidFinish:(NSNotification*)notification
{
    MPMoviePlayerController *moviePlayer = [notification object];

    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:MPMoviePlayerPlaybackDidFinishNotification
                                                  object:moviePlayer];
    [self dismissModalViewControllerAnimated:YES];
    //[player autorelease];
    //[player release];
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    [moviePlayer release];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
    } else {
        return YES;
    }
}


@end

Ответы:


1

проблема здесь

NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];

попробуй это:

videoURL = (NSURL*)[info objectForKey:@"UIImagePickerControllerMediaURL"];

и когда вы вместо этого воспроизводите видео

NSURL *videoURL = [NSURL URLWithString:@"public.movie"];
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL: videoURL];

moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];

и киноплеер должен быть в собственности. Надеюсь, поможет.

31.07.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..