获取任何视频的纵横比
Getting the aspect ratio of any video
我想获取 android 中任何视频的宽高比,例如(1:1、9:16 等)。目前我得到了视频的高度和宽度,但我想要纵横比。使用 Ffmpeg 或 MediaMetadataRetriever 可以完成此任务吗?如果是,请给我一些示例代码。如果不是,那么请建议我其他解决方案。
宽高比只是高度与宽度的比值* - 正如您可以获得的那样,我认为您正在寻找的只是一种将它们降低到最低比率的方法。
这是一个常见的数学练习 - 您将每个数字除以它们的最大公约数,这是将同时分为两个数字的最大数字 (https://en.wikipedia.org/wiki/Greatest_common_divisor)。
Java 中有一个很好的例子使用递归模数除法在这里你可以使用:
总之你:
- 获取高度和宽度(例如 1500、500)
- 求出它们的最大公约数 gcd(本例中为 500)
- 将 gcd 分为两个数字,得到纵横比的最低项(本例中为 3:1)
(*) 更新。实际上@llogan 的非常好的答案包括 SAR 和 DAR 纵横比。样本宽高比 SAR 是原始源宽高比,显示宽高比是视频的宽高比,因为它旨在显示。有时您可能还会看到第三个术语,即像素长宽比,即 DAR 除以 SAR。我怀疑它仍然是您感兴趣的 DAR,因此您使用的高度和宽度方法仍然适用。
ff探测器
$ ffprobe -loglevel error -show_entries stream=sample_aspect_ratio,display_aspect_ratio -of default=nw=1 input.mkv
sample_aspect_ratio=115:87
display_aspect_ratio=1840:783
这将同时提供 SAR 和 DAR。
媒体信息
$ mediainfo --Output="Video;%DisplayAspectRatio%,%DisplayAspectRatio/String%,%PixelAspectRatio%,%DisplayAspectRatio_Original%,%DisplayAspectRatio_Original/String%" input.mkv
2.350,2.35:1,1.322,1.778,16:9
如本例所示,有多种纵横比可供选择,并且可以以多种形式显示,例如16:9或1.778。
有关详细信息,请参阅 mediainfo --Help-Output
和 mediainfo --Info-Parameters
。
我想获取 android 中任何视频的宽高比,例如(1:1、9:16 等)。目前我得到了视频的高度和宽度,但我想要纵横比。使用 Ffmpeg 或 MediaMetadataRetriever 可以完成此任务吗?如果是,请给我一些示例代码。如果不是,那么请建议我其他解决方案。
宽高比只是高度与宽度的比值* - 正如您可以获得的那样,我认为您正在寻找的只是一种将它们降低到最低比率的方法。
这是一个常见的数学练习 - 您将每个数字除以它们的最大公约数,这是将同时分为两个数字的最大数字 (https://en.wikipedia.org/wiki/Greatest_common_divisor)。
Java 中有一个很好的例子使用递归模数除法在这里你可以使用:
总之你:
- 获取高度和宽度(例如 1500、500)
- 求出它们的最大公约数 gcd(本例中为 500)
- 将 gcd 分为两个数字,得到纵横比的最低项(本例中为 3:1)
(*) 更新。实际上@llogan 的非常好的答案包括 SAR 和 DAR 纵横比。样本宽高比 SAR 是原始源宽高比,显示宽高比是视频的宽高比,因为它旨在显示。有时您可能还会看到第三个术语,即像素长宽比,即 DAR 除以 SAR。我怀疑它仍然是您感兴趣的 DAR,因此您使用的高度和宽度方法仍然适用。
ff探测器
$ ffprobe -loglevel error -show_entries stream=sample_aspect_ratio,display_aspect_ratio -of default=nw=1 input.mkv
sample_aspect_ratio=115:87
display_aspect_ratio=1840:783
这将同时提供 SAR 和 DAR。
媒体信息
$ mediainfo --Output="Video;%DisplayAspectRatio%,%DisplayAspectRatio/String%,%PixelAspectRatio%,%DisplayAspectRatio_Original%,%DisplayAspectRatio_Original/String%" input.mkv
2.350,2.35:1,1.322,1.778,16:9
如本例所示,有多种纵横比可供选择,并且可以以多种形式显示,例如16:9或1.778。
有关详细信息,请参阅 mediainfo --Help-Output
和 mediainfo --Info-Parameters
。