Кой е най-добрият начин за защита на псевдопоточно mp4 видео (flash, html5, компютър, iOS)?

Търся начин да позволя на моите клиенти (влезли) да гледат mp4 видеоклипове на моя уебсайт.

  • Не искам да могат да изтеглят видеото или поне да го затрудняват много.
  • Сървърът е linux / приложението е PHP
  • Искам клиентите ми да могат да гледат видеоклиповете в компютърен уеб браузър или на iOS/Safari устройство (което означава без флаш).
  • Трябва да е безплатно или наистина евтино (да не хоствам видеоклипове на доставчик на облачна база за хиляди долари всеки месец например).

До сега правех следното:

  • php псевдо стрийминг на flv файлове (известен като xmoov). С помощта на php успях да извърша сигурни проверки, преди да върна съдържанието на потока (променливи на сесиите, токен,...) Но не работи на iOS, тъй като flv видеоклиповете се нуждаят от флаш, за да се възпроизвеждат. Освен това не е толкова сигурно, защото обикновено разширение на firefox като Video Download Helper може да ги изтегли.
  • така че кодирах видеоклиповете си в mp4, което работи добре с html5/iOS, но прави „сигурния“ аспект на процеса много по-труден: изглежда много трудно да се направи php псевдо стрийминг. Не намерих никакво работещо решение и изглежда, че всички се отдалечават от него, защото отнема твърде много ресурси (1 php процес за всяко видео по време на стрийминг на цялото съдържание на файла).

Така че най-доброто решение, което намерих, са 2-те класически плъгина на Apache: „H264 Streaming Module“ и „Mod Auth Token“. Добре, по-добре е, но изглежда задънена улица, защото за да бъде ефективно, времето за изчакване на токена за удостоверяване трябва да е много кратко (по-малко от 5 секунди, за да затрудни много намирането на объркания URL адрес в html източника и копирането/поставянето му в приложение за изтегляне или стартиране на скрипт или ...), но това означава, че клиентът трябва да стартира видеоклипа в рамките на този период от време (на iOS няма начин за автоматично стартиране на видеоклипа). Това също означава, че клиентът не може да търси в „вече неизтеглена“ част от видеоклипа, тъй като плейърът (използвам JWplayer) прави ново http извикване към URL адреса, което очевидно вече не работи поради таймаут.

Мислех си за видео флаш плейър, който може сам да генерира обфусцирания url (а не php да го извежда в html източника), но няма да работи на iOS, защото е базиран на флаш. Ако използвам това на компютри и html5/auth_token на iOS (базирано на потребителски агент), е много лесно да подправя потребителския агент и да изтегля видеоклиповете.

Друго решение изглежда използва "истински" сървър за видео стрийминг, като Red5, но почти всеки урок, който намерих, е за стрийминг на живо, телевизори, уеб камери, а не прости mp4 файлове, разположени на твърд диск. Също така изглежда, че не е приложението, създадено за този тип нужди.

Така че съм отворен за всяко предложение!

Благодаря предварително


person spf    schedule 12.11.2012    source източник
comment
Ето защо е изобретено управлението на цифрови права (DRM). Имате много опции от страна на браузъра, но нито една не е безплатна или евтина или не работи за браузър И iOS веднага (MS PlayReady / Flash Access). Определено бих избрал DRM доставчик като buydrm.com или wowza.com, който изглежда добре се интегрира с buydrm.com   -  person Sebastian Annies    schedule 13.11.2012


Отговори (2)


Подредих това за FLV файлове с помощта на S3 на Amazon:

http://evolt.org/s3secure

Работя върху това да го направя за MP4, но опитът ми е в уеб неща, а не във видео неща.

person Joel D Canfield    schedule 15.12.2012

И аз се намирам в същата ситуация.

Използвам flowplayer и получавам FLV за псевдо стрийминг добре, като използвам сървърен скрипт (PHP), подобен на xmoov, с всички валидации, които споменавате.

Имам 1 съвет за вас: Използвам, АКО $start е 0, токенът работи само за 3 секунди (така че няма нови могат да се правят заявки), но АКО $start е > 0, тогава работи за 10 минути или малко повече.

По този начин хората ще могат да търсят други части от видеоклипа, но не и да правят пълна заявка. Можете също така да направите това $start ограничение по-голямо от X байта, вместо >0, за да сте сигурни, че умниците няма да пропуснат валидирането ви.

Сега, по отношение на MP4 псевдо-стрийминг с помощта на същия скрипт, все още имам проблеми. тъй като стойността на $start се изпраща като секунди (т.е.: ?start=32.125), вместо позиция в байтове, изглежда не мога да направя видео псевдопоток.

Ако сте намерили решение (без повече от mod_h264_streaming), ще се радвам да го чуя.

person Dandy    schedule 15.04.2013