2012-02-15 14 views
5

Về cơ bản, tôi muốn có thể gửi một nguồn cấp dữ liệu "sống" bị trì hoãn vài giây trên dưới 3g. Không sao nếu nó có chất lượng rất thấp. Tôi thậm chí có thể đi với 4 bit xám nếu cần thiết (mặc dù 128-256 màu sắc sẽ là thích hợp hơn). Tôi sẽ sẵn sàng để đi thấp như 160x120 tại> 1fps nếu cần thiết. Hoàn toàn không nén ở cài đặt crummiest này có nghĩa là một kết nối băng thông thấp quá bão hòa.Android: Tôi muốn ghi lại một nguồn cấp dữ liệu video chất lượng thấp hơn có thể và gửi nó trong các gói dữ liệu rời rạc. Có thể không? Làm thế nào bạn sẽ tiếp cận nó?

Tôi có nên xem xét chỉ đơn giản là chụp nhanh dưới dạng hình ảnh không? Có ai quen thuộc với khả năng của Bitmapfactory về chất lượng JPEG thấp nhất có thể không?

Tôi có nên xem PNG hoặc GIF không? Sự hiểu biết của tôi là các lĩnh vực vững chắc hoạt động tốt nhất với những lĩnh vực này. Tôi không chắc chắn tôi có thể phụ thuộc rất nhiều vào các lĩnh vực rắn khác hơn là một phần tốt của bầu trời, như tôi đang tìm cách để có quyền kiểm soát một mục tiêu giả mà gửi lại "video". Video giả với độ trễ vài giây là tốt và thậm chí còn thích hợp hơn vì tôi hy vọng mất và lấy lại kết nối máy chủ thường xuyên.

Tôi nhận được như 128k lên trên "3g" với một tín hiệu khá, nhưng tôi không thể chính xác phụ thuộc vào điều đó. Tôi có thể làm bất kỳ bên máy chủ giải mã cần thiết nào - đó không phải là vấn đề.

Vì vậy, tôi hỏi bạn, Ngăn xếp, bạn muốn xem từ điện thoại thông minh của bạn qua internet và không thể phụ thuộc vào kết nối tốt. Làm thế nào để bạn tiếp cận nó?

+0

Bạn sẽ muốn sử dụng JPEG, nhà máy bitmap nên xử lý dễ dàng, tải bitmap và chỉ thay đổi kích cỡ mẫu xuống cho đến khi bạn đạt độ phân giải đủ thấp. – stealthcopter

+0

Bạn nên sử dụng JPEG và xem MJPEG – Azlam

Trả lời

1

Tôi nghĩ cách tiếp cận đơn giản nhất sẽ lấy hình ảnh xem trước và gửi những hình ảnh đó.

Đây là đoạn mã hay mà tôi tìm thấy để lấy hình ảnh xem trước dưới dạng JPEG. Nó đẹp và nhanh và phù hợp với nhu cầu của bạn. Tôi cũng đã sử dụng nó để tải lên, vì vậy tôi đã được sau khi kích thước tập tin rất nhỏ.

Khi xuất ảnh 1920x1080, kích thước tệp ở bất kỳ đâu trong khoảng từ 150-300KB.

camera.setOneShotPreviewCallback(new PreviewCallback() { 
      @Override 
      public void onPreviewFrame(byte[] data, Camera camera) { 
       try { 
        Camera.Parameters parameters = camera.getParameters(); 
        Size size = parameters.getPreviewSize(); 
        YuvImage image = new YuvImage(data, parameters.getPreviewFormat(), 
          size.width, size.height, null); 
        File file = new File(getCacheDir().getPath() + "/out.jpg"); 
        FileOutputStream filecon = new FileOutputStream(file); 
        image.compressToJpeg(
          new Rect(0, 0, image.getWidth(), image.getHeight()), 90, 
          filecon); 
       } catch (FileNotFoundException e) { 
       } 
      } 
     }); 

Đây là cách tôi chỉ đặt kích thước xem trước thành cài đặt tối đa, nhưng bạn có thể đặt kích thước xem trước thành cài đặt thấp hơn để tăng tốc.

Camera.Parameters parameters = camera.getParameters(); 
List<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes(); 
imageWidth = previewSizes.get(0).width; 
imageHeight = previewSizes.get(0).height; 
parameters.setPreviewSize(imageWidth, imageHeight); 
camera.setParameters(parameters); 
Các vấn đề liên quan