【问题标题】:Playing a video file from network folder播放网络文件夹中的视频文件
【发布时间】:2015-11-02 11:24:55
【问题描述】:

我正在尝试从我的网络路径播放视频文件

\\alan\movies\kids\alladin.mp4.

我可以在我的 Mac 上查看和浏览目录。

如果我将视频文件添加为项目的一部分,则以下代码可以正常工作

import UIKit
import AVFoundation
import AVKit

class ViewController: AVPlayerViewController {


    @IBOutlet var vwVideoView: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        playVideo()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    private func playVideo() {
        if let path = NSBundle.mainBundle().pathForResource("Alladin", ofType: "mp4") {
            let url = NSURL(fileURLWithPath: path)
            player = AVPlayer(URL: url)
        }
        else {
            print("Oops, something wrong when playing video")
        }
    }
}

我将视频文件从网络文件夹复制到我的本地电影文件夹,如下所示

NSBundle.mainBundle().pathForResource("file://localhost/Users/alan/Movies/test/Alladin", ofType: "mp4")

视频文件仍未播放。这甚至可以从网络播放视频文件吗?

问候, -艾伦-

【问题讨论】:

    标签: ios swift swift2 xcode7 avkit


    【解决方案1】:

    您只能将AVPlayer用于嵌入或本地视频,对于远程视频,在这种情况下是流式视频,您可以使用MPMoviePlayerController并将名为movieSourceType的属性设置为MPMovieSourceTypeStreaming:

    MPMoviePlayerViewController  *mediaPlayerVC = [[MPMoviePlayerViewController alloc] init];
    mediaPlayerVC.moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;
    [mediaPlayerVC.moviePlayer setContentURL:video-url];
    

    或者如果您不想使用媒体播放器,请尝试:

    NSURL *url = [[NSBundle mainBundle] URLForResource:@"Alladin" withExtension:@"mp4"];
    AVAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
    AVPlayerItem *item = [AVPlayerItem playerItemWithAsset:asset];
    AVPlayer *player = [AVPlayer playerWithPlayerItem:item];
    

    【讨论】:

    • 我了解到 MPMoviePlayerViewController 在 iOS 9 中已被弃用。在 AVPlayer 中不应该有相同功能的替代品(播放远程文件)吗?
    • 弃用并不意味着您的应用将停止工作。这意味着 Apple 正在逐步淘汰这些类的使用,并且在未来的某个时候,它们将完全放弃支持。但是,当这些课程不再可用时,Apple 会明确说明。
    • @Danillo。谢谢。但是你有这个代码的快速版本吗?我之前从未做过任何目标 C
    【解决方案2】:

    由于iOS9中不推荐使用MPMoviePlayerViewController,所以,最好使用Apple的推荐。

    - (void)playVidea:(UIButton *)btn {
        // play local video
        // NSURL *url = [[NSBundle mainBundle] URLForResource:@"Alladin" withExtension:@"mp4"];
    
        // play video from service 
        NSURL *url = [NSURL URLWithString:@"http://119.23.148.104/image/931345031250313216.mp4"];
        AVAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
        AVPlayerItem *item = [AVPlayerItem playerItemWithAsset:asset];
        AVPlayer *player = [AVPlayer playerWithPlayerItem:item];
    
        AVPlayerViewController *playController = [[AVPlayerViewController alloc] init];
        playController.player = player;
        [playController.player play];
        [self presentViewController:playController animated:YES completion:nil];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-21
      • 2012-05-25
      • 2014-06-07
      相关资源
      最近更新 更多