2012-04-22 26 views
6

Tôi đang cố viết ứng dụng tải lên video từ điện thoại Android khi chúng đang được ghi bằng cách đọc từ tệp .mp4 và tải lên các byte khi chúng được ghi vào tập tin. Vấn đề là, theo như tôi có thể nói, các nguyên tử moov và một số dữ liệu khác các loại dường như không được ghi vào tập tin cho đến khi quay video đã hoàn thành và tập tin video đã được đóng lại. Có cách nào để xử lý tệp video và thêm các siêu dữ liệu này ở phía máy chủ giả định hoặc làCách tải video lên từ điện thoại (n Android) khi đang được ghi

  1. Tệp video đầy đủ đã được tải lên (nhưng không có nguyên tử moov hoặc bất kỳ dữ liệu nào khác không được ghi trên pass đầu tiên)
  2. Chỉ một phần của video đã được tải lên (ví dụ 10 giây đầu tiên) và tôi muốn chuyển đổi video này thành tệp mp4 hợp lệ chứa đoạn video được tải lên.

Tôi đã nhìn thấy liên kết như http://www.mattakis.com/blog/kisg/20090708/broadcasting-video-with-android-without-writing-to-the-file-system nhưng họ che đậy các vấn đề bằng cách đơn giản nêu

Vì vậy, các dòng nhận sẽ phải được cố định lên sau khi ghi xong, hoặc video thô/âm thanh khung phải được xử lý bởi máy chủ.

mà không giải thích chính xác cách thực hiện điều đó.

Trả lời

4

Như bạn đã nhận thấy, định dạng MP4 có thể khó sử dụng trong các trường hợp như vậy. Tôi nghi ngờ bài đăng trên blog được liên kết không đi sâu vào chi tiết về "sửa lỗi" vì nó có thể khá liên quan. Ngoài việc viết trường kích thước còn thiếu của hộp mdat, bạn sẽ cần tạo các hộp ftyp và moov. Nếu bạn thực sự cần giải pháp MP4 từ đầu đến cuối, ISO 14496-12ISO 14496-14 sẽ cho bạn biết nhiều hơn bao giờ bạn muốn biết về cách tạo cấu trúc dữ liệu này.

Tuy nhiên, bạn có thể thấy rằng giải pháp thanh lịch hơn là sử dụng định dạng thực sự phù hợp để xử lý trong thời gian thực. Nói cách khác, ở phía Android, hãy chuyển tiếp luồng video thành định dạng thời gian thực và gửi cho máy chủ. Về phía máy chủ, bạn sẽ có sự linh hoạt tuyệt vời để xử lý video: Bạn có thể chuyển tiếp toàn bộ video trở lại thành MP4, bạn có thể cắt xén, tạo các đoạn 10 giây hoặc bất kỳ thứ gì. Dự án Sipdroid mã nguồn mở contains some code thể hiện chuyển tiếp video trực tiếp thành RTP. (Bạn có thể thích định dạng truyền tin đáng tin cậy hơn - RTP qua TCP hoặc bất kỳ thứ gì - nguyên tắc giống nhau.)

+0

Cảm ơn lời khuyên. Tôi đang xem dự án ipcamera-for-android, sử dụng FLV làm định dạng truyền tải. Nếu tôi không thể có được con đường đó, tôi sẽ xem xét Sipdroid. – velocipedestrian

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