2011-04-19 3 views
1

MPMoviePlayerController를 사용하여 iOS 3.1.2 용 라이브 스트리밍 m3u8 비디오를 재생하고 있습니다. 전체 화면으로 열리 며 괜찮습니다. 그러나 일반적으로 10-20 초 동안 재생 한 후 화면이 자체적으로 크기가 조정됩니다. 화면의 너비가 유지되지만 높이가 줄어들어 좁고 펼쳐진 이미지가 생성됩니다. 그래도 사전 녹음 된 mp4 비디오를 재생할 때이 문제가 발생하지 않습니다.MPMoviePlayerController는 라이브 스트리밍 비디오 (m3u8)를 확장/왜곡합니다.

어떤 일이 벌어지고 있으며 어떻게 해결할 수 있습니까?

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

MPMovieScalingModeFill 보존하지 않는 비율

여기 내 코드입니다. 가로 세로 비율을 보존하려면 MPMovieScalingModeAspectFit 또는 MPMovieScalingModeAspectFill을 사용해야합니다.

모든 모드에 대한 정보는 MPMovieScalingMode documentation을 확인하십시오.

+0

나열된 적합 모드와 채우기 모드를 시도했지만 여전히 작동하지 않습니다. 그것은 초기에 작동합니다. 그러나 플레이어는 잠시 후에도 크기가 조정됩니다. 내 문제를 일으킬 수있는 m3u8에 대한 특별한 것이 있습니까? – user359519

+0

Apple의 blip-blop 피드 (http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8)로 플레이어를 시험해 보았습니다. 지금까지 크기를 조정하지 않았습니다. 피드의 인코딩에 문제가있을 수 있음을 나타냅니다. 내 피드에 대한 인코딩을 설정하는 사람들과 이야기하겠습니다. – user359519

2

MPEG-TS 스트림의 헤더에 가로 세로 비율 필드가 있습니다. 이 값이 있으면 MPMoviePlayerController는보고 된 너비와 높이에 관계없이 비디오를 늘립니다. 잘못된 값은 왜곡 된 비디오를 생성합니다. 나는 이것이 왜 20 초 만에 일어날 지 확신하지 못한다. 그러나 MPMoviePlayerController는 God-awful 클래스이다. (특히 iOS 4.0 이전). 누가 FFmpeg로 mpeg-ts 스트림을 만들면 다음과 같이 할 수있다. 가로 세로 비율을 설정하려면 -aspect % f를 사용하십시오.

+0

20seconds는 첫 번째 TS- 청크가 올바르게 인코딩되었지만 다음 TS- 청크가 올바르게 인코딩되지 않았기 때문일 수 있습니다. +1 좋은 답변. – Till