我试图播放从.m3u文件导入的.mp4链接列表,文件保存在应用程序中的本地,它包含10电影标题和链接。
全码
应用传输安全设置新增于info.plist
vController.h**
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
#import <AVKit/AVKit.h>
@interface ViewController : UIViewController {
NSMutableArray *movieTitle;
NSMutableArray *movieURL;
NSMutableArray *tempArray;
NSArray *lines;
}
@property (nonatomic, retain) NSMutableArray *movieTitle;
@property (nonatomic, retain) NSMutableArray *movieURL;
@property (nonatomic, retain) NSMutableArray *tempArray;
@property (nonatomic, retain) NSArray *lines;
vController.m
@synthesize movieURL,movieTitle,tempArray,lines;
- (void)viewDidLoad {
[super viewDidLoad];
movieURL = [[NSMutableArray alloc] init];
movieTitle = [[NSMutableArray alloc] init];
tempArray = [[NSMutableArray alloc] init];
[self addM3UFile];
}
- (void)addM3UFile {
NSString *addPath = [[NSBundle mainBundle] pathForResource:@"Test" ofType:@"m3u8"];
NSString *fileContents1 = [NSString stringWithContentsOfFile:addPath encoding:NSUTF8StringEncoding error:NULL];
lines = [fileContents1 componentsSeparatedByString:@"\n"];
[tempArray addObjectsFromArray:lines];
[self sortM3UFile];
}
- (void)sortM3UFile {
int i;
for (i=0; i<[tempArray count]; i++) {
NSString *tempTitle = [tempArray objectAtIndex:i];
if ([tempTitle containsString:@"://"]) {
[movieURL addObject:tempTitle];
}
if ([tempTitle containsString:@"#EXTINF:-1 ,"]) {
[movieTitle addObject:tempTitle];
}
}
}
播放视频的代码
NSString *url = [movieURL objectAtIndex:9];
NSLog(@"URL: %@", url);
AVPlayer *player = [AVPlayer playerWithURL:[NSURL URLWithString:url]];
AVPlayerViewController *controller = [[AVPlayerViewController alloc] init];
[self presentViewController:controller animated:YES completion:nil];
controller.player = player;
[player play];
只对列表中的最后一个对象有效**
我测试了所有的链接,当我在浏览器中输入它们时,它们都工作正常,我还在日志中打印了每个链接,它们都在那里。
我尝试从NSArray而不是NSMutableArray播放链接,但不起作用。
将链接保存在NSUserDefaults中也不起作用。
当我从.m3u8文件中更改列表顺序时,它只播放最后一个链接,所以现在我确信问题不在链接中。
**有一件事对我有用,那就是当我手动对代码中的链接进行硬编码时。
知道这是怎么回事吗:)
1条答案
按热度按时间8gsdolmq1#
经过深入挖掘,我终于找到了问题所在。
由于某种原因,当添加网址到数组中时,它在每个链接后添加了一个空格,除了最后一个链接,我通过计算字符串长度然后单独记录每个字符来发现问题。
所以我在sortM3UFile中添加了这几行代码,它解决了这个问题
希望能帮到一些人