2012-02-29 4 views
6

아주 잘 작동하는 비디오 파일의 암호화가 필요한 앱을 만들고 있습니다. 그러나 해독에 사용하는 방법은 바이트 배열에서 비디오를 반환합니다. 어쨌든 새 파일을 만들지 않고 해당 배열을 사용하여 비디오를 재생할 수 있습니다.바이트 배열에서 비디오를 재생하는 방법은 무엇입니까?

내 방법 암호 해독 :

private static byte[] decrypt(byte[] raw, byte[] encrypted) throws EncrypterException { 
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); 
try { 
    final Cipher cipher = Cipher.getInstance("AES"); 
    cipher.init(Cipher.DECRYPT_MODE, skeySpec); 

    return cipher.doFinal(encrypted); 

} catch (Exception e) { 
    throw new EncrypterException(e); 
} 
} 

나를 여기 붙어 도와주세요?

답변

1

일반적으로 어떻게 비디오를 재생합니까? 플레이어에게 InputStrem 인스턴스를 보냅니다. 바이트 배열을 랩핑하여 플레이어에게 전송하는 ByteArrayInputStream입니다.

+0

괜찮지 만 VideoView에서 ByteArrayInputStream을 어떻게 사용합니까? – Navdroid

+0

@Navdroid : ByteArrayInputStream는 InputStream입니다. –

+1

하지만 VideoView를 사용하고 싶습니다. 새 파일을 만들지 않고 어떻게 사용할 수 있습니까? – Navdroid

0

VideoView에 정적 파일을 제공하지 말고 스트림이 있어야합니다. 이 스트림을 생성하는 방법은 무엇입니까? Android Supported Media Formats을 참조하십시오. 가장 간단한 방법은 로컬 http 서버가 될 수 있습니다. LocalSingleHttpServer는 이러한 종류의 솔루션을 구현하는 라이브러리 구성 요소의 예입니다.

1

많은 검색을 한 후에이 답변을 요약 할 수 있습니다. 모든 크레딧은 솔루션 소유자에게 전달되어야합니다.

VideoView은 URL 또는 파일 만 허용하므로 두 가지 해결책이 있습니다.

해결책 1; stream을 사용하여 임시 파일을 만들고 해당 파일을 videoView에 제공하십시오.

Ref; https://stackoverflow.com/a/21549067/1847645

해결책 2; Android 로컬 시스템에 미디어 서버를 만들고 스트리밍을 위해 videoView가 로컬 호스트로 연결된 미디어 서버에 스트림을 제공합니다.

Ref; https://stackoverflow.com/a/9096241/1847645

기타 Ref; libeasy 덕택에 매우 유용합니다. https://stackoverflow.com/a/15668803/1847645

관련 문제