【问题标题】:How to download video from url save it in directory and play using MPMovie player in ios如何从 url 下载视频将其保存在目录中并在 ios 中使用 MPMovie 播放器播放
【发布时间】:2016-07-18 14:40:39
【问题描述】:

我尝试下载,但下载的视频显示不支持,请帮助感谢您的帮助。

这是我的代码:

从url代码下载视频

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    NSLog(@"Downloading Started");
    NSString *urlToDownload = @"http://cdn-fms.rbs.com.br/vod/hls_sample1_manifest.m3u8";
    NSURL  *url = [NSURL URLWithString:urlToDownload];
    NSData *urlData = [NSData dataWithContentsOfURL:url];
    if ( urlData )
    {

        NSLog(@"urldata %@   ",urlData);
        NSArray   *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString  *documentsDirectory = [paths objectAtIndex:0];

        NSString  *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"thefifle2.mov"];

        //saving is done on main thread
        dispatch_async(dispatch_get_main_queue(), ^{
            [urlData writeToFile:filePath atomically:YES];
            NSLog(@"File Saved !%@",filePath);
             _url = [NSURL URLWithString:filePath];
            [self playv];

        });
    }

});

使用 MPMoviepLayercontroller 播放下载的视频

    NSURL *vedioURL;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSArray *filePathsArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:documentsDirectory  error:nil];
NSLog(@"files array %@", filePathsArray);

NSString *fullpath;

for (NSString *apath in filePathsArray )
{
     fullpath = [documentsDirectory stringByAppendingPathComponent:apath];
    vedioURL =[NSURL fileURLWithPath:fullpath];

}

 NSData *urlData1 = [NSData dataWithContentsOfURL:vedioURL];
 NSLog(@" url data1 %@  ",urlData1);
NSLog(@"vurl %@",vedioURL);
MPMoviePlayerViewController *videoPlayerView = [[MPMoviePlayerViewController alloc] initWithContentURL:vedioURL];
[self presentMoviePlayerViewControllerAnimated:videoPlayerView];
[videoPlayerView.moviePlayer play];

【问题讨论】:

标签: ios objective-c


【解决方案1】:

我尝试了一些对我有用的 mp4 示例

//download the file in a seperate thread.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    NSLog(@"Downloading Started");
    NSString *urlToDownload = @"http://techslides.com/demos/sample-videos/small.mp4";
    NSURL  *url = [NSURL URLWithString:urlToDownload];
    NSData *urlData = [NSData dataWithContentsOfURL:url];
    if ( urlData )
    {

        NSLog(@"urldata %@   ",urlData);
        NSArray   *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString  *documentsDirectory = [paths objectAtIndex:0];

        NSString  *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"demo2.mp4"];

        //saving is done on main thread
        dispatch_async(dispatch_get_main_queue(), ^{
            [urlData writeToFile:filePath atomically:YES];
            NSLog(@"File Saved !%@",filePath);
             _url = [NSURL URLWithString:filePath];


        });
    }

});

【讨论】:

  • 那是我的意思,原始网址不是资产文件。 m3u8 文件本质上是一个 xml 文件,因此您试图播放类似于 xml 文件的东西。
  • 谢谢你帮我分配。
【解决方案2】:

您确实意识到您的网址实际上并未指向“视频”文件?

.m3u8 文件不是实际的资产文件,而是更类似于播放列表。它们用于 HTTP 实时流式传输,并根据可用带宽为“分段”提供位置

【讨论】:

  • 谢谢你 MDB983。你能发送 url 下载视频文件吗?我必须以哪种格式存储这些视频
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-10
  • 2019-02-22
  • 1970-01-01
  • 2016-07-27
  • 1970-01-01
  • 2015-01-31
  • 2014-09-23
相关资源
最近更新 更多