gpt4 book ai didi

iphone - ALAssetsLibrary 获取视频路径稍后播放

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:09:28 26 4
gpt4 key购买 nike

使用下面的代码我可以在 tableview 中获取视频文件。但是我无法获取视频的路径,因此我无法保存它并在以后使用它来播放。

    - (void)viewDidLoad {

[super viewDidLoad];
[activity startAnimating];

assets = [[NSMutableArray alloc] init];
library = [[ALAssetsLibrary alloc] init];

UIImage *viewImage;

[library writeImageToSavedPhotosAlbum:[viewImage CGImage] orientation:(ALAssetOrientation)[viewImage imageOrientation] completionBlock:^(NSURL *assetURL, NSError *error){
if (error) {
NSLog(@"error");
} else {
NSLog(@"url %@", assetURL);


}
}];


[library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop){

if (group != NULL) {

[group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop){


if ([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypeVideo]) {
NSLog(@"asset: %@", result);
[assets addObject:result];
}

}];
}

[self.tableview reloadData];
[self.activity stopAnimating];
[self.activity setHidden:YES];

}
failureBlock:^(NSError *error){

NSLog(@"failure"); }];

}


// Customize the number of sections in the table view.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}

// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [assets count];
}

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

ALAsset *asset = [assets objectAtIndex:indexPath.row];
[cell.imageView setImage:[UIImage imageWithCGImage:[asset thumbnail]]];
[cell.textLabel setText:[NSString stringWithFormat:@"Video %d", indexPath.row+1]];

return cell;
}

这是我的输出:

2012-07-19 12:37:42.135 mptest[17310:707] asset: ALAsset - Type:Video, URLs:{
"com.apple.quicktime-movie" = "assets-library://asset/asset.MOV?id=336068EA-C1B1-481C-82DA-F2419561A91A&ext=MOV";
}
2012-07-19 12:37:42.147 mptest[17310:707] asset: ALAsset - Type:Video, URLs:{
"com.apple.quicktime-movie" = "assets-library://asset/asset.MOV?id=A1CBDDE4-4BC1-48F2-84E0-028D7B7F4879&ext=MOV";
}
2012-07-19 12:37:42.156 mptest[17310:707] asset: ALAsset - Type:Video, URLs:{
"com.apple.quicktime-movie" = "assets-library://asset/asset.MOV?id=3D76ABC7-515C-42E7-A940-B149C78FBAB6&ext=MOV";
}
2012-07-19 12:37:42.262 mptest[17310:707] error

谁能帮我解决这个问题?

最佳答案

由于沙盒,您无法从 AssetsLibrary 获取实际文件路径。但是,您可以通过多种方式访问​​/播放视频文件。

1) 使用ALAssetRepresentationurl 方法查询 Assets 的URL,并将其传递给MPMoviePlayerController 实例以播放视频。此 url 以 assets-library://开头,不是文件系统 url,但 MPMoviePlayerController 知道如何处理此类 URL。

2)使用ALAssetsRepresentationgetBytes:fromOffset:length:error:获取视频内容,将视频保存到自己的应用沙箱中播放/编辑/分享它或使用 getBytes:fromOffset:length:error: 流式传输视频内容。

关于iphone - ALAssetsLibrary 获取视频路径稍后播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11556100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com