No se pueden transmitir vídeos
Aquí está mi código de videoview:
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(); } });
Los vídeos que intento reproducir se almacenan en mi servidor. Se envían allí desde la misma aplicación, utilizando una cámara personalizada. Aquí está la captura de vídeo parámetros: (Sólo en caso de que algo estuviera mal con ellos, he intentado cada combinación, Formato VP8 hizo corriente, excepto la salida no tenía audio y se giró hacia los lados)
- MediaMuxer no puede hacer MP4 que son streamable
- VideoView: IllegalStateException en MediaPlayer.getVideoWidth
- Android Mostrar MediaController
- ¿Cómo puedo capturar una grabación de vídeo en Android?
- ¿Cómo subir videos a youtube en android?
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());
He estado tratando de resolver esto por mucho tiempo, pero ahora no tengo ideas. Me gustaría transmitir esos videos en un videoview. Pero en lugar de eso, tengo que esperar 10-20 segundos. Después de eso, el video se inicia o me da un error que el video no se puede reproducir.
Información Adicional:
El proyecto sdk mínimo es 18, pero puedo cambiarlo si eso me ayudará.
Mi dispositivo de prueba es Asus Zenfone 2 (5.0)
No probé con ningún otro dispositivo
Los videos se almacenan en el host linux de godaddy. Www.mydomain.com/videos/
La codificación de vídeo es h264 Baseline Profile
Moov átomo está en la parte superior (después de fytp (o algo así)) como se recomienda
Intenté usar bibliotecas de reproductores de vídeo de terceros como exomedia
Algunos videos funcionan, por ejemplo:
He comprobado que los videos de codificación. Está codificado en h264 PERFIL PRINCIPAL (de mi investigación, el perfil principal no es compatible con la mayoría de los dispositivos de Android, el perfil de línea de base se recomienda en su lugar) Y MOOV ATOM ESTÁ EN ÚLTIMA POSICIÓN. Pero este video juega muy bien … ¿dafuq?
EDIT: Propiedades de ese video toystory que funciona:
1
2
Y aquí hay un video capturado desde mi aplicación con los parámetros dados arriba (observe que el átomo moov está en el lugar correcto, pero esto todavía no funciona)
3
4
- Escala proporcional de Android VideoView
- ¿Cómo podemos reproducir código incrustado de YouTube en una aplicación de Android mediante webview?
- ¿Establecer el tiempo de espera de MediaPlayer?
- No se puede eliminar la caché en xperia mini
- Grabación de vídeo en Android usando JavaCV (Actualizado 2014 02 17)
- HTML5 Lienzo drawImage con fuente de video que no funciona en Android
- Cómo agregar reproducción de vídeo y recursos a la aplicación Android
- Imposible mezclar archivos de audio y archivos de video usando MediaMuxer?
¿Qué protocolo de red se utiliza cuando el vídeo se transmite de servidor a aplicación? Quizás el protocolo de red que está utilizando no sea compatible con VideoView. VideoView sólo admite protocolos limitados. Según los documentos de android en "Formatos de medios compatibles":
Los siguientes protocolos de red son compatibles con la reproducción de audio y vídeo:
– RTSP (RTP, SDP)
–HTTP / HTTPS transmisión progresiva –HTTP / HTTPS transmisión en vivo proyecto de protocolo:
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
–Nota: HTTPS no es compatible con Android 3.1.
- Rellenar los datos en un mapa de bits de Android tan pronto como sea posible desde C
- InterruptedException al depurar la aplicación de Android