2016-08-04 16 views
14

Hier ist mein Videoview Code streamen. Sie werden von derselben App mit einer benutzerdefinierten Kamera dorthin gesendet. Hier Video-Aufnahme-Parameter ist: (Nur für den Fall etwas mit denen falsch waren, habe ich versucht, jede Kombination, VP8 Format hat Strom, mit Ausnahme der Ausgang keinen Ton hatte und seitlich gedreht)Kann keine Videos

mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER); 
    mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
    mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 

    if (currentCameraId == Camera.CameraInfo.CAMERA_FACING_BACK) { 
     mMediaRecorder.setOrientationHint(90); 
    } else { 
     mMediaRecorder.setOrientationHint(270); 
    } 

    mMediaRecorder.setVideoSize(list.get(sizex).width, list.get(sizex).height); 
    mMediaRecorder.setVideoEncodingBitRate(1500000); 
    mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); 
    mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 
    mMediaRecorder.setVideoFrameRate(30); 
    mMediaRecorder.setMaxDuration(15000); 
    mMediaRecorder.setOutputFile(getVidFile().getAbsolutePath()); 

Ich habe versucht, zu löse das schon lange, aber ich habe jetzt keine Ideen mehr. Ich möchte diese Videos in einer Videoansicht streamen. Aber stattdessen muss ich 10-20 Sekunden warten. Danach startet entweder das Video oder es tritt ein Fehler auf, dass das Video nicht abgespielt werden kann.

Zusätzliche Informationen:

Projektmindest sdk ist 18, aber ich kann es ändern, wenn das helfen.

Mein Testgerät ist Asus Zenfone 2 (5.0)

Ich habe nicht mit einem anderen Gerät testen

Videos in GoDaddy Linux-Host gespeichert sind. www.mydomain.com/videos/

Videokodierung wird h264 Baseline Profile

Moov Atom oben (nach fytp (oder so ähnlich)) ebenso wie

empfohlen

Ich versuchte Drittes Video mit Spieler-Bibliotheken wie exomedia

Einige Videos funktionieren, zum Beispiel:

http://www.html5videoplayer.net/videos/toystory.mp4

Ich überprüfte die Codierung der Videos. Es ist in h264 HAUPTPROFIL kodiert (aus meiner Forschung, Hauptprofil wird nicht für die meisten Android-Geräte unterstützt, Baseline-Profil wird stattdessen empfohlen) und MOOV ATOM ist in der letzten Position. Aber dieses Video spielt einfach gut ... dafuq?

EDIT: Eigenschaften dieses toystory Video, das funktioniert:

1

2

Und hier ist ein Video von meiner app mit parameteres gefangen oben gegeben (man beachte das moov Atom am richtigen Ort ist , aber dies immer noch nicht funktioniert)

3

4

+0

Irgendwelche Störung finden Sie heraus ?? Anstelle von videoview.start() benutze mp.start() –

+1

Jetzt habe ich versucht, mediplayer mit einer Oberflächenansicht und nicht zu vergessen prepareasync anstelle von prepare() zu nennen, hat immer noch nicht funktioniert. E/MediaPlayer: Fehler (1, -2147483648) – user6650650

Antwort

1

Welches Netzwerkprotokoll wird verwendet, wenn Ihr Video von Server zu App gestreamt wird? Möglicherweise wird das von Ihnen verwendete Netzwerkprotokoll von VideoView nicht unterstützt. VideoView unterstützt nur begrenzte Protokolle. Nach android Dokumente auf "Unterstützte Medienformate":

Die folgenden Netzwerkprotokolle werden für die Audio- und Videowiedergabe unterstützt:

--RTSP (RTP, SDP)

--http/HTTPS progressive Streaming --http/HTTPS Live-Streaming-Protokollentwurf:

MPEG-2 TS media files only 

Protocol version 3 (Android 4.0 and above) 

Protocol version 2 (Android 3.x) 

Not supported before Android 3.0 

--Anmerkung: HTTPS nicht vor Android 3.1 unterstützt.

+0

Ich weiß nicht, was ein Netzwerkprotokoll ist. Wie überprüfe ich, welchen ich verwende? – user6650650

+0

Das ist eine Google-Frage – Christopher

+0

Nach Prüfung Ihrer Frage, ich denke, das Netzwerkprotokoll ist Progressive http.That sollte kein Problem sein. Es gibt ähnliche Fragen wie Sie: http://stackoverflow.com/questions/11540076/android-mediaplayer-error-1-2147483648 und http://stackoverflow.com/questions/4728085/cannot-play-certain-videos. Ihre Antworten lauten: "Für 3GPP- und MPEG-4-Container muss das Moov-Atom allen Mdat-Atomen vorausgehen, muss aber dem Typ-Atom folgen." In Ihrer Frage haben Sie erwähnt, dass Ihre Konfiguration "Moov Atom ist oben (nach fytp (oder so ähnlich))". Vielleicht ist das das Problem. –