Ios MPMoviePlayer在查找文件时播放音频而不是视频
我试图在某一点上搜索视频文件。假设视频有5分钟长,我以110秒的速度跳进去 当我从一开始播放时,一切都播放得很好,然而,当我尝试查找文件时,我可以听到音频,但看不到视频。我最初认为这可能与我加载子视图的顺序有关,但我仍然可以看到(并使用)播放器的控件。滑回0:00开始播放视频 下面是我的视频课的代码。initIntoView方法接受一个Ios MPMoviePlayer在查找文件时播放音频而不是视频,ios,objective-c,cocoa-touch,mpmovieplayercontroller,Ios,Objective C,Cocoa Touch,Mpmovieplayercontroller,我试图在某一点上搜索视频文件。假设视频有5分钟长,我以110秒的速度跳进去 当我从一开始播放时,一切都播放得很好,然而,当我尝试查找文件时,我可以听到音频,但看不到视频。我最初认为这可能与我加载子视图的顺序有关,但我仍然可以看到(并使用)播放器的控件。滑回0:00开始播放视频 下面是我的视频课的代码。initIntoView方法接受一个UIView,然后返回一个修改后的副本,然后将其写入主视图。事先为混乱的代码感到抱歉。我对Objective-C还很陌生 初始化视频视图 - (WWFVideo*
UIView
,然后返回一个修改后的副本,然后将其写入主视图。事先为混乱的代码感到抱歉。我对Objective-C还很陌生
初始化视频视图
- (WWFVideo*) initIntoView: (UIView*) view withContent:(NSDictionary*)contentDict{
self=[super init];
viewRef=view;
contentData = contentDict;
NSURL *videoUrl = [[NSURL alloc]initWithString:[contentDict objectForKey:@"cnloc"]]; //Returns a HTTP link to my video file (MP4, H.246, AAC Audio)
videoController = [[MPMoviePlayerController alloc] init];
videoController.movieSourceType = MPMovieSourceTypeFile;
[videoController setContentURL:videoUrl];
videoController.view.frame = viewRef.bounds;
[videoController.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
[viewRef addSubview:videoController.view];
return self;
}
开始播放视频
-(void)play:(int)offset { //Offset is "110"
[videoController setInitialPlaybackTime:offset];
[videoController play];
}
在视频开始播放之前和之后,我都尝试将videoController添加到viewRef
,但结果相同
我还尝试过使用mpmovieplayervewcontroller
,但没有成功
我尝试的另一件事是将流类型更改为MPMovieSourceTypeStreaming
,但似乎没有效果
如果我错过了任何更重要的代码,只要问一下,我会看看我能做些什么
编辑:代码4.6.3
iOS 6
在iPad 2上测试
编辑#2:
在模拟器上工作得很好,只是在设备上没有。在尝试拼凑一个示例应用程序上传到这里后,我发现这个应用程序工作得很好。这表明这是一个编码问题,而不是一个客观的C问题 我已经用
baseline
配置文件用以下命令重新编码了以前试图播放的同一个文件:
ffmpeg-i{filename}-acodec aac-ac 2-严格的实验性-ab 160k-s{ssize}-vcodec libx264-预设慢速配置:v基线-级别30-最大速率10000000-bufsize 10000000-b 1200k-f mp4-线程0{filename}.ipad.mp4
我在网上找到了这个密码
主要针对需要额外数据丢失稳健性的低成本应用程序,此配置文件用于某些视频会议和移动应用程序。此配置文件包括受约束基线配置文件中支持的所有功能,以及可用于丢失鲁棒性(或用于低延迟多点视频流合成等其他目的)的三个附加功能。自2009年定义受约束的基线配置文件以来,该配置文件的重要性有所减弱。所有受约束的基线配置文件比特流也被视为基线配置文件比特流,因为这两个配置文件共享相同的配置文件标识符代码值
我意识到这可能对这里寻求Objective-C帮助的任何人都没有帮助,但如果这能让我今天花了5个小时的时间来完成这项工作,那么这将是值得的。这可能会加快过渡,在比赛前添加以下内容。[视频控制器准备播放];