llo*_*gan 130
ffmpeg
将自动旋转视频,除非:
ffmpeg
太老了某些视频(例如来自 iPhone 的视频)并非物理翻转,而是包含视频流 displaymatrix 侧数据或旋转元数据。有些玩家会忽略这些元数据,有些则不会。请参阅ffmpeg
控制台输出以查看您的输入是否具有此类元数据:
$ ffmpeg -i input.mp4
...
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
Duration: 00:00:05.00, start: 0.000000, bitrate: 43 kb/s
Stream #0:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p, 320x240 [SAR 1:1 DAR 4:3], 39 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
rotate : 180
Side data:
displaymatrix: rotation of -180.00 degrees
Run Code Online (Sandbox Code Playgroud)
ffmpeg
将根据任何现有的视频流旋转元数据自动物理旋转视频。
您需要一个包含 2015 年 5 月 2 日提交的 1630224 的构建,才能使用自动旋转功能。
ffmpeg -i input.mp4 -c:a copy output.mp4
Run Code Online (Sandbox Code Playgroud)
要禁用此行为,请使用该-noautorotate
选项。
ffmpeg
很旧您必须使用过滤器来旋转视频,如果存在任何旋转元数据,则必须将其删除,如下例所示:
使用ffmpeg
您可以选择三种使用视频滤镜旋转 180° 的方法。
hflip
和 vflip
ffmpeg -i input.mp4 -vf "hflip,vflip,format=yuv420p" -metadata:s:v rotate=0 \
-codec:v libx264 -codec:a copy output.mkv
Run Code Online (Sandbox Code Playgroud)
transpose
ffmpeg -i input.mp4 -vf "transpose=2,transpose=2,format=yuv420p" \
-metadata:s:v rotate=0 -codec:v libx264 -codec:a copy output.mp4
Run Code Online (Sandbox Code Playgroud)
rotate
此过滤器可以旋转到任意角度,并使用弧度而不是度数作为单位。此示例将旋转 ?/1 弧度或 180°:
ffmpeg -i input.mp4 -vf "rotate=PI:bilinear=0,format=yuv420p" \
-metadata:s:v rotate=0 -codec:v libx264 -codec:a copy output.mp4
Run Code Online (Sandbox Code Playgroud)
您可以使用度数代替。1 度等于 ?/180 弧度。所以如果你想旋转 45°:
ffmpeg -i input.mp4 -vf "rotate=45*(PI/180),format=yuv420p" \
-metadata:s:v rotate=0 -codec:v libx264 -codec:a copy output.mp4
Run Code Online (Sandbox Code Playgroud)
使用rotate
滤波器时,bilinear=0
对于可被 90 整除的角度,应关闭(通过使用)双线性插值,否则可能看起来很模糊。
过滤需要编码。这些示例生成 H.264 视频输出。有关获得所需质量的指导,请参阅FFmpeg H.264 视频编码指南。
色度子采样。我包括format=yuv420p
因为ffmpeg
将尝试最小化或避免色度子采样(取决于编码器、输入、ffmpeg
版本等)。从纯粹的技术意义上讲,这是一种良好的行为,但大多数播放器与更“高级”的色度子采样方案不兼容。这与 using 相同-pix_fmt yuv420
,但方便地位于过滤器链中。
复制音频。该-codec:a copy
选项将流式复制(重新复用)而不是编码。如果您只想操作视频,则没有理由重新编码音频(除非您想转换为不同的音频格式)。这将节省时间,因为编码非常耗时,并且会保持音频的质量。
或者,您可以在播放时旋转并避免重新编码。ffplay
会自动旋转:
ffplay input.mp4
Run Code Online (Sandbox Code Playgroud)
如果没有 displaymatrix 侧数据或旋转元数据,那么您可以使用过滤器:
ffplay -vf "hflip,vflip" -i input.mp4
Run Code Online (Sandbox Code Playgroud)
...或参考您最喜欢的球员。大多数值得使用的播放器,例如 VLC,都具有此功能。
ffmpeg
ffmpeg 的较旧版本不包括过滤功能。请参阅FFmpeg 下载页面以获取多个选项,包括适用于 Linux、OS X 和 Windows 的便捷构建,或参阅FFmpeg Wiki以获取分步 ffmpeg 编译指南。
归档时间: |
|
查看次数: |
100131 次 |
最近记录: |