2011-12-02 17 views
5

Udało mi się nagrać wideo przez Mediarecorder na karcie SD , ale chcę wysłać to wideo na serwer bez zapisywania na karcie SD. Przeszukuję i znalazłem paczkeFileDescriptor jest sposobem wysłania wideo wideo do gniazda TCP , ale nie wiem jak je otrzymać po stronie serwera, proszę to wyjaśnić. tutaj jest mój klient kodu po stronieStrumieniowanie wideo w Androidzie przez parsfileDescriptor

socket = new Socket("hostname", portnumber); 
ParcelFileDescriptor pfd =ParcelFileDescriptor.fromSocket(socket); 
      recorder = new MediaRecorder(); 
      recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 
      recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
      recorder.setOutputFile(pfd.getFileDescriptor()); 
      recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP); 
      mPreview = new Preview(VideoRecorder.this,recorder); 

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
      setContentView(mPreview); 

Chcę otrzymywać je na stronie serwera i grać go do tworzenia powierzchniowej czasu Transer wideo.

wiedząc, że "MediaRecorder rejestruje w formacie 3GPP lub w formacie MP4.Ten format pliku składa się z atomów, gdzie każdy atom zaczyna się od jego rozmiaru.Istnieją różne rodzaje atomów w pliku, atrybuty mdat przechowują rzeczywisty surowiec klatek zakodowanych wideo i audio.W wersji Cupcake Android zaczyna zapisywać atom mdat z zakodowanymi ramkami, ale z oczywistych względów musi pozostawić rozmiar pustego atomu. Gdy piszesz do odpowiedniego deskryptora pliku, może on po prostu wypełnij puste pola po nagraniu, ale oczywiście deskryptory plików gniazd nie są widoczne, więc odebrany strumień będzie musiał zostać naprawiony po zakończeniu nagrywania lub surowe ramki wideo/audio muszą być przetworzone przez serwer ".

Chcę kod boczny serwera (może być Androidem lub PC). jeśli istnieje inny sposób proszę mi pomóc ......

Dzięki

Odpowiedz

2

aby strumień z android lub pc trzeba zaimplementować protokół, nad którym strumień przeniesione i serwera. Jest ich kilka takich jak HSL, RTPS itp. (Więcej http://en.wikipedia.org/wiki/Streaming_media). To nie jest trywialny problem, a tylko nieliczne udane usługi przesyłania strumieniowego od Androida.

Można sprawdzić, w jaki sposób do wdrożenia i serwis parze na Androida tutaj: https://github.com/fyhertz/libstreaming

Biblioteka jest podzielona na Androida 5, ale pracuje dla 4.4.x

+1

Autorka tej biblioteki napisał, że znalazł podstęp, aby działało w systemie Android 5. – CoolMind

+0

czy możesz podać link do tego? Spojrzałem na GitHub i jest tylko komentarz o próbie wsparcia Lolipop. Nie jest jasne, czy działa prawidłowo, czy nie. – Califlower

+0

link z tego GitHub (http://stackoverflow.com/questions/26990816/mediarecorder-issue-on-android-lollipop). Mówi się: "od Androida Lollipop używający LocalSocket nie jest już możliwy ze względów bezpieczeństwa, ale użycie ParcelFileDescriptor pozwala uzyskać więcej szczegółów w pliku MediaStream.java". – CoolMind

Powiązane problemy