搜索文件时 MPMoviePlayer 播放音频但不播放视频
Posted
技术标签:
【中文标题】搜索文件时 MPMoviePlayer 播放音频但不播放视频【英文标题】:MPMoviePlayer playing audio but not video when seeking into a file 【发布时间】:2013-09-03 13:32:44 【问题描述】:我正在尝试在某个时间点查找视频文件。假设视频时长 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: 在模拟器上完美运行,而不是在设备上。
【问题讨论】:
在播放前添加以下行可能会加快转换速度。 [videoController prepareToPlay]; 【参考方案1】:在尝试拼凑一个示例应用程序以上传到此处后,我发现w3 version of Big Buck Bunny 工作正常。这表明这是一个编码问题,而不是一个客观的 C 问题。
我已经使用以下命令重新编码了我之前尝试播放但现在使用 baseline
配置文件的同一文件:
ffmpeg -i filename -acodec aac -ac 2 -strict experimental -ab 160k -s ssize -vcodec libx264 -preset slow -profile:v baseline -level 30 -maxrate 10000000 -bufsize 10000000 -b 1200k - f mp4 -threads 0 文件名.ipad.mp4
我在here 到this Stack Overflow post 上找到了此代码。
主要针对需要额外数据丢失稳健性的低成本应用程序,此配置文件用于某些视频会议和移动应用程序。此配置文件包括受约束的基线配置文件中支持的所有功能,以及可用于损失鲁棒性(或用于其他目的,例如低延迟多点视频流合成)的三个附加功能。自 2009 年约束基线配置文件定义以来,此配置文件的重要性已有所减弱。所有约束基线配置文件比特流也被视为基线配置文件比特流,因为这两个配置文件共享相同的配置文件标识符代码值。
-From Wikipedia
我意识到这可能对这里寻求 Objective-C 帮助的任何人都没有帮助,但如果它只为我节省了我今天花费 5 个小时试图让它工作的人,那么这将是值得的。
【讨论】:
以上是关于搜索文件时 MPMoviePlayer 播放音频但不播放视频的主要内容,如果未能解决你的问题,请参考以下文章
帮我选择合适的 iPhone 音频类 - MPMoviePlayer vs AVAudioPlayer vs MPMusicPlayer