YUV图像旋转

作者: 玖零儛 | 来源:发表于2020-06-16 15:56 被阅读0次

手机竖屏录制的视频,PC 播放时需要对解码后的数据做下旋转。

视频旋转角度获取

命令行获取

使用 ffprobe.exe,ffprobe video.mp4,会输出视频的详细信息。在视频的 Metadata 的 rotate 属性如果有值的话就是旋转的角度了。

YUV-Rotate-2020-06-16-14-04-03

代码中获取

在获取 video 的 AVStream 时调用:

int getVideoRotation(AVStream *st)
{
    AVDictionaryEntry *rotate_tag = av_dict_get(st->metadata, "rotate", nullptr, 0);
    int rotation = 0;

    if (rotate_tag) {
        rotation = QString(rotate_tag->value).toInt();
    }

    while (rotation < 0) {
        rotation += 360;
    }

    while (rotation > 360) {
        rotation -= 360;
    }

    LOG->info("vodeo rotation: {}", rotation);

    return rotation;
}

旋转 YUV

旋转可以使用 libyuv 这个库,github 地址。旋转相关函数可以看libyuv\include\libyuv\rotate.h。比如将 I420(ffmpeg 里的 YUV420P)旋转 270 度只需要调用:

uchar * i420_y = _pBuffer;
uchar * i420_u = i420_y + (width * height);
uchar * i420_v = i420_y + (width * height) * 5 / 4;

uchar * rotated_y = _pRotateBuffer;
uchar * rotated_u = rotated_y + (width * height);
uchar * rotated_v = rotated_y + (width * height) * 5 / 4;

libyuv::I420Rotate(
        i420_y, width,
        i420_u, (width >> 1),
        i420_v, (width >> 1),
        rotated_y, height,
        rotated_u, (height >> 1),  //90度和270度宽高会互换,步长需要注意
        rotated_v, (height >> 1),
        width, height, libyuv::kRotate270);

libyuv 旋转的同时还能把格式也转换了,比如NV12ToI420Rotate,有需要可以翻头文件看看。

相关文章

  • 文章收藏

    YUV图像的旋转缩放裁剪处理

  • YUV图像旋转

    手机竖屏录制的视频,PC 播放时需要对解码后的数据做下旋转。 视频旋转角度获取 命令行获取 使用 ffprobe....

  • 图像实战 - 旋转RGB、YUV图像

    在开发相机程序显示相机预览数据时,有时相机的位置是固定的,那我们可能会需要用到图像的旋转进行纠正,以获取我们需要的...

  • LibYUV转码裁剪缩放 C++

    32bgra to yuv420转换 yuv420 旋转和镜像 yuv420镜像 yuv保持最大可视范围缩放和裁剪...

  • YUV图像基础知识

    概念 YUV和RGB的功能类似,都是用来表示图像色彩的。但是对于 YUV 所表示的图像,Y 和 UV 分量是分离的...

  • YUV

    在开始学习YUV之前,先向大家介绍一款查看YUV图像的查看工具---YUV Eye[%5Bhttps://www....

  • Android YUV旋转

    1、旋转算法

  • 10bit YUV(P010)的存储结构和处理

    10bit YUV 前面讨论关于 YUV 图像 NV21、YUYV 等格式的处理[https://www.jian...

  • android音视频记录仪工作流程

    视频采集(Camera1 Camera2 CameraX)->一般输出YUV数据(nv21)->YUV处理(旋转、...

  • Opengl ES之YUV数据渲染

    YUV回顾 记得在音视频基础知识介绍中,笔者专门介绍过YUV的相关知识,可以参考:《音视频基础知识-YUV图像》[...

网友评论

    本文标题:YUV图像旋转

    本文链接:https://www.haomeiwen.com/subject/whrrxktx.html