아이폰에서 m4v동영상을 바이트 단위로 자른 후 다시 붙여서 플레이를 해보았다.

정상적으로 플레이는 되지만 몇가지 문제가 발생.

실제로 내가 다시 붙인 데이터는 원래의 50%이지만 플레이시간은 원래의 풀타임이

적용되고 또한 데이터가 없는데도 불구하고 플레이가 계속되었다. 물론 플레이어의

상태바(status bar) 또한 자료가 있는것처럼 하얀색으로 표시되었다.


내가 원하는 것은 HTTP Live Streaming 처럼 존재하는 데이터만큼만 플레이하는 것인데

도무지 갈피를 못 찾겠다. 상태바는 어떻게 컨트롤하는건지도 영 모르겠네....;;


* MPMoviePlayerController & MPMoviePlayerViewController 사용.


 //------------------------

 // split binary data

 //------------------------

 NSString *moviePath = [[NSBundle mainBundle] pathForResource:@"nozzang" ofType:@"m4v"];

 NSData *movieData = [NSData dataWithContentsOfFile:moviePath];

    

 int byteSize = 1000000;

 // 메모리 할당.

 Byte *byteData_2 = (Byte*)malloc(byteSize); 

// 메모리에 카피

memcpy(byteData_2, [[movieData subdataWithRange:NSMakeRange(1000000,1999999)] bytes] , byteSize);


Byte *byteData_3 = (Byte*)malloc(byteSize);

memcpy(byteData_3, [[movieData subdataWithRange:NSMakeRange(2000000,2999999)] bytes], byteSize);


Byte *byteData_4 = (Byte*)malloc(byteSize);

memcpy(byteData_4, [[movieData subdataWithRange:NSMakeRange(3000000,3999999)] bytes], byteSize);


Byte *byteData_5 = (Byte*)malloc(byteSize);

memcpy(byteData_5, [[movieData subdataWithRange:NSMakeRange(4000000,4999999)] bytes], byteSize);


//-----------------

// append data

//-----------------

[movieData_real appendBytes:byteData_2 length:byteSize];

 NSUInteger movieData_real_len = [movieData_real length];

    

[movieData_real appendBytes:byteData_3 length:byteSize];

 movieData_real_len = [movieData_real length];


[movieData_real appendBytes:byteData_4 length:byteSize];

movieData_real_len = [movieData_real length];


[movieData_real appendBytes:byteData_5 length:byteSize];

movieData_real_len = [movieData_real length];


//------------------------

// save file

//------------------------

NSArray *paths_tmp = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory_tmp = [paths_tmp objectAtIndex:0];

documentsDirectory_tmp = [documentsDirectory_tmp stringByAppendingPathComponent:@"/tmpMovie.m4v"];

[movieData_real writeToFile:documentsDirectory_tmp atomically:YES];

+ Recent posts