Tôi đã tạo trình phát phim dựa trên FFmpeg. Nó hoạt động tốt. Giải mã khá nhanh, trên LG P970 (Cortex A8 với Neon) Tôi có tốc độ trung bình 70 khung hình/giây với dòng video độ phân giải 640 x 424 bao gồm chuyển đổi YUV2RGB. Tuy nhiên, có một nút cổ chai. Nó đang vẽ trên Canvas.Cách tăng hiệu suất bản vẽ bitmap trên Android
Tôi sử dụng thư viện gốc jnigraphics để điền dữ liệu hình ảnh vào bitmap ở phía gốc và sau đó tôi vẽ bitmap này trên Canvas trong SurfaceView. Đó là cách tiếp cận khá đơn giản và phổ biến, nhưng bản vẽ mất 44 ms cho bitmap với độ phân giải 640 x 424 làm giảm fps xuống 23 và làm cho kỹ thuật này không thể sử dụng được ... Phải mất rất nhiều thì toàn bộ giải mã khung A/V!
Có phương pháp nào để vẽ bitmap nhanh hơn đáng kể không? Tôi muốn hiển thị hoàn toàn trong mã gốc bằng cách sử dụng OpenGLES 2, nhưng tôi đã đọc nó cũng có thể là slow. Vì vậy, những gì bây giờ? ...
Tôi làm cách nào để hiển thị bitmap nhanh nhất có thể?
không có cách nào để truy cập bộ đệm của SurfaceView trực tiếp từ mã gốc? Xem trước máy ảnh thực hiện điều này. – zapl
AFAIK không, ít nhất là không có cách tiêu chuẩn nào khi sử dụng NDK. Tất nhiên, nó có thể liên kết với các nguồn Android, nhưng nó sẽ gây ra rắc rối với khả năng tương thích ... – vitakot