El video grabado tiene un giro de 90 grados después de subir a Internet
Encontré que el vídeo grabado en modo vertical girará 90 grados. Así que utilicé el código siguiente para rotarlo cuando fijé el mediaRecorder:
if (this.getResources().getConfiguration().orientation !=Configuration.ORIENTATION_LANDSCAPE) { mediaRecorder.setOrientationHint(270); } else { mediaRecorder.setOrientationHint(0); } mediaRecorder.setOutputFile(file_name); mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
La vista previa también está en la orientación correcta ya que usé el siguiente código en el método surfaceCreated:
- Cómo agregar la función de pausa y reanudar mientras recodifica vídeo en android
- Servidor de la cámara fallecido - El error 100 persiste en algunos dispositivos
- Cómo cambiar la orientación de vídeo en MediaRecorder a retrato
- ¿Hay alguna manera de obtener la duración de la recodificación en curso
- Grabar vídeo con Android de vista de superficie
Camera.Parameters params = camera.getParameters(); if (this.getResources().getConfiguration().orientation !=Configuration.ORIENTATION_LANDSCAPE) { camera.setDisplayOrientation(90); } else { camera.setDisplayOrientation(0); } params.setRotation(90); camera.setParameters(params);
De esta manera, el video grabado se encuentra en la orientación correcta cuando se reproduce en el dispositivo. Sin embargo, el video sigue girando 90 grados después de subir a Internet. ¿Alguien tiene consejos sobre esto? Muchas gracias.
- Android: graba video en alta calidad
- Pausa ... como la aplicación de cámara predeterminada?
- Pruebe a grabar vídeo utilizando la shell de adb screenrecord Android 4.4
- La claridad de video con mi código es poco baja en comparación con la grabación con cámara Android
Algunos reproductores de vídeo consideran la sugerencia de orientación al reproducir un video. Otros jugadores no. Sólo intenta reproducir este video en su PC con Windows Media Player, Quick Time y Real Player y ver las diferencias.
Probablemente el problema no es tu código, sino el reproductor de video que estás usando para ver tu video.
Use mMediaRecorder.setOrientationHint(int)
Esto funciona definitivamente. Es posible que necesite trabajar las diferentes orientaciones para obtener valores int para todas las cámaras en potrait y landscape.