2013-01-06 39 views
6

Tôi đã có kinh nghiệm về xây dựng ứng dụng iOS nhưng không có trải nghiệm với video. Tôi muốn xây dựng một ứng dụng iPhone truyền video thời gian thực đến máy chủ. Một lần trên máy chủ, tôi sẽ cung cấp video đó cho người tiêu dùng trong thời gian thực.Chụp, mã hóa sau đó phát trực tiếp video từ iPhone sang máy chủ

Tôi đã đọc khá nhiều tài liệu. Ai đó có thể cho tôi biết nếu những điều sau đây là chính xác và điền vào chỗ trống cho tôi.

  1. Để quay video trên iPhone, tôi nên sử dụng các lớp AVFoundation. Khi sử dụng AVCaptureSession, phương thức delegate captureOutput: didOutputSampleBuffer :: fromConnection Tôi có thể truy cập vào từng khung hình của video. Bây giờ tôi có khung hình video tôi cần mã hóa khung
    • Tôi biết rằng các lớp Foundation chỉ cung cấp mã hóa H264 qua AVAssetWriter và không thông qua một lớp dễ dàng hỗ trợ phát trực tuyến tới máy chủ web. Vì vậy, tôi còn lại bằng cách viết video vào một tập tin.
    • Tôi đã đọc các bài đăng khác cho biết họ có thể sử dụng hai AssetWritters để viết 10 khối thứ hai rồi NSStream những khối 10 giây đó vào máy chủ. Ai đó có thể giải thích cách mã hóa việc sử dụng hai AVAssetWriters làm việc cùng nhau để đạt được điều này. Nếu bất cứ ai có mã họ có thể xin vui lòng chia sẻ.
+0

Bạn có thể chia sẻ những gì bạn đã sử dụng không? –

Trả lời

5

Bạn đang đúng khi cho rằng cách duy nhất để sử dụng các bộ mã hóa phần cứng trên iPhone là bằng cách sử dụng các lớp AVAssetWriter để viết đoạn video được mã hóa vào một tập tin. Thật không may, AVAssetWriter không ghi nguyên tử moov vào tệp (được yêu cầu giải mã video được mã hóa) cho đến khi tệp được đóng.

Vì vậy, một cách để truyền video được mã hóa đến máy chủ là viết 10 khối video thứ hai vào một tệp, đóng nó và gửi tệp đó đến máy chủ. Tôi đã đọc rằng phương pháp này có thể được sử dụng mà không có khoảng trống trong phát lại gây ra bởi việc đóng và mở các tập tin, mặc dù tôi đã không cố gắng này bản thân mình.

Tôi đã tìm thấy một cách khác để phát video here.

Ví dụ này mở 2 AVAssetWriters. Sau đó, trên khung đầu tiên nó ghi vào hai tệp nhưng ngay lập tức đóng một trong các tệp để nguyên tử moov được ghi. Sau đó, với dữ liệu nguyên tử moov, tệp thứ hai có thể được sử dụng làm đường ống để nhận luồng dữ liệu video được mã hóa. Ví dụ này chỉ hoạt động để gửi dữ liệu video nhưng nó rất sạch sẽ và dễ hiểu mã giúp tôi tìm ra cách giải quyết nhiều vấn đề với video trên iPhone.

+0

Tôi có câu hỏi về câu trả lời của bạn, làm cách nào để nhúng dữ liệu âm thanh vào –

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