2011-08-08 51 views
5

Tôi đang xây dựng một ứng dụng sẽ lưu giữ bộ đệm video thứ hai 60 giây. Việc quay video cần phải chạy trong một khoảng thời gian dài (24-48 giờ). Tôi dường như không có bất kỳ vấn đề nào với việc ghi âm, nhưng có vẻ như tôi mất kết nối với số Camera hoặc Surface sau một vài giờ.Quay video vô tận

Tôi đang đặt thời lượng tối đa: MediaRecorder.setMaxDuration(10 * 1000) để ghi lại được chia thành 10 phân đoạn thứ hai.

Mỗi lần tôi khởi động lại bản ghi của mình, tôi đang tăng tệp đầu ra theo cách mà 6 tệp được sử dụng lại. Mục đích là để giữ một lịch sử 60 giây mọi lúc.

Nếu tôi dừng ghi sau 1-2 giờ thì video phát lại tốt. Tuy nhiên, nếu tôi để video chạy trong 3-4 giờ và dừng ghi, video chỉ hiển thị đầu ra màu đen với âm thanh. Nói cách khác, nó giống như bị mất kết nối với máy ảnh hoặc bề mặt nhưng vẫn tiếp tục ghi âm.

Có ai có thể giải thích hành vi này không?

Nếu không có cách nào khác, có cách nào tốt hơn để ghi lại X phân đoạn thứ hai của video không?

FYI: Tôi đang sử dụng khóa chế độ thức để màn hình/CPU ở lại.

+0

Tôi chưa bao giờ thử bất cứ điều gì như thế. Nhưng nếu bạn có thể nhận được 1-2 giờ trong mà không có vấn đề sửa chữa bẩn nhanh chóng có vẻ như kết thúc() và khởi động lại hoạt động ghi âm của bạn. Nhưng điều đó sẽ khiến bạn có một khoảng trống trong video được ghi lại, đó là kích thước của thời gian khởi động hoạt động của bạn. Nếu bạn có 2 thiết bị, bạn có thể ghi lại từ cả hai lần và thời gian khởi động lại thay thế? – FoamyGuy

+0

Hmm, ý tưởng thú vị. Trong thực tế, tôi tin rằng tôi có thể làm điều gì đó không đúng với các hoạt động ghi âm. Như trong, nó có thể * bình thường * có thể kết nối lại với máy ảnh, nhưng có thể có trường hợp 1% mà nó đi trước chính nó (MediaRecorder không hoàn tất việc ghi/đóng tệp xuất khi tôi cố bắt đầu ghi lại?) –

Trả lời

2

Tôi đã trả lời câu hỏi của riêng mình tại đây. Tôi không có nhiều thông tin, nhưng hy vọng điều này sẽ cung cấp đủ thông tin để giúp đỡ người khác trong tình trạng tương tự.

Trước tiên, tôi không bao giờ đăng mã của mình vì đó là cách quá dài. Tôi đã không đăng đoạn mã của mình vì tôi không biết vấn đề bắt nguồn từ đâu. Mặc dù thực tế là tôi đã làm việc này ngay bây giờ, tôi vẫn không biết những gì đã sai với mã cũ của tôi.

Đề nghị của tôi:

tôi đã kết thúc scrapping mã của tôi và bắt đầu tươi với mã được tìm thấy trong Demo API Phát triển: CameraPreview - Tôi tìm thấy tài liệu tham khảo này trong ít nhất một thread trên trang web này.

Sau đó tôi có thể liên tục ghi lại hàng giờ mà không gặp vấn đề gì. Vì vậy, nếu bạn đang ở trong tình huống tương tự, tôi khuyên bạn nên sử dụng mã CameraPreview làm điểm bắt đầu.

+0

Xin chào, tôi đang cố gắng làm điều gì đó tương tự nhưng với độ dài nhỏ hơn (ghi lại 15-30 giây cuối cùng của video + âm thanh) nhưng tôi đang gặp khó khăn trong việc làm cho nó hoạt động. Bạn có thể cho tôi biết mức API tối thiểu của bạn là dự án của bạn không? Ngoài ra, nếu bạn có thể cung cấp thêm thông tin về điều này, nó sẽ tuyệt vời, giống như bạn đang sử dụng một số thư viện bên ngoài khác, đối tượng/phương pháp bạn đang sử dụng, cách bạn kết hợp video (hoặc nếu nó được thực hiện tự động) . Cảm ơn – klifa

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