ffmpeg--处理视频旋转

保持旋转

ffmpeg -noautorotate  -i IMG_1182.mp4   -vcodec h264 -c:a copy  1.mp4

去掉旋转

旧的ffmpeg,如果视频带旋转标识,转码后(如切ts),播放起来视频有角度,新的ffmpeg(313)已修复此问题。

相关代码在ffmpeg_filter.c的configure_input_video_filter。
  if (ist->autorotate) {       //在ffmpeg_opt.c的add_input_streams函数,默认设置为1
        double theta = get_rotation(ist->st);
        if (fabs(theta - 90) < 1.0) {
            ret = insert_filter(&last_filter, &pad_idx, "transpose", "clock");
        } else if (fabs(theta - 180) < 1.0) {
            ret = insert_filter(&last_filter, &pad_idx, "hflip", NULL);
            if (ret < 0)
                return ret;
            ret = insert_filter(&last_filter, &pad_idx, "vflip", NULL);
        } else if (fabs(theta - 270) < 1.0) {
            ret = insert_filter(&last_filter, &pad_idx, "transpose", "cclock");
        } else if (fabs(theta) > 1.0) {
            char rotate_buf[64];
            snprintf(rotate_buf, sizeof(rotate_buf), "%f*PI/180", theta);
            ret = insert_filter(&last_filter, &pad_idx, "rotate", rotate_buf);
        }
        if (ret < 0)
            return ret;

    }


堆栈为:

ffmpeg--处理视频旋转_第1张图片




你可能感兴趣的:(ffmpeg--源码)