2012-10-19 1 views
1

안드로이드 애플리케이션의 메모리 공간이 극도로 제한되어 있기 때문에 (누군가 약 20 메가라고 생각합니다), 비디오 플레이어가 비디오를로드하고 재생할 수 있다는 점을 누군가가 나에게 가르쳐 줄 수 있는지 궁금합니다. 크기가 더 크거나 더 큰 크기입니다. 앱이 일종의 청크로 동영상을로드합니까?안드로이드가 메모리 제약 조건 하에서 비디오를 재생하는 방법은 무엇입니까?

일부 비디오 자산이 임베드되어 있고 응용 프로그램이 약 80Mg로 증가했으며 컴파일 및 디버깅을위한 총 괴물 일뿐입니다 (자산이 없으면 응용 프로그램은 약 2MB 정도) , 나는 자산을 제거하고 측면에서 다운로드하여 apk에 앉지 말고 sdcard에 앉아야한다고 생각했지만, 런타임에로드하고 재생하는 것이 앱을 통해 파산 할 것이라고 걱정됩니다. 메모리 할당, 그리고 누군가가 내 옵션이 무엇인지에 관해 밝혀 줄 수 있기를 바랬다. 이 비디오 애플 리케이션이하는 일이지만, 실제로 네이티브 코드에서 malloc에 ​​문을 사용하여 정상적인 한계를 넘어 메모리를 늘릴 수 있다면

TIA

+1

그들은 관리 가능한 청크로 비디오를 버퍼링합니다. 비디오의 크기가 GB 인 경우에도 표준 비디오 재생 API를 사용하여 메모리 벽에 부딪치지 않습니다. 그러나 apk 외부에서 비디오를 다운로드하는 것은 여전히 ​​좋은 생각입니다. 각 증분 업그레이드마다 새 80MB 파일을 다운로드해야한다면 아마도 대신 제거해야 할 것입니다. – Geobits

+0

"표준 비디오 재생 api"라고 말하면 로컬 파일의 경로에서 URI를 만들어 내 Activity의 VideoView로 넘겨 줄 수 있다는 의미입니다. 그러면 해당 파일을 정상적으로 처리 할 때처럼 정상적으로 처리 할 수 ​​있습니다. 내부 apk 리소스를 가리키는 URI를 넘겨 주시겠습니까? (그것은 내가 그것이 바랄 것이었던 방법이었다). –

+0

네,'setVideoURI' 또는'setVideoPath'를 사용하면됩니다. – Geobits

답변

1

동영상을 관리 가능한 청크로 버퍼링합니다. 비디오의 크기가 GB 인 경우에도 표준 비디오 재생 API를 사용하여 메모리 벽에 부딪치지 않습니다. setVideoURI 또는 setVideoPath에 대한 표준 호출을 사용하여 파일을 가리킬 수 있으며,이 파일을 통해 파일을 처리 할 수 ​​있습니다. VideoView

apk 외부에서 비디오를 다운로드하는 것은 여전히 ​​좋은 생각이지만, 일반적으로 MediaPlayer에 대해 동일하게 작동합니다. 각 증분 업그레이드마다 새 80MB 파일을 다운로드해야한다면 아마도 대신 제거해야 할 것입니다. 직접 호스트하지 않으려면 보충 apk 옵션을 살펴보십시오.

0

나는 아무 생각이 없습니다. 이것은 약 20MB의 정상 max를 우회합니다.

큰 암호화 파일 (약 10MB 파일 포함)을 다룰 때 AES 암호화가 더 많은 양의 메모리가 필요한 안드로이드 장치에서만 암호화에 사용했습니다.

+0

미안 ... "네이티브 코드"가 무슨 의미인지 이해하지 못합니다 ... Java에서 malloc에 ​​어떻게 액세스합니까? 아니면 자바를 우회해서 C로 애플 리케이션을 작성해야한다는 말입니까? –

+0

NDK를 사용하여 원시 코드를 작성할 수 있으며 응용 프로그램에서 Java와 C를 결합 할 수도 있습니다. 비디오는 일반적으로 다른 사람이 제안한대로 버퍼를 사용하지만 NDK를 사용하여 메모리 제한을 늘릴 수 있습니다. –

+1

이 문제는 특히 비디오 문제입니다. 그러나 이것은 잠시 시간을내어 볼 때 매우 흥미로운 아이디어입니다. :) –