我正试图在某个时候搜索视频文件。可以说视频长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
中,但是结果相同。我也尝试过使用无用的
MPMoviePlayerViewController
。我尝试的另一件事是将流类型更改为
MPMovieSourceTypeStreaming
,但似乎没有任何效果。如果我错过了更重要的代码,请问一下,我会做些什么。
编辑:
Xcode 4.6.3
iOS 6
在iPad 2上测试
编辑#2:
可以在模拟器上完美运行,而不能在设备上运行。
最佳答案
在尝试将示例应用程序组装到此处上传之后,我发现w3 version of Big Buck Bunny可以正常工作。这表明这是一个编码问题,而不是客观的C问题。
我已经使用以下命令使用baseline
配置文件重新编码了我之前尝试播放的文件:
ffmpeg -i {文件名} -acodec aac -ac 2-严格实验-ab 160k -s {ssize} -vcodec libx264-预设慢-profile:v基线-级别30-最大10000000 -bufsize 10000000 -b 1200k -f mp4-线程0 {filename} .ipad.mp4
我在here到this Stack Overflow post上找到了这段代码。
主要针对需要额外数据丢失健壮性的低成本应用程序,此配置文件用于某些视频会议和移动应用程序。此配置文件包括“受约束的基准”配置文件中支持的所有功能,以及可用于损失稳健性(或用于其他目的,例如低延迟多点视频流合成)的三个附加功能。自2009年定义“受约束的基线配置文件”以来,此配置文件的重要性已经有所减弱。所有“受约束的基线配置文件”比特流也被视为“基线配置文件”比特流,因为这两个配置文件共享相同的配置文件标识符代码值。
-From Wikipedia
我意识到这可能对这里寻求Objective-C帮助的人没有帮助,但是,如果我今天花5个小时努力使它仅节省一个人,这将是值得的。