Upload filmów z Zend_Gdata_YouTube

Pisząc nowy projekt natknąłem na problem z procesem uploadu filmiku do serwisu YouTube. Sam upload jest bardzo łatwy do napisania z Zend_Gdata_YouTubeprzykład można znaleźć w manualu. Myślę, że zainteresowani przeczytają manual i wszystko będzie jasne. Więc jeżeli to takie proste, to w czym problem?

Zakładamy, że userzy uloadują filmiki bezpośrednio na nasz serwis. Nasz serwer ma za zadanie:

  1. Skompresować video i zapisać go w formacie flv.
  2. Nałożyć watermark.
  3. Wysłać obrobiony film do serwisu Youtube logując się na zdefiniowane przez użytkownika konto lub założone przez administratora strony.

Pierwsze 2 kroki wykonają się błyskawicznie w porównaniu do trzeciego. Kompresja i nałożenie watermarku na 30 megowy plik z wykorzystaniem FFMPEG to nic nadzwyczajnego. Natomiast wysyłka pliku na serwery Youtube’a może zawiesić apache’a, gdy jest ich kilka.

Rozwiązanie? Wpadłem na pomysł, aby upload filmików ustawiony był w pewnego rodzaju kolejce, która uruchamiana by była co minutę (cron), a czas jednego wysłania elemntu nie mógłby przekroczyć 50 sekund. Oczywiście takie działanie uruchamiałoby swój osobny proces apache’a. Ten sposób jest ograniczony dwoma limitami: wielkością pliku oraz czasem jego uploadu na serwer (jednocześniem interwałem uruchamiania kolejki).



5 Responses to “Upload filmów z Zend_Gdata_YouTube”

  1. tiraeth says:

    Czemu chcesz używać procesu Apache’a do uploadowania plików na YouTube? Nie wystarczy już umieszczone pliki kolejkować w np. aplikacji napisanej w pythonie lub rubym? Wydaje mi się, że skorzystanie z protokołów http(s) będzie szybsze niż zaprzęganie apache’a do tego.

    Kolejka to kolejka, powinna chodzić 24/7 i być osobnym programem. Sprawdzać stan bazy, np. sqlite, ile plików oczekuje na wysłanie i po kolei je wysyłać (threads).

    Tak przynajmniej ja bym to zrobił. Dwa programiki w Ruby lub C . Jeden kontroluje kolejkę i co jakiś czas wywołuje proces tego drugiego, co wysyła plik. Po wysłaniu “kolejkowicz” wywala plik z kolejki i leci dalej.

  2. Kamson says:

    Taki proces może być napisany w PHP żeby było go łatwiej zintegrować z aplikacją bazową i ni kombinować z innymi językami. Uruchamianie takiego procesu też nie uruchamia apache i działa na zupełnie innych limitach np kompletny brak ograniczenia czasowego działania.

  3. tiraeth says:

    Dobrze, kwestia uruchamiania samego PHP jest już na pewno lepsza niż uruchamianie apache’a, o czym wspomniał autor.

    “Oczywiście takie działanie uruchamiałoby swój osobny proces apache’a.”

  4. angelo says:

    Witam, to mój pierwszy komentarz tutaj, lecz mam pytanie dotyczące właśnie uploadu filmów na youtube. Czy korzystanie z pakietu Zend Framework oraz Youtube API jest jedyną opcją umożliwiającą tego typu upload ? Czy jeśli nie korzystam, z Zend Framework, również mam taką opcję ? Z góry dziękuję za odpowiedź.

  5. Athlan says:

    @angelo: Tak, YT oferuje API, lecz w Zendzie jest to ładnie oprawione w klasy. Szkoda Twojego czasu, aby implementować to po swojemu, szybciej będzie jak postawisz osobną aplikację bazującą na ZF.

Leave a Reply