2013-04-19 27 views
6

Tôi đã tìm kiếm trong vài ngày, nhưng không thể có được câu trả lời rõ ràng về cách thực hiện.Giải mã âm thanh/video một cách nhanh chóng với MediaPlayer

Tôi có một số tệp âm thanh/video được mã hóa trên sdcard của mình, mà tôi muốn phát tệp sẽ gửi tới MediaPlayer và bắt đầu phát trong khi giải mã đang hoạt động cùng một lúc. Nó tạo ra một bộ đệm ban đầu, và khi nó có đủ dữ liệu ban đầu để bắt đầu chơi, MediaPlayer sẽ bắt đầu phát, và trên nền giải mã và tiếp tục gửi dữ liệu qua.

Tôi nhìn xung quanh và hầu hết các giải pháp dường như chỉ để có một localhttpserver, và sau đó gửi tập tin đến máy chủ, và khi nó trở lại, nó sẽ bắt đầu phát âm thanh/video như một luồng trực tiếp. Những gì tôi không biết là mã giải mã xuất hiện ở đâu? Ở phía máy chủ? Nếu vậy, trong đó một phần của nó?

Tôi cũng đã xem giải pháp http://libeasy.alwaysdata.net/ này, có thể giải quyết được vấn đề đó, nhưng dường như tôi không hiểu cách hoạt động. Tôi biết rằng nó tạo ra một máy chủ cục bộ, nhưng trên phần mã hóa, làm thế nào để giải mã của riêng tôi đến chơi?

private void myPlay(String path) { 
    mServer = new LocalSingleHttpServer(); 
    mServer.setCipher(myGetCipher()); 
    mServer.start(); 
    path = mServer.getURL(path); 
    mVideoView.setVideoPath(path); 
    mVideoView.start(); 
} 
public void onCompletion(MediaPlayer mp) { // MediaPlayer.OnCompletionListener interface 
    mServer.stop(); 
} 

Vì tôi khá mới phát triển Android, vì vậy hãy mang theo tôi nếu tôi không rõ hoặc bất cứ điều gì.

Cảm ơn bạn.

+0

Bạn có nhận được giải pháp nào cho điều này không? Tôi cũng không thể phát video được mã hóa – user1444172

+0

Đây không phải là giải pháp tốt nhất vì bạn không thể xem video trừ khi bạn trực tuyến. Nó cũng làm cho bạn phụ thuộc vào tốc độ kết nối internet. Hãy thử tìm một cái gì đó làm việc đó cục bộ trên thiết bị. Nếu các tệp có kích thước nhỏ. Bạn có thể làm điều đó một lần, nhưng điều này sẽ không hoạt động nếu bạn đang xử lý các tệp có kích thước lớn. –

Trả lời

0

Giải mã được thực hiện bởi máy chủ http, nếu bạn cung cấp cho nó một bản mã.
Mã một cái gì đó như thế này (bạn sẽ phải thêm ngoại lệ bắt đâu đó):

import javax.crypto.Cipher; 
private Cipher myGetCipher() { 
    Cipher c = Cipher.getInstance("RC4"); 
    c.init(Cipher.DECRYPT_MODE, new SecretKeySpec("myPassword".getBytes(), "RC4")); 
    return c 
} 
+0

Hi @ libeasy, tôi đang theo dõi các bài đăng của bạn từ những nơi khác nhau. Đã thử như sau: Nhưng video được mã hóa không phát cùng khóa và mật mã. Xin lỗi. xem mã của tôi dưới đây: (Tôi dán mã của tôi dưới dạng câu trả lời riêng biệt, không gian nhận xét này là không đủ. – user1444172

+0

Để được hỗ trợ, vui lòng sử dụng địa chỉ liên hệ được đề cập trên trang web. 't giúp đỡ nhiều, thay vào đó cung cấp một báo cáo thực sự, với logcat và chi tiết về thiết bị và bối cảnh. – libeasy

Các vấn đề liên quan