2013-06-10 45 views

Trả lời

5

Cập nhật cho năm 2017:

Bạn có thể làm Streaming video và âm thanh bây giờ bằng cách sử dụng VideoToolbox API. Đọc tài liệu ở đây: VTCompressionSession

Original câu trả lời (từ năm 2013):

viết tắt: Bạn có thể không, bộ đệm mẫu mà bạn nhận được là không nén.

phương pháp để có được phần cứng tăng tốc nén h264:

Như bạn có thể nhìn thấy cả hai ghi vào một tập tin, văn bản cho một đường ống không hoạt động như các bản cập nhật encoder thông tin tiêu đề sau một khung hoặc GOP đã được viết hoàn toàn. Vì vậy, bạn tốt hơn không chạm vào tập tin trong khi bộ mã hóa ghi vào nó vì nó viết lại thông tin tiêu đề một cách ngẫu nhiên. Nếu không có thông tin tiêu đề này, tệp video sẽ không thể phát (nó cập nhật trường kích thước, do đó tiêu đề đầu tiên được viết cho biết tệp là 0 byte). Ghi trực tiếp vào vùng bộ nhớ hiện không được hỗ trợ. Nhưng bạn có thể mở tệp video được mã hóa và hủy luồng để truy cập dữ liệu h264 (sau khi bộ mã hóa đã đóng tệp khóa học)

7

Bạn chỉ có thể nhận được hình ảnh video thô ở định dạng màu BGRA hoặc YUV từ AVFoundation. Tuy nhiên, khi bạn viết những khung hình đó vào một mp4 qua AVAssetWriter, chúng sẽ được mã hóa bằng cách sử dụng mã hóa H264.

Một ví dụ điển hình với mã trên làm thế nào để làm điều đó là RosyWriter

Lưu ý rằng sau mỗi lần AVAssetWriter ghi, bạn sẽ biết rằng một hoàn H264 NAL được ghi vào một mp4. Bạn có thể viết mã đọc toàn bộ H264 NAL sau mỗi lần ghi bởi AVAssetWriter, nó sẽ cho phép bạn truy cập vào một khung mã hóa H264. Nó có thể mất một chút để làm cho nó đúng với tốc độ khá, nhưng nó là doable (tôi đã làm nó thành công).

Nhân tiện, để giải mã thành công các khung video được mã hóa này, bạn sẽ cần thông tin SPS và PPS H264 nằm ở một vị trí khác trong tệp mp4. Trong trường hợp của tôi, tôi thực sự tạo ra một vài tập tin mp4 thử nghiệm, và sau đó tự giải nén chúng ra. Vì những thay đổi đó không thay đổi, trừ khi bạn thay đổi thông số mã hóa H264, bạn có thể sử dụng chúng trong mã của bạn.

Kiểm tra bài đăng của tôi tới SPS values for H 264 stream in iPhone để xem một số SPS/PPS tôi đã sử dụng trong mã của mình.

Chỉ cần lưu ý cuối cùng, trong trường hợp của tôi, tôi phải truyền các khung được mã hóa h264 đến điểm cuối khác để giải mã/xem; vì vậy mã của tôi phải làm điều này nhanh chóng.Trong trường hợp của tôi, nó tương đối nhanh; nhưng cuối cùng tôi chuyển sang VP8 để mã hóa/giải mã chỉ vì nó nhanh hơn vì mọi thứ đã được thực hiện trong bộ nhớ mà không cần đọc/ghi tệp.

Chúc may mắn và hy vọng thông tin này sẽ hữu ích.