使用mencoder、handbrake cli或ffmpeg自动检测旋转并相应地旋转视频。

4
我发现了一些关于使用mencoder和ffmpeg旋转视频的问题,但我需要完全自动化的解决方案。 有人可以帮忙吗?
我想要: - 检测视频方向 - 如果需要旋转 - 重置视频的元数据(否则在iOS设备上观看会导致不必要的旋转) - 以所需格式保存视频
这样做的原因是希望将处理后的视频用于HTML5视频播放器。如果没有重置元数据而进行旋转,则iOS设备将读取元数据并进一步旋转,导致视频再次偏转90度。
2个回答

2
我会用一小段脚本和HandBrakeCLI来实现这个功能。
注意,"--rotate"参数在HandBrake 1.0版本中已经更改,以下内容适用于1.0.7版本:
for i in *.mp4
do
  r=$(exiftool -Rotation $i | cut -d ":" -f2 | sed 's/^[ ]*//')
  HandBrakeCLI -i $i -o ./out/$i --rotate=angle=$r -e x264 -q 21 -X 1000
done

你怎么运行那个脚本? - TheCrazyProfessor
@TheCrazyProfessor bash,sh或zsh - Andy

0

与安迪的答案类似,这里提供一个PowerShell和Handbrake版本

$SourceVideoPath = "C:\Videos\"
$ListOfVideos = Get-ChildItem -path $SourceVideoPath  -Filter *.mpg
ForEach ($InputFile in $ListOfVideos){
    $rotationFromEXIF = 0
    Write-Host "Now processing: $InputFile"
    $InputFullName = $InputFile.Fullname
    $OutputFullName = $InputFile.DirectoryName + "\output\" + $InputFile;
    $rotationFromEXIF = ((& 'C:\Utilities\exiftool.exe' -rotation $InputFullName) -split ": ")[1]
    if ($rotationFromEXIF -gt 0){Write-Host "Rotating $rotationFromEXIF degrees"}
    (& 'C:\Program Files\HandBrake\HandBrakeCLI.exe' -i $InputFullName -o $OutputFullName --rotate=angle=$rotationFromEXIF)
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接