我正在使用MPMoviePlayerController播放iOS 3.1.2的直播m3u8视频。它打开全屏风景,很好。但是,通常在播放10-20秒后,屏幕会自行调整大小。屏幕保持其宽度,但会缩小高度,从而产生狭窄,拉伸的图像。但是,在播放预先录制的mp4视频时,我没有这个问题。
知道发生了什么以及如何解决它?
这是我的代码:
MyViewController.h:
#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>
@interface WatchNowViewController : UIViewController {
MPMoviePlayerController *mMPPlayer;
}
@property (nonatomic, retain) MPMoviePlayerController *mMPPlayer;
@end
MyViewController.m:
mMPPlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://www.mysite.com/myVideo.m3u8"]];
mMPPlayer.scalingMode=MPMovieScalingModeFill;
mMPPlayer.backgroundColor=[UIColor blackColor];
[mMPPlayer play];
答案 0 :(得分:2)
MPMovieScalingModeFill不保留宽高比。如果要保留纵横比,则应使用MPMovieScalingModeAspectFit或MPMovieScalingModeAspectFill。
查看MPMovieScalingMode documentation以获取有关所有模式的信息。
答案 1 :(得分:2)
mpeg-ts流的标头中有一个宽高比字段。如果存在,MPMoviePlayerController将拉伸视频,无论报告的宽度和高度如何。不正确的值会导致视频失真。我不确定为什么这只会在20秒内进入流中,但MPMoviePlayerController是一个上帝可怕的类(特别是在iOS 4.0之前),所以谁可以告诉...如果你用FFmpeg创建mpeg-ts流,你可以使用-aspect%f来设置宽高比。