2012-01-12 40 views
8

Điều tôi đang cố gắng tạo là một ứng dụng bổ sung hiệu ứng cho video trong khi quay. Có cách nào để có phương thức gọi lại nhận khung không, sau đó áp dụng hiệu ứng cho nó và ghi lại. Hiện tại có một ứng dụng trên Android Market (Videocam Illusion) cho rằng đó là ứng dụng duy nhất có thể thực hiện điều này. Bất cứ ai cũng biết làm thế nào Videocam Illusion hiện điều này hoặc có một số liên kết đến hướng dẫn có thể phác thảo xử lý video cho Android?Xử lý khung hình video Android theo khung trong khi quay

Đây là một câu hỏi tương tự đó là chưa được trả lời:

Android preview processing while video recording

Trả lời

11

Thật không may, (trừ khi tôi không biết về một số phương pháp khác được cung cấp bởi các API) cách này được thực hiện là sử dụng một dòng suối trực tiếp đến máy ảnh và thao tác bằng cách sử dụng một số loại Mã gốc để sửa đổi luồng. Tôi đã làm một cái gì đó tương tự như thế này trước khi tôi đã làm việc trên một eyetracker - Vì vậy, tôi sẽ cho bạn biết làm thế nào nó hoạt động về cơ bản.

  1. mở một dòng bằng cách sử dụng NDK (có thể api, tùy thuộc vào việc triển khai)
  2. Sửa đổi các byte của con suối - mỗi frame được gửi như một gói riêng biệt. Bạn phải lấy từng gói dữ liệu từ máy ảnh và sửa đổi nó. Bạn có thể thay thế màu sắc hoặc dịch. Bạn cũng có thể sử dụng OpenGL để sửa đổi hoàn toàn hình ảnh bằng cách thêm những thứ như hiệu ứng kính.
  3. Làm phẳng hình ảnh trở lại
  4. gửi hình ảnh qua bộ điều khiển chế độ xem được hiển thị.

Một điều bạn phải lưu ý là tải và gửi các gói & hình ảnh diễn ra trong khoảng 1/30 giây cho mỗi khung hình. Vì vậy, mã phải được tối ưu hóa cực kỳ.

+1

Cảm ơn thông tin. – daveySET

+0

Tôi thích nhận xét khoảng 1/30 giây. Chúng tôi lập trình viên thường nghĩ về tốt hơn hoặc tệ hơn. Điều này cho phép chúng ta có được 'đủ tốt' và tiếp tục, điều này thực sự quan trọng. –