как воспроизвести локальный видео файл? - PullRequest
14 голосов
/ 21 марта 2012

Я создал видеофайл .mov с помощью программного обеспечения для захвата экрана (рабочего стола) и хочу, чтобы это видео воспроизводилось в моем приложении в UIWebview.Есть ли способ воспроизвести это видео или любой другой способ, чтобы я мог создать URL для своего локального видео ???

Сейчас я использую ссылку на видео по умолчанию для воспроизведения видео в UIWebview.

Вот код:

- (void)applicationDidBecomeActive:(UIApplication *)application 
{

    self.viewVideoDisplay.frame = CGRectMake(0, 0, 1024, 1024);
    [self.window addSubview:self.viewVideoDisplay];
    [self.window bringSubviewToFront:self.viewVideoDisplay];
    NSString *urlAddress = @"https://response.questback.com/pricewaterhousecoopersas/zit1rutygm/";
    //Create a URL object.
    NSURL *url = [NSURL URLWithString:urlAddress];            
    //URL Requst Object
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];            
    //Load the request in the UIWebView.
    [self.webViewVideo loadRequest:requestObj];

    IsLoadingSelf = YES;
}

но у меня нет URL видео, которое я хочу воспроизвести ..

Пожалуйста, помогите !!

Ответы [ 3 ]

65 голосов
/ 21 марта 2012

РЕДАКТИРОВАТЬ: MPMoviePlayerController устарела сейчас.Поэтому я использовал AVPlayerViewController.и написал следующий код:

    NSURL *videoURL = [NSURL fileURLWithPath:filePath];
//filePath may be from the Bundle or from the Saved file Directory, it is just the path for the video
    AVPlayer *player = [AVPlayer playerWithURL:videoURL];
    AVPlayerViewController *playerViewController = [AVPlayerViewController new];
    playerViewController.player = player;
    //[playerViewController.player play];//Used to Play On start
    [self presentViewController:playerViewController animated:YES completion:nil];

Пожалуйста, не забудьте импортировать следующие рамки:

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

Вы можете использовать MPMoviePlayerController для воспроизведения локального файла.

1. Добавьте Mediaplayer framework и выполните #import <MediaPlayer/MediaPlayer.h> в вашем viewController.

2. Перетащите ваш видеофайл, который вы создали на рабочем столе, в xcode.

3. Получить путь к локальному видео.

NSString*thePath=[[NSBundle mainBundle] pathForResource:@"yourVideo" ofType:@"MOV"];
NSURL*theurl=[NSURL fileURLWithPath:thePath];

4. Инициализировать moviePlayer с вашим путем.

self.moviePlayer=[[MPMoviePlayerController alloc] initWithContentURL:theurl];
[self.moviePlayer.view setFrame:CGRectMake(40, 197, 240, 160)];
[self.moviePlayer prepareToPlay];
[self.moviePlayer setShouldAutoplay:NO]; // And other options you can look through the documentation.
[self.view addSubview:self.moviePlayer.view];

5. Для управления тем, что должно быть сделано после воспроизведения:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playBackFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer]; 
//playBackFinished will be your own method.

EDIT 2 : для обработки завершения для AVPlayerViewController вместоMPMoviePlayerController, используйте следующее ...

AVPlayerItem *playerItem = player.currentItem;

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playBackFinished:) name:AVPlayerItemDidPlayToEndTimeNotification object:playerItem];

В этом примере я отклоняю AVPlayerViewController после завершения:

-(void)playBackFinished:(NSNotification *) notification {
    // Will be called when AVPlayer finishes playing playerItem

    [playerViewController dismissViewControllerAnimated:false completion:nil];
}
5 голосов
/ 21 марта 2012

Просто замените ваш URL кодом ниже

NSString *filepath   =   [[NSBundle mainBundle] pathForResource:@"videoFileName" ofType:@"m4v"];  

NSURL *fileURL    =   [NSURL fileURLWithPath:filepath];  
0 голосов
/ 15 февраля 2016

Вышеупомянутые решения, объясняющие, как воспроизводить видео, которое присутствует в Xcode, используя NSBundle.Мой ответ будет полезен тем, кто ищет динамически выбирать видео с устройства и воспроизводить.

class ViewController: UIViewController,UIImagePickerControllerDelegate, UINavigationControllerDelegate

import AVFoundation
import AVKit
import MobileCoreServices 

(Не забудьте добавить MobileCoreServicesFramework на этапах сборки)

Установить свойства для видео.например,

@IBAction func buttonClick(sender: AnyObject)
{
    imagePicker.delegate = self
    imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
    imagePicker.mediaTypes = [kUTTypeMovie as String]
    imagePicker.allowsEditing = true
    self.presentViewController(imagePicker, animated: true,
        completion: nil)
}

Затем реализуйте функцию UIImagePickerControllerDelegate

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])
    {
        var filename = ""
        let mediaType = info[UIImagePickerControllerMediaType] as! NSString
        if mediaType.isEqualToString(kUTTypeMovie as String)
        {
            let url = info[UIImagePickerControllerMediaURL] as! NSURL
            filename = url.pathComponents!.last!
        }
        self.dismissViewControllerAnimated(true, completion: nil)
        self.playVideo(filename)
    }

и, используя указанное выше имя файла, вы можете воспроизвести видео:)

    func playVideo(fileName : String)
    {
        let filePath = NSURL(fileURLWithPath: NSTemporaryDirectory()).URLByAppendingPathComponent(fileName)
        let player = AVPlayer(URL: filePath)
        let playerViewController = AVPlayerViewController()
        playerViewController.player = player
        self.presentViewController(playerViewController, animated: true)
        {
            player.play()
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...