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:
- Grabar vídeo con Android de vista de superficie
- Pausa ... como la aplicación de cámara predeterminada?
- La claridad de video con mi código es poco baja en comparación con la grabación con cámara Android
- Servidor de la cámara fallecido - El error 100 persiste en algunos dispositivos
- Android: graba video en alta calidad
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.
- Cómo cambiar la orientación de vídeo en MediaRecorder a retrato
- Pruebe a grabar vídeo utilizando la shell de adb screenrecord Android 4.4
- Cómo agregar la función de pausa y reanudar mientras recodifica vídeo en android
- ¿Hay alguna manera de obtener la duración de la recodificación en curso
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.