2012-09-02 27 views
10

Tôi đang tìm cách triển khai DRM trong trình phát video iOS, nhưng tôi không chắc chắn cách triển khai DRM này. Để triển khai DRM video (trong khi vẫn đang sử dụng giải mã H264 tăng tốc phần cứng của Apple), tôi cần một cách để nạp luồng H264 đã giải mã vào API phát lại video chuẩn của iOS.Cách triển khai DRM video trong iOS

Theo this question, không thể triển khai DRM của bên thứ ba vào tháng 9 năm 2010. Có một thread in the Apple Developer Forums không hoạt động. Tuy nhiên, hiện tại có một số thư viện DRM bên thứ ba tồn tại: Widevine, Irdeto (PDF), Marlin. Họ đã tìm thấy một số cách để truyền một luồng tùy chỉnh tới trình phát phương tiện trong các ứng dụng được Apple phê duyệt.

Tôi đã tìm thấy hai khách hàng tiềm năng. Một là một gợi ý cho create a custom URL protocol, nhưng mọi người dường như có thành công kém khi sử dụng video này với video. Cách khác là tạo một luồng máy chủ HTTP cục bộ và cung cấp nội dung bằng cách phát trực tuyến HTTP trên 127.0.0.1 bên trong iDevice. Tôi muốn rất chắc chắn rằng Apple sẽ chấp thuận trước khi đi tuyến đường đó.

Vậy - những gì Apple đã phê duyệt API thực hiện DRM bên thứ ba sử dụng để nhận dữ liệu video được giải mã vào trình phát video?

Chỉnh sửa: latest BBC iPlayer for iOS cho phép các chương trình được tải xuống để xem sau. Hoặc là họ lưu trữ nội dung trong rõ ràng, hoặc họ đã giải quyết vấn đề này.

+1

Về luồng trực tiếp HTTP trên 127.0.0.1 Tôi có thể cho bạn biết rằng nó hoạt động và được chấp nhận bởi Apple. Các giải pháp thương mại như Verimatrix sử dụng phương pháp này. –

+0

Cảm ơn bạn - Tôi đã không gặp Verimatrix trước đây, và tôi sẽ thêm nó vào danh sách của chúng tôi. –

+0

kiểm tra bài viết này mà tôi đã viết gần đây: http://aameer.github.io/articles/digital-rights-management-multi-drm/ nó giải thích chi tiết về làm thế nào để đạt được đa drm – Aameer

Trả lời

2

Bạn có thể bắt đầu giải mã tệp vào một tệp khác và phát lại tệp đó khi bạn giải mã. Bạn sẽ cần phải để cho nó đệm một vài giây giá trị của video, nhưng nó sẽ làm việc.

Ngoài ra, bạn cần đảm bảo rằng nguyên tử moov là TRƯỚC nguyên tử mdat trong tệp, nếu không nó sẽ không hoạt động. (AVFoundation, ví dụ, tạo MP4 nơi nguyên tử moov xuất hiện sau nguyên tử mdat và do đó chúng cần phải được sửa đổi để hoạt động)

+0

Cảm ơn - Tôi kiểm soát mã hóa, do đó thứ tự nội bộ của tệp phải đơn giản. Điều đó khiến tôi gặp phải một số vấn đề - liệu tôi có thể xử lý các nỗ lực của người dùng để tìm kiếm trong video hay không và phải làm gì với tệp được giải mã lớn trong hệ thống tệp. Tôi không nghĩ rằng iOS hỗ trợ các tập tin thưa thớt, vì vậy tôi có thể sẽ cần phải chia video thành các phần tương tự như HLS để làm cho điều này dễ quản lý. –

+0

Vâng tôi không thể cho bạn biết giải pháp phù hợp trong trường hợp của bạn là gì. Để tìm kiếm, bạn có thể sử dụng nguyên tử phụ của nguyên tử 'stbl' để tìm ra vị trí trong tệp mà bạn nên giải mã và sau đó giải mã từ đó vào một tệp mới. Tôi nghĩ rằng để làm điều này cũng sẽ là một bài tập thú vị trong việc lạm dụng các container MP4. Có thể bạn cũng muốn tránh giải mã toàn bộ cùng một lúc, nhưng bạn có thể tránh điều đó một cách dễ dàng bằng cách sử dụng nhiều trình phát aassetreaders – jgh

+0

Tôi nghĩ mọi câu trả lời sẽ là một hack, và chúng tôi chỉ mới bắt đầu xem xét kiến ​​trúc cho Android phiên bản. Tôi đã ngạc nhiên bởi mức độ hạn chế của các API di động này so với DirectShow. –

1

Giải pháp làm việc là máy chủ http địa phương. Nhưng ứng dụng bằng sáng chế đã được gửi bởi Authentec.

http://www.google.com/patents/US20120284802

+2

Họ đang gửi bằng sáng chế cho điều đó? Chà ... – jgh