2016-08-04 41 views
14

akışı olamaz benim videoview kodu: benim sunucuda depolanan oynamaya çalışınİşte videoları

Uri uri = Uri.parse(vidurl); 
    MediaController mediaController = new MediaController(this); 
    videoView.setMediaController(mediaController); 
    videoView.requestFocus(); 
    videoView.setVideoURI(uri); 

    videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer mp) { 
      videoView.start(); 
     } 
    }); 

Videolar. Özel bir kamera kullanarak aynı uygulamadan gönderilir. İşte video yakalama parametreleri bağlıdır: (olanlarla yanlış Hemen durumda bir şey, ben her kombinasyonu denedim çıkış ses yok oldu haricinde VP8 Biçimi, dere yaptı ve yanlara döndürüldü) Ben çalışıyorum

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()); 

Bunu uzun bir süre çözmek ama şimdi fikirlerden çıktım. Bu videoları video görüntüsünde yayınlamak istiyorum. Ama bunun yerine 10-20 saniye beklemek zorundayım. Bundan sonra, ya video başlar ya da bana video oynatılamaz bir hata verir.

ek bilgiler:

Proje asgari sdk 18, ama bu yardımcı olacaktır eğer bunu değiştirebilir.

Benim test cihazı Asus Zenfone 2 (5.0)

Ben

Videolar godaddy linux konak saklanır başka bir cihazla test etmedi olduğunu. www.mydomain.com/videos/

Video kodlama Temel Profilini H264 edilir

Moov atomu ben üçüncü parti video kullanarak çalıştı

tavsiye tıpkı (fytp (veya böyle bir şey) sonra) üst kısmındadır exomedia

Bazı videolar gibi oyuncu kütüphaneler, örneğin işi yaparken

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

Video kodlamasını kontrol ettim. H264 MAIN PROFILE'da kodlanmıştır (araştırmamdan, ana profil android cihazların çoğu için desteklenmemektedir, bunun yerine temel profil önerilir) VE MOOV ATOM SON KONUMDA IS. Ama bu video gayet iyi çalışıyor ... Dafuq?

DÜZENLEME: çalıştığını toystory videonun Özellikleri: Yukarıda verilen PARAMETRELER ile benim app yakalanan bir video burada

1

2

Ve (film atomu doğru yerde olduğunu fark ama bu yine de

3

) çalışmıyor

4

+0

Bulunduğunuz herhangi bir hata? Videoview.start() yerine mp.start() kullanın –

+1

Şimdi bir surfaceview kullanarak mediclayer kullanmayı denedim ve prepare() yerine readyeasync'i çağırmayı unutmamak, hala işe yaramadı. E/MediaPlayer: Hata (1, -2147483648) – user6650650

cevap

1

Videonuz sunucudan uygulamaya geçtiğinde hangi ağ protokolü kullanılır? Belki de kullandığınız ağ protokolü VideoView tarafından desteklenmiyor. VideoView sadece sınırlı protokolleri destekler."Desteklenen medya biçimleri" konulu android belgelere göre :

--RTSP (RTP, SDP)

--HTTP/HTTPS ilerici:

Aşağıdaki ağ protokolleri ses ve video oynatma için desteklenir akış --HTTP/HTTPS canlı taslak protokolü:

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 

--Note: HTTPS Android 3.1 önce desteklenmemektedir.

+0

Ağ protokolünün ne olduğunu bilmiyorum. Hangisini kullandığımı nasıl kontrol ederim? – user6650650

+0

Bu bir Google – Christopher

+0

sorudur. Sorunuzu tekrar inceledikten sonra, kullandığım ağ protokolünün Aşamalı olduğunu düşünüyorum. Bu bir sorun olmamalı. Sizinkilere benzer sorular var: http: //stackoverflow.com/questions/11540076/android-mediaplayer-error-1-2147483648 ve http://stackoverflow.com/questions/4728085/cannot-play-certain-videos. Cevapları "3GPP ve MPEG-4 konteynerleri için, moov atomunun herhangi bir mdat atomundan önce gelmesi gerekiyor, ancak ftyp atomunu başarılı olması gerekiyor." Sorunuzda, yapılandırıcınızdan "Moov atomunun en üstte (fytp (ya da bunun gibi bir şeyden sonra)) olduğunu belirttiniz." .Belki sorun budur. Buna göre –