2013-04-29 44 views
5

Tôi đang làm việc trên một dự án mà chúng tôi cần ghi lại bề mặt OpenGL được hiển thị. (ví dụ nếu chúng ta sử dụng GLsurfaceView, chúng ta cần phải ghi lại bề mặt cùng với âm thanh từ MIC)Ghi video trên Android của bề mặt OpenGL (GLSURFACEVIEW)

Hiện tại tôi đang sử dụng API MediaRecorder bằng cách đặt nguồn video là VIDEO_SOURCE_GRALLOC_BUFFER.

Tôi đang sử dụng sample sau như mã cơ sở

Tôi muốn biết ....

  1. Đây có phải là đúng cách? . Có sự thay thế nào tốt hơn không?
  2. Kiểm tra mẫu được đưa ra trong liên kết đang ghi lại âm thanh và video của EGLSURFACE nhưng nó không được hiển thị đúng cách.

Lý do có thể là gì?
Bất kỳ trợ giúp/con trỏ nào thực sự được đánh giá cao.

cảm ơn,
Satish

Trả lời

6

Mã bạn tham khảo không phải là một mẫu, nhưng mã kiểm tra chứ không phải nội bộ mà bài tập một giao diện ngoài công lập. SurfaceMediaSource có thể thay đổi hoặc biến mất trong bản phát hành trong tương lai và phá vỡ mã của bạn.

Cập nhật: Android 4.3 (API 18) cho phép Surface input để MediaCodec. Mẫu EncodeAndMuxTest thể hiện việc ghi các khung OpenGL ES thành tệp .mp4.

Lớp MediaRecorder không lấy đầu vào Bề mặt, vì vậy trong trường hợp của bạn, bạn cần ghi âm riêng và sau đó kết hợp nó với lớp MediaMuxer mới.

Cập nhật # 2: Android 5.0 (API 21) cho phép Surface input để MediaRecorder, mà thường là thuận tiện hơn nhiều so với MediaCodec. Nếu bạn neeed để sử dụng MediaCodec, có một ví dụ cho thấy ba cách khác nhau của ghi âm OpenGL ES đầu ra với nó trong Grafika's "kỷ lục GL hoạt động".

Lớp MediaProjection cũng có thể hữu ích cho việc ghi lại màn hình.

+0

Xin chào, Cảm ơn bạn đã cung cấp thông tin. Hiện nay chúng tôi đang tiến hành với các glreadpixels đang giảm FPS. –

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