Streaming wideo z kamery Android na serwer

286

Widziałem wiele informacji o tym, jak przesyłać strumieniowo wideo z serwera na urządzenie z Androidem, ale niewiele o drugiej stronie, ala Qik. Czy ktoś mógłby skierować mnie tutaj we właściwym kierunku lub udzielić porady, jak do tego podejść?

JCL
źródło
9
Chciałbym również zobaczyć odpowiedź na to pytanie. Czy już coś wymyśliłeś?
Jeremy White
Nie, zrezygnowałem z streamingu. Samo pokonanie interfejsu API MediaRecorder było wystarczająco trudne. Możesz jednak sprawdzić kod sipdroida, wydaje się, że zadziałał.
JCL
Kod wideo nie znajduje się jednak w źródle Sipdroid online :(
Donal Rafferty,
1
Możesz zajrzeć do ffserver komponentu w ffmpeg.
Vinay,
1
Mam pytanie związane z tym, które może Cię również zainteresować. Dotyczy przesuwania strumienia wideo ponad 3g po zakończeniu przechwytywania wideo i części kontenera. bit.ly/vYpWGy
Michael

Odpowiedzi:

123

Prowadziłem projekt typu open source, aby włączyć telefon z Androidem do kamery IP:

http://code.google.com/p/ipcamera-for-android

Nieprzetworzone dane wideo są pobierane z LocalSocket, a MDAT MOOV MP4 został sprawdzony przed strumieniowaniem. Wideo na żywo jest pakowane w formacie FLV i można je odtwarzać za pomocą odtwarzacza wideo Flash z wbudowanym serwerem internetowym :)

Zhou Chang
źródło
26
Kliknij przycisk „Źródło”. Ponadto każdy, kto ocenił tego faceta, jest narzędziem.
Nicholi,
3
Daje mi błędy .. jak java.lang.UnsatisfiedLinkError: Nie można załadować teaonly: findLibrary zwrócił wartość null .. Jeśli ktoś ma rozwiązanie, udostępnij je. Dzięki
anddev,
1
@mpp: Aplikacja ma kod NDK. Możesz go skompilować samodzielnie lub pobrać pliki .so z aplikacji, która znajduje się w tym projekcie Google Code pod „Pobraniami”.
Turnsole
1
Dostaję również błąd java.lang.UnsatisfiedLinkError. Proszę krótko podać kroki, aby usunąć ten błąd.
1
Dla tych, którzy nie rozumieją błędu UnsatisfiedLinkError: musisz zbudować kod C za pomocą NDK. Po prostu biegnij ndk-build. Aby uzyskać więcej informacji, przeczytaj dokumentację NDK .
Paul Lammertsma
70

Zajęło mi to trochę czasu, ale w końcu udało mi się stworzyć aplikację, która właśnie to robi. Sprawdź stronę kodową Google, jeśli jesteś zainteresowany: http://code.google.com/p/spydroid-ipcamera/ Dodałem mnóstwo komentarzy do mojego kodu (głównie spójrz na CameraStreamer.java), więc powinno być całkiem oczywiste. Trudność polegała na zrozumieniu RFC 3984 i wdrożeniu odpowiedniego algorytmu dla procesu pakietowania. (Ten algorytm faktycznie zamienia strumień mpeg4 / h.264 wytwarzany przez MediaRecorder w ładny strumień rtp, zgodnie z rfc)

PA

Szymon
źródło
2
Wielkie dzięki! Obecnie nie mogę sprawić, aby działał poprawnie z h264 .. i nie mogę go zmienić na h263 (nie mam pojęcia, jak to zrobić). w każdym razie dzięki dzięki!
Głosy
1
Używam tego samego, ale jeśli chodzi o przesyłanie strumieniowe na Androida z rtsp, mówi, że wideo nie może być odtwarzane. Używam VideoView. Czy możesz mi pomóc?
Rohit Mandiwal
1
Działa świetnie (do tej pory!) Używam go do przesyłania strumieniowego wideo ze Szkła (po trochę pracy / edycji / wymyśleniu), ale do tej pory mogę go połączyć tylko z przeglądarki Windows (Chrome) z wtyczka VLC. VLC na Androidzie / iPadzie lub innym odtwarzaczu rtsp nie odbierze strumienia (jeden z nich wyglądał dobrze, ale próbował uzyskać strumień na podstawie nazwy urządzenia, który ten kod zwrócił jako 0 i dlatego nie można go odczytać). Mimo to dzięki tobie osiąganie wyników po całym dniu kodowania, więc chwała!
MacD
@MacD Czy używasz kodu spydroid-ipcamera (cały projekt czy tylko niektóre klasy? Czy możesz mi powiedzieć?) Lub tej biblioteki github.com/fyhertz/libstreaming do przesyłania strumieniowego w Google Glass? Wielkie dzięki!!
Bae
Cześć, czy mógłbyś wyjaśnić, jak wdrożyć ten projekt w Android Studio? Nie mogę go uruchomić
utdev
24

Też się nad tym zastanawiam i chociaż nie mam dla ciebie dobrego rozwiązania, udało mi się wykopać kod wideo SIPDroid:

http://code.google.com/p/sipdroid/source/browse/trunk/src/org/sipdroid/sipua/ui/VideoCamera.java

ObsidianX
źródło
To, co tam zrobili, polega na przesyłaniu strumieniowym za pomocą pakietów RTP na serwer. Pytanie, co się dzieje na serwerze? co to jest
transkodowanie
Nie .. Nie poszedłem do SIPDroid Approach, było to zbyt skomplikowane .. Potem zrobiłem coś z MJPEGServer
Azlam
19

Zbudowałem zestaw SDK typu open source o nazwie Kickflip, aby strumieniowe przesyłanie wideo z Androida było bezbolesne.

Zestaw SDK demonstruje użycie interfejsu MediaCodec API systemu Android 4.3 do kierowania pakietów kodera sprzętowego urządzenia bezpośrednio do FFmpeg dla RTMP (z librtmp) lub przesyłania strumieniowego HLS H.264 / AAC. Pokazuje także efekty OpenGL w czasie rzeczywistym (tytuł, kluczowanie, zanikanie) i nagrywanie w tle.

Dzięki SO, a zwłaszcza wyblakłe .

dbro
źródło
czy może przesyłać strumieniowo do dowolnego klienta obsługującego HLS (nie tylko do twojego serwera)?
4ntoine,
4
@dbro Próbuję dowiedzieć się o Twojej usłudze, ale potrzebujesz informacji o moim logowaniu, zanim zobaczę Twoją cenę. To tak, jakbyście zbierali adresy e-mail. Jeśli nie jest to twoją intencją, powinieneś udostępnić informacje o cenach: tak samo jak Parse i App Engine i wiele innych.
uczeń
Czy kamera wideo może wysłać film do Kickflip, a następnie do telefonu z Androidem? Jeśli es, który typ kamery wideo jest odpowiedni do tego
Lutaaya Huzaifah Idris
11

Oto pełny artykuł na temat przesyłania strumieniowego wideo z kamery z Androidem na stronę internetową.

Android Streaming wideo z kamery na żywo do strony internetowej

  1. Wykorzystano libstreaming w aplikacji na Androida
  2. Po stronie serwera Wowza Media Engine służy do dekodowania strumienia wideo
  3. Wreszcie jWplayer służy do odtwarzania wideo na stronie internetowej.
Sługus
źródło
Używa komponentów o zamkniętym źródle. Jakieś alternatywy open source?
Raj
Możesz użyć JavaCV do tego. Użyłem go w moim projekcie do przesyłania strumieniowego na żywo z urządzenia z Androidem do serwera medialnego wowza,
Chinthaka Devinda
czy libs streaming jest darmowy?
Akrramo
czy możemy używać urządzenia karty dźwiękowej jako źródła wejściowego audio, a nie mikrofonu w transmisji strumieniowej?
user2980181,
5

Jestem w stanie wysłać wideo z kamery na żywo z telefonu komórkowego na mój serwer. Używając tego linku zobacz link

Zobacz powyższy link. W tym łączu znajduje się przykładowa aplikacja. Wystarczy ustawić adres usługi w RecordActivity.class.

Przykład jako: ffmpeg_link = "rtmp: // yourserveripaddress: 1935 / live / venkat";

za pomocą tego linku możemy wysyłać filmy typu H263 i H264.

Venkat
źródło
Użyłem kodu za pomocą powyższego linku, ale nie mogłem nawet rozpocząć nagrywania. uzyskiwanie wyjątku „Brak wideo do strumieniowania”. Czy masz jakiś pomysł na ten temat?
Akhilesh Sk
@AkhileshSk za pomocą powyższego kodu możesz wysłać wideo na żywo za pośrednictwem adresu URL rtmp na swój serwer. nie jest przeznaczony do nagrywania. jeśli chcesz nagrać wideo, musisz je nagrać po stronie serwera.
Venkat
Hej @ Venkat, czy można wysłać wideo na żywo z aparatu do telefonu z Androidem, czy masz jakieś linki do kodu, takie jak korzystanie z Youtube na żywo itp.
Lutaaya Huzaifah Idris
@LutaayaHuzaifahIdris tak, to możliwe. Pracowałem nad tym wcześniej.
Venkat
Cześć @Venkat, możesz mi pomóc z tym, że nie mogę znaleźć pliku
RecordActivity.class
1

Sprawdź bibliotekę Yasea

Yasea to klient przesyłania strumieniowego na Androida. Koduje dane YUV i PCM z kamery i mikrofonu do H.264 / AAC, hermetyzuje w FLV i przesyła przez RTMP.

Funkcja:

  1. Android mini API 16.
  2. Twarde kodowanie H.264 / AAC.
  3. Miękkie kodowanie H.264.
  4. Strumieniowe przesyłanie RTMP z obsługą stanu wywołania zwrotnego.
  5. Dynamiczna orientacja pionowa i pozioma.
  6. Przełącznik gorącej przedniej i tylnej kamery.
  7. Nagrywanie do MP4 podczas przesyłania strumieniowego.
Hamed Ghadirian
źródło
0

Mux (moja firma) ma otwartą aplikację na Androida, która przesyła strumieniowo RTMP na serwer, w tym konfiguruje kamerę i interakcje użytkownika. Jest zbudowany do przesyłania strumieniowego do interfejsu API transmisji strumieniowej na żywo Mux, ale może łatwo przesyłać strumieniowo do dowolnego punktu wejścia RTMP.

heff
źródło
-7

W zależności od budżetu możesz użyć aparatu Raspberry Pi, który może wysyłać zdjęcia na serwer. Dodaję tutaj dwa samouczki, w których można znaleźć wiele innych szczegółów:

W tym samouczku pokazano, jak korzystać z aparatu Raspberry Pi i wyświetlać obrazy na urządzeniu z Androidem

To drugi samouczek, w którym można znaleźć serię samouczków na temat przesyłania strumieniowego wideo w czasie rzeczywistym między kamerą a urządzeniem z Androidem

Ezu
źródło
poza kontekstem
Vikas Kandari