2011-07-07 17 views
6

Implementé una forma de cargar video en youtube, etc. utilizando publicaciones de varias partes, o guardo un video en el rollo de la cámara localmente. Sin embargo, con videos grandes, me vigilan debido a la gran cantidad de espacio que ocupa la memoria, porque actualmente tengo que poner todo el video en la memoria para poder publicarlo o guardarlo.cargar o exportar un video grande absorbe la memoria y causa un bloqueo ... ¿cómo puedo romperlo?

¿Cuáles son los pasos que puedo seguir para dividir un video grande en fragmentos manejables?

+0

¿Está utilizando una biblioteca HTTP como ASIHTTPRequest, o está haciendo su propia? –

+0

No estoy usando ASIHTTPRequest actualmente. – akaru

+0

Supongo que lo estás haciendo tú mismo. La única otra cosa en la que puedo pensar es usar un archivo mapeado de memoria. Tal como [esto] (http://stackoverflow.com/questions/6172919/ios-memory-mapped-files-and-low-memory-scenarios) –

Respuesta

1

Puede guardar su video en un archivo y usar nsstream para leer fragmentos del video y enviarlos, deberá mantener un estado para recordar lo que envió y lo que queda, pero no debería ser tan malo como implementar, por ejemplo

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

Gracias, entiendo que puedo transmitir el video, pero ¿cómo funcionaría esto con el SDK para guardarlo en Camera Roll? – akaru

+0

Bueno, si está descargando un archivo, puede anexar los datos a un archivo tal como aparece (para que no lo guarde todo en la memoria) y luego escribirlo en el rollo de la cámara ... – Daniel

+0

Entiendo. Sin embargo, mi problema radica principalmente en la llamada para guardar un archivo local en el rollo de la cámara, o para guardar ese archivo local en la web. Cualquiera de esas llamadas dará como resultado la falla de la memoria. – akaru

Cuestiones relacionadas