2012-04-22 14 views
6

Próbuję napisać aplikację, która przesyła filmy z telefonów z systemem Android podczas ich zapisywania, czytając z pliku .mp4 i przesyłając bajty, ponieważ są zapisywane do pliku. Problem polega na tym, że o ile wiem, atom moov i niektóre inne dane nie wydają się zapisywane do pliku, dopóki nagranie wideo się nie zakończy i plik wideo zostanie zamknięty. Czy istnieje jakiś sposób, aby przetworzyć plik wideo i dodać te metadane na stronie serwera zakładając alboJak przesłać wideo z telefonu (z Androidem) podczas nagrywania

  1. Pełne plik wideo został przesłany (ale bez atomu moov lub jakiekolwiek inne dane, które nie zostanie napisane na pierwsze przejście)
  2. Tylko część wideo została przesłana (np. pierwsze 10 sekund) i chcę ją przekonwertować do poprawnego pliku mp4 zawierającego przesłany segment wideo.

Widziałem linki jak http://www.mattakis.com/blog/kisg/20090708/broadcasting-video-with-android-without-writing-to-the-file-system ale zatuszowania problemu, po prostu stwierdzając

Więc odebrany strumień będzie musiała zostać ustalona po zakończeniu nagrywania lub surowe wideo/audio ramki muszą być przetwarzane przez serwer.

bez wyjaśnienia, jak dokładnie to zrobić.

Odpowiedz

4

Jak już zauważyłeś, format MP4 może być trudny w użyciu w takich sytuacjach. Podejrzewam, że połączony wpis na blogu nie zawiera szczegółowych informacji o "naprawianiu", ponieważ może być dość zaangażowany. Oprócz wpisania pola brakującego rozmiaru pola mdat, musisz wygenerować pola typu ftyp i moov. Jeśli naprawdę potrzebujesz kompleksowego rozwiązania MP4, ISO 14496-12 i ISO 14496-14 powie Ci więcej, niż kiedykolwiek chciałeś wiedzieć, jak budować te struktury danych.

Jednak może się okazać, że bardziej eleganckim rozwiązaniem jest użycie formatu, który jest faktycznie dostosowany do przetwarzania w czasie rzeczywistym. Innymi słowy, po stronie Androida, remux strumień wideo do formatu w czasie rzeczywistym i wysłać go na serwer. Po stronie serwera masz dużą swobodę przetwarzania wideo: możesz ponownie spakować cały film do MP4, możesz kroić i kroić kostki, tworzyć 10-sekundowe porcje lub cokolwiek innego. Projekt Sipdroid z otwartym kodem źródłowym, contains some code, który demonstruje remarketingowe wideo na żywo w RTP. (Możesz preferować niezawodny format transmisji - RTP przez TCP lub cokolwiek - zasada jest taka sama.)

+0

Dzięki za poradę. Patrzę teraz na projekt ipcamera-for-android, który wykorzystuje FLV jako format transportu. Jeśli nie będę w stanie sprawić, żeby ta ulica działała, przyjrzę się Sipdroidowi. – velocipedestrian

Powiązane problemy