MPMoviePlayerController延伸/扭曲直播视频(m3u8)

时间:2011-04-19 16:16:22

标签: iphone video video-streaming mpmovieplayercontroller m3u

我正在使用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];

2 个答案:

答案 0 :(得分:2)

MPMovieScalingModeFill不保留宽高比。如果要保留纵横比,则应使用MPMovieScalingModeAspectFit或MPMovieScalingModeAspectFill。

查看MPMovieScalingMode documentation以获取有关所有模式的信息。

答案 1 :(得分:2)

mpeg-ts流的标头中有一个宽高比字段。如果存在,MPMoviePlayerController将拉伸视频,无论报告的宽度和高度如何。不正确的值会导致视频失真。我不确定为什么这只会在20秒内进入流中,但MPMoviePlayerController是一个上帝可怕的类(特别是在iOS 4.0之前),所以谁可以告诉...如果你用FFmpeg创建mpeg-ts流,你可以使用-aspect%f来设置宽高比。