相关疑难解决方法(0)

如何在Swift中使用AVPlayerViewController(AVKit)播放视频

如何在Swift中使用AV Kit Player View Controller播放视频?

override func viewDidLoad() {
        super.viewDidLoad()
        let videoURLWithPath = "http://****/5.m3u8"
        let videoURL = NSURL(string: videoURLWithPath)
        playerViewController = AVPlayerViewController()

        dispatch_async(dispatch_get_main_queue()) {
            self.playerViewController?.player = AVPlayer.playerWithURL(videoURL) as AVPlayer
        }
    }
Run Code Online (Sandbox Code Playgroud)

avfoundation ios swift avkit avplayerviewcontroller

154
推荐指数
8
解决办法
18万
查看次数

之后iOS视频流和存储在设备上

到目前为止,我知道如何流式传输视频以及如何下载视频,然后将其流式传输,但这里有点棘手:将其流式传输一次,将其存储在设备上以及将来从设备中播放.

那可能吗?

iphone objective-c video-streaming ios4 ios

28
推荐指数
1
解决办法
8587
查看次数

IOS如何异步下载和缓存用于我的应用程序的图像和视频

我有一个显示图像和视频的iphone应用程序.应用程序结构的方式大多数图像和视频将保持不变,偶尔添加一个.我想对异步下载和缓存图像和视频的最佳和最简单的方法提出意见,以便即使在应用程序退出后它们仍会存在.另外,我只关心IOS 5及更高版本.

这是我到目前为止发现的一些信息,但我仍然不清楚最好的方法是什么,以及缓存是否会持久化.

这篇关于异步图像缓存的文章(旧2009)

这篇关于NSURLCache的文章

SDWebImage(看起来很棒,但仅适用于图像)

AFDownloadRequestOperation

这似乎是一个非常常见的用例,所以我真的在寻找最佳实践和/或示例代码的引用.

video caching asynchronous download ios

15
推荐指数
1
解决办法
2万
查看次数

如何缓存AVPlayerItem(视频)以便在UITableview中重用

我有一些我在UITableView中显示的视频.视频远程存储在服务器上.我可以使用以下一些代码将视频加载到tableview中.

 NSString *urlString = [NSString stringWithFormat:[row objectForKey:@"video_uri"]];
 NSURL* url = [NSURL URLWithString:urlString];
 AVPlayerItem *pItem = [AVPlayerItem playerItemWithURL:url];
 AVPlayer *player = [AVPlayer playerWithPlayerItem:pItem];
Run Code Online (Sandbox Code Playgroud)

每次tableview使单元格出列,然后再次重新排队,再次从网址加载视频.我想知道是否有办法下载和缓存或保存视频,以便可以从手机播放而无需再次连接.我试图绘制由Apple提供的LazyTableImages示例中使用的技术,但我有点卡住了.

video caching uitableview ios avplayer

6
推荐指数
2
解决办法
3565
查看次数

在uitableview单元中播放视频

我正在尝试设置一个可以播放视频的UITableView。许多在此使用MPMoviePlayer(以前做题播放视频到UITableView的在SWIFT播放视频的UITableView播放视频从UITableView的),现在已不建议在iOS版9为数不多的以使用过AVFoundation(什么我使用),是这样的:当UITableViewCell完全可见并且是我从中获取大部分代码的地方时,播放视频。这是我的代码,位于cellForRowAtIndexPath内部:

 VideoCell *videoCell = (VideoCell *)[self.tableView dequeueReusableCellWithIdentifier:@"VideoCell"];

        dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
        NSURL *url = [[NSURL alloc] initWithString:urlString];

        dispatch_async(queue, ^{
        videoCell.item = [AVPlayerItem playerItemWithURL:url];

            dispatch_sync(dispatch_get_main_queue(), ^{
                videoCell.player = [[AVPlayer alloc] initWithPlayerItem:videoCell.item];
                videoCell.player.actionAtItemEnd = AVPlayerActionAtItemEndNone;

                AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:videoCell.player];
                playerLayer.frame = CGRectMake(0, 0, videoCell.contentView.frame.size.width, videoCell.contentView.frame.size.height);
                [videoCell.contentView.layer addSublayer:playerLayer];
                playerLayer.videoGravity = AVLayerVideoGravityResize;
                [videoCell.player play];

            });
        });


        return videoCell;
Run Code Online (Sandbox Code Playgroud)

据我了解,在播放视频之前,我需要异步下载视频。我以前异步下载图像,其中的“下载”部分始终涉及转换NSURL-> NSData-> UIImage。然后,当您拥有UIImage时,就可以在单元格中显示它了,因此可以调出主队列和dispatch_async并执行单元格。在主队列上。

在这里,我有一个NSURL,但是我不太明白这里的哪些步骤应该在主队列中,哪些应该不在主线程中。我尝试了前面提到的SO问题中提出的建议,但到目前为止它没有用。表格单元格刚刚加载,视频从不播放。我只看到第一帧。有时它的前1秒会播放,但随后会缓冲,不会播放。我正在使用一个只有1个对象的表视图,因此只有1个视频要播放,但仍然没有播放。

我在做什么错,有人可以帮助我确切说明哪些部分需要在主线程上,哪些需要关闭?我在顶部提到的线程中的响应者说,“那里有很多教程”,但是在扫描google时我没有看到任何内容。“异步”和“ iOS”这两个词几乎总是会获得有关图片下载而非视频的搜索结果。但是,如果有任何教程,那么很高兴看到它。

谢谢

avfoundation uitableview ios

5
推荐指数
1
解决办法
5117
查看次数