ffmpeg旋转详解

一、ffmpeg旋转视频

什么是ffmpeg旋转视频?通过修改视频中每一帧图像的角度,达到整个视频的旋转效果,是对视频方向进行变更的操作。

常用的旋转角度有90度、180度、270度和任意角度。

在ffmpeg中旋转视频通过旋转输入的码流来完成,修改视频中每一帧图像的角度实现整个视频的旋转效果。

//旋转90度
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4

//旋转180度
ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4

//旋转270度
ffmpeg -i input.mp4 -vf "transpose=2" output.mp4

//任意角度旋转
ffmpeg -i input.mp4 -vf "rotate=45*(PI/180),transpose=2" output.mp4

二、ffmpeg旋转视频方法

ffmpeg旋转视频有两种方法:硬旋转和软旋转。

硬旋转是通过修改码流中视频的width和height来实现原视频的旋转操作,修改后的视频信息与原视频相同,没有额外的处理操作。

软旋转是通过对输入视频进行解码,再旋转图像信息得到旋转后的视频帧,之后在进行编码,最后合成旋转后的视频。

相比硬旋转,软旋转具有更好的效果,但是也需要更多的处理时间与计算资源。

三、ffmpeg旋转z轴

ffmpeg旋转z轴,即绕z轴旋转视频,可以通过修改-metadata参数下的rotate来实现。

//绕z轴旋转90度
ffmpeg -i input.mp4 -metadata:s:v:0 rotate=90 -codec copy output.mp4

四、ffmpeg旋转命令

在ffmpeg中,通过-vf参数可以使用旋转命令对视频进行旋转操作,使用transpose命令可以进行简单的旋转90度或270度。

//旋转90度
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4

//旋转180度
ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4

//旋转270度
ffmpeg -i input.mp4 -vf "transpose=2" output.mp4

//任意角度旋转
ffmpeg -i input.mp4 -vf "rotate=45*(PI/180),transpose=2" output.mp4

五、ffmpeg旋转图片

使用ffmpeg旋转图片与旋转视频操作类似,同样通过transpose、vflip等命令对图片进行操作。

//旋转90度
ffmpeg -i input.jpg -vf "transpose=1" output.jpg

//旋转180度
ffmpeg -i input.jpg -vf "vflip,hflip" output.jpg

//旋转270度
ffmpeg -i input.jpg -vf "transpose=2" output.jpg

//任意角度旋转
ffmpeg -i input.jpg -vf "rotate=45*(PI/180)" output.jpg

六、ffmpeg旋转裁黑边

旋转视频时,可能会出现黑边的现象。通过-crop参数可以进行裁剪操作,使旋转后的视频不再有黑边。

//旋转90度,并裁剪黑边
ffmpeg -i input.mp4 -vf "transpose=1,crop=h=in_w:w=in_h" output.mp4

七、ffmpeg旋转180度

旋转180度可以通过叠加两次transpose命令实现。

//旋转180度
ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4

八、ffmpeg旋转视频90度

旋转90度可以通过使用transpose命令中的1来实现。如果使用1则是逆时针旋转90度,如果使用2则是顺时针旋转90度。

//逆时针旋转90度
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4

//顺时针旋转90度
ffmpeg -i input.mp4 -vf "transpose=2" output.mp4

九、ffmpeg旋转视频大小小了

旋转视频后,如果出现视频大小变小的现象,这是由于旋转后的视频边缘出现了黑边所导致。可以通过使用-crop参数来裁剪黑边,从而保留原视频大小。

//旋转90度,并裁剪黑边
ffmpeg -i input.mp4 -vf "transpose=1,crop=h=in_w:w=in_h" output.mp4

原创文章,作者:PPGN,如若转载,请注明出处:https://www.506064.com/n/148063.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
PPGNPPGN
上一篇 2024-11-02 13:14
下一篇 2024-11-02 13:14

相关推荐

  • 使用FFmpeg在Java中将MP3 URL转换为PCM

    本文介绍了使用FFmpeg在Java中将MP3 URL转换为PCM的具体步骤,以及相应代码示例。 一、准备工作 在使用FFmpeg之前,需要先安装FFmpeg,可以在官网(http…

    编程 2025-04-29
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • Java BigDecimal 精度详解

    一、基础概念 Java BigDecimal 是一个用于高精度计算的类。普通的 double 或 float 类型只能精确表示有限的数字,而对于需要高精度计算的场景,BigDeci…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25

发表回复

登录后才能评论