通过ffmpeg命令从视频文件转换为图像文件后如何保持方向号(exif)
How to keep the orientation number(exif) after converting from a video file to a image file by a ffmpeg command
下面的命令在我的环境中工作得很好,只是它在从视频文件转换后删除了图像文件的方向编号 (exif)。
我想知道如何使用下面的命令行保持图像的方向编号(exif)(它还必须保持其功能的原始目的,即从视频转换为图像一个目录到另一个目录。)。如果有人能帮助我,我将不胜感激。
for i in /path/to/inputs/*.mp4; do ffmpeg -i "$i" -frames:v 1 "/path/to/outputs/$(basename "$i" .mp4).jpg"; done
ffmpeg 版本 2.2.2
OS:centos-6 (x86_64)
tl;博士
更新你的 ffmpeg
它会自动旋转然后你就不必处理 exif 标签了。
旋转边数据
MP4 不包含 exif 数据,但可以包含旋转边数据。这是播放器可以用来正确定位视频的信息(并非所有播放器或设备都支持此信息),即使视频流本身不是这样定位的。例如,来自 iPhone 的视频有这方面的数据。
ffmpeg
auto-rotates
编码时,ffmpeg
会默认根据旋转端数据自动旋转输出。所以你可能根本不需要设置 exif 方向标签。您可以使用 -noautorotate
选项禁用此行为。请注意,您的 ffmpeg
(2.2 版)对于此行为和此选项来说太旧了,因此它不会自动旋转。我推荐你 download a recent ffmpeg
version 并将其移动到 /usr/local/bin
。
那么,鉴于non-ancient ffmpeg
会自动旋转你还需要处理exif方向标签吗? 如果你回答"yes" 然后查看以下部分。
查看 MP4 视频中的旋转边数据
可以使用ffprobe
查看输入视频的旋转边数据:
ffprobe -loglevel error -select_streams v:0 -show_entries side_data=rotation -of csv=p=0 input.mp4
在 JPG 图像中设置 exif 方向标签
您可以使用exiftool
将方向exif标签写入JPG图片:
exiftool -Orientation=6 -n image.jpg
或人类可读的形式:
exiftool -Orientation='Rotate 90 CW' image.jpg
数值方向值为:
1 = Horizontal (normal)
2 = Mirror horizontal
3 = Rotate 180
4 = Mirror vertical
5 = Mirror horizontal and rotate 270 CW
6 = Rotate 90 CW
7 = Mirror horizontal and rotate 90 CW
8 = Rotate 270 CW
至于在你的 bash 脚本中实现这个,我认为这值得作为一个单独的问题来问。
正在查看 JPG 图像中的 exif 方向标记
可以使用exiftool
查看方位:
$ exiftool -Orientation -S image.jpg
Orientation: Rotate 90 CW
$ exiftool -Orientation -n -S image.jpg
Orientation: 6
下面的命令在我的环境中工作得很好,只是它在从视频文件转换后删除了图像文件的方向编号 (exif)。
我想知道如何使用下面的命令行保持图像的方向编号(exif)(它还必须保持其功能的原始目的,即从视频转换为图像一个目录到另一个目录。)。如果有人能帮助我,我将不胜感激。
for i in /path/to/inputs/*.mp4; do ffmpeg -i "$i" -frames:v 1 "/path/to/outputs/$(basename "$i" .mp4).jpg"; done
ffmpeg 版本 2.2.2
OS:centos-6 (x86_64)
tl;博士
更新你的 ffmpeg
它会自动旋转然后你就不必处理 exif 标签了。
旋转边数据
MP4 不包含 exif 数据,但可以包含旋转边数据。这是播放器可以用来正确定位视频的信息(并非所有播放器或设备都支持此信息),即使视频流本身不是这样定位的。例如,来自 iPhone 的视频有这方面的数据。
ffmpeg
auto-rotates
编码时,ffmpeg
会默认根据旋转端数据自动旋转输出。所以你可能根本不需要设置 exif 方向标签。您可以使用 -noautorotate
选项禁用此行为。请注意,您的 ffmpeg
(2.2 版)对于此行为和此选项来说太旧了,因此它不会自动旋转。我推荐你 download a recent ffmpeg
version 并将其移动到 /usr/local/bin
。
那么,鉴于non-ancient ffmpeg
会自动旋转你还需要处理exif方向标签吗? 如果你回答"yes" 然后查看以下部分。
查看 MP4 视频中的旋转边数据
可以使用ffprobe
查看输入视频的旋转边数据:
ffprobe -loglevel error -select_streams v:0 -show_entries side_data=rotation -of csv=p=0 input.mp4
在 JPG 图像中设置 exif 方向标签
您可以使用exiftool
将方向exif标签写入JPG图片:
exiftool -Orientation=6 -n image.jpg
或人类可读的形式:
exiftool -Orientation='Rotate 90 CW' image.jpg
数值方向值为:
1 = Horizontal (normal)
2 = Mirror horizontal
3 = Rotate 180
4 = Mirror vertical
5 = Mirror horizontal and rotate 270 CW
6 = Rotate 90 CW
7 = Mirror horizontal and rotate 90 CW
8 = Rotate 270 CW
至于在你的 bash 脚本中实现这个,我认为这值得作为一个单独的问题来问。
正在查看 JPG 图像中的 exif 方向标记
可以使用exiftool
查看方位:
$ exiftool -Orientation -S image.jpg
Orientation: Rotate 90 CW
$ exiftool -Orientation -n -S image.jpg
Orientation: 6