Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios MPMoviePlayer在查找文件时播放音频而不是视频_Ios_Objective C_Cocoa Touch_Mpmovieplayercontroller - Fatal编程技术网

Ios MPMoviePlayer在查找文件时播放音频而不是视频

Ios MPMoviePlayer在查找文件时播放音频而不是视频,ios,objective-c,cocoa-touch,mpmovieplayercontroller,Ios,Objective C,Cocoa Touch,Mpmovieplayercontroller,我试图在某一点上搜索视频文件。假设视频有5分钟长,我以110秒的速度跳进去 当我从一开始播放时,一切都播放得很好,然而,当我尝试查找文件时,我可以听到音频,但看不到视频。我最初认为这可能与我加载子视图的顺序有关,但我仍然可以看到(并使用)播放器的控件。滑回0:00开始播放视频 下面是我的视频课的代码。initIntoView方法接受一个UIView,然后返回一个修改后的副本,然后将其写入主视图。事先为混乱的代码感到抱歉。我对Objective-C还很陌生 初始化视频视图 - (WWFVideo*

我试图在某一点上搜索视频文件。假设视频有5分钟长,我以110秒的速度跳进去

当我从一开始播放时,一切都播放得很好,然而,当我尝试查找文件时,我可以听到音频,但看不到视频。我最初认为这可能与我加载子视图的顺序有关,但我仍然可以看到(并使用)播放器的控件。滑回0:00开始播放视频

下面是我的视频课的代码。initIntoView方法接受一个
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个小时的时间来完成这项工作,那么这将是值得的。

这可能会加快过渡,在比赛前添加以下内容。[视频控制器准备播放];