Поверните видео с помощью mp4parser в соответствии с используемой камерой

По сути, я хотел бы повернуть видео в зависимости от того, какая камера использовалась для его съемки.

Фронтальная камера зеркально отражена под углом 90 градусов, а задняя камера отображается правильно. В настоящее время будет установлен Matrix по первому клипу. Если первый клип был сделан фронтальной камерой, то все ролики будут развернуты на 270 градусов и наоборот.

Вот пример кода (rotations – это ArrayList, содержащий повороты клипов):

for (TrackBox trackBox : trackBoxes) {
       Log.d("TRACKBOX", String.valueOf(rotations.get(i)));
       //trackBox.getTrackHeaderBox().setMatrix(Matrix.ROTATE_90);
       if (rotations.get(i) == 90) { //if clip was made with back camera
              trackBox.getTrackHeaderBox().setMatrix(Matrix.ROTATE_90);
              Log.d("Rotating to:", "90 degrees");

       } else if (rotations.get(i) == 270) { // if clip was made with front camera
              trackBox.getTrackHeaderBox().setMatrix(Matrix.ROTATE_270);
              Log.d("Rotating to:", "270 degrees");
       }
       m.addTrack(new Mp4TrackImpl(trackBox));

}
inMovies[i] = m;

person Torsten Ojaperv    schedule 01.02.2014    source источник
comment
Привет, Торстен, я столкнулся с той же проблемой. Вы решили проблему с ориентацией? Если вы решили проблемы, пожалуйста, помогите мне   -  person Murali Ganesan    schedule 13.10.2014
comment
@MuraliGanesan Извините, но я давно не занимался этим проектом. Я, наконец, использовал тактику Instagram, когда вы отключаете переключение камеры после того, как записали один клип с задней / передней камерой.   -  person Torsten Ojaperv    schedule 14.10.2014


Ответы (1)


На самом деле, вы можете вращать видео с помощью этих кодов, нет необходимости использовать библиотеку парсера mp4, настолько сложную.

/**
 *
 * @param mMediaRecorder
 * @return
 */
public static MediaRecorder rotateBackVideo(MediaRecorder mMediaRecorder) {
    /**
     * Define Orientation of video in here,
     * if in portrait mode, use value = 90,
     * if in landscape mode, use value = 0
     */
    switch (CustomCamera.current_orientation) {
        case 0:
            mMediaRecorder.setOrientationHint(90);
            break;
        case 90:
            mMediaRecorder.setOrientationHint(180);
            break;
        case 180:
            mMediaRecorder.setOrientationHint(270);
            break;
        case 270:
            mMediaRecorder.setOrientationHint(0);
            break;
    }

    return mMediaRecorder;
}

/**
 *
 * @param mMediaRecorder
 * @return
 */
public static MediaRecorder rotateFrontVideo(MediaRecorder mMediaRecorder) {
    /**
     * Define Orientation of video in here,
     * if in portrait mode, use value = 90,
     * if in landscape mode, use value = 0
     */
    switch (CustomCamera.current_orientation) {
        case 0:
            mMediaRecorder.setOrientationHint(270);
            break;
        case 90:
            mMediaRecorder.setOrientationHint(180);
            break;
        case 180:
            mMediaRecorder.setOrientationHint(90);
            break;
        case 270:
            mMediaRecorder.setOrientationHint(0);
            break;
    }

    return mMediaRecorder;
}
person Huy Tower    schedule 01.04.2015
comment
Как вращение ФОТО связано с вращением ВИДЕО? - person Torsten Ojaperv; 01.04.2015
comment
Этот пост можно улучшить, если сначала прочитать вопрос и ответить только на заданный вопрос. Вращение фотографий совершенно не имеет отношения к изменению видео. - person colintheshots; 11.06.2015