2011-07-07 1 views
6

멀티 파트 포스트를 사용하여 YouTube 등으로 비디오를 업로드하거나 로컬에서 카메라 롤에 비디오를 저장하는 방법을 구현했습니다. 그러나 큰 비디오의 경우 너무 많은 메모리 사용 공간으로 인해 감시를 받게됩니다. 현재는 비디오를 게시하거나 저장하기 위해 전체 비디오를 메모리에 저장해야하기 때문에 필요합니다.큰 비디오를 올리거나 내 보내면 메모리가 빨려서 충돌이 발생합니다 ... 어떻게 해결할 수 있습니까?

큰 비디오를 관리 가능한 덩어리로 나누기 위해 수행 할 수있는 단계는 무엇입니까?

+0

ASIHTTPRequest와 같은 HTTP 라이브러리를 사용하고 계신가요? –

+0

현재 ASIHTTPRequest를 사용하고 있지 않습니다. – akaru

+0

나는 너 자신이 이것을하고 있다고 가정하고있다. 내가 생각할 수있는 유일한 다른 방법은 메모리 매핑 된 파일을 사용하는 것입니다. [this] (http://stackoverflow.com/questions/6172919/ios-memory-mapped-files-and-low-memory-scenarios)와 같은 –

답변

1

동영상을 파일로 저장하고 nsstream을 사용하여 동영상의 청크를 읽고 전송할 수 있습니다. 전송 한 내용과 남은 내용을 기억해야하지만 상태가 좋지 않아야합니다. 예 :

BOOL done=FALSE; 
    NSInputStream *stream=nil; 

    NSString *[email protected]"..."; //your file path 
    stream=[[NSInputStream alloc] initWithFileAtPath:myFile ]; 
    while(!done) 
    { 


    int chunkSize=500000; //500 kb chunks 
    uint8_t buf[chunkSize]; 
     //reads into the buffer and returns size read 
    NSInteger size=[stream read:buf maxLength:chunkSize]; 

    NSLog(@"read %d bytes)", size); 

    NSData * datum=[[NSData alloc] initWithBytes:buf length:size]; 
     //when we actually read something thats less than our chunk size we are done 
    if(size<chunkSize) 
    done=TRUE; 
    //send data  
    } 
+0

감사합니다. 동영상을 스트리밍 할 수 있다고는하지만 SDK를 사용하여 카메라 롤에 저장하는 방법은 무엇입니까? – akaru

+0

글쎄, 파일을 다운로드하는 경우 데이터를 파일에 첨부하여 (메모리에 저장하지 않으므로) 카메라 롤에 쓸 수 있습니다. – Daniel

+0

나는 이해합니다. 그러나 내 문제는 주로 로컬 파일을 카메라 롤에 저장하거나 해당 로컬 파일을 웹에 저장하라는 호출에 있습니다. 이러한 호출 중 하나라도 메모리 충돌이 발생합니다. – akaru