使用 ffmpeg 编码 Retina 屏幕截图时如何保持 2 倍像素密度?
How can I retain 2x pixel density when encoding Retina screen capture with ffmpeg?
每当我使用 ffmpeg 对 HiDPI/Retina 屏幕录像进行编码时,视频会以两倍大小播放,所以看起来很模糊,因为没有保留像素密度。
如何使用ffmpeg保持HiDPI录屏的原始像素密度?
如何重现:
- 使用 QuickTime Player 在 Retina 上创建屏幕录制 Mac。
- 使用
⌘1 Actual Size
视图播放您在 QuickTime Player 中录制的视频。请注意,它正在您的 Retina 显示屏上播放 2:1,因此视频看起来很清晰。它正在播放实际记录像素的一半 space。
使用 ffmpeg 使用如下命令对视频进行编码:
ffmpeg -i haha.mov -c:v libx264 -crf 23 haha-lg.mov
- 使用
⌘1 Actual Size
视图在 QuickTime Player 中播放新的 ffmpeg 压缩视频。请注意它正在播放 1:1,因此视频看起来很模糊。
澄清一下,视频看起来并不模糊,因为它被压缩了。相反,它看起来很模糊,因为视频正在以 1:1 像素密度而不是所需的 2:1 像素密度播放两倍大的视频,大概是因为在编码时丢弃了一些元数据.
郑重声明,VLC 播放的两个视频太大(模糊)。所以能够播放 HiDPI 视频似乎是 QuickTime Player 的一个功能。
这里是ffmpeg显示的原始屏幕录制的详细信息:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'haha.mov':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
creation_time : 2018-02-26T16:46:00.000000Z
com.apple.quicktime.make: Apple
com.apple.quicktime.model: iMac18,3
com.apple.quicktime.software: Mac OS X 10.13.3 (17D102)
com.apple.quicktime.creationdate: 2018-02-26T10:45:50-0600
Duration: 00:00:04.35, start: 0.000000, bitrate: 10947 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1396x928 [SAR 1:1 DAR 349:232], 10701 kb/s, 60 fps, 60 tbr, 6k tbn, 12k tbc (default)
Metadata:
creation_time : 2018-02-26T16:46:00.000000Z
handler_name : Core Media Data Handler
encoder : H.264
这里是 ffmpeg 压缩版本的信息:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'haha-lg.mov':
Metadata:
major_brand : qt
minor_version : 512
compatible_brands: qt
encoder : Lavf57.83.100
Duration: 00:00:04.35, start: 0.000000, bitrate: 1923 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1396x928 [SAR 1:1 DAR 349:232], 1783 kb/s, 60 fps, 60 tbr, 15360 tbn, 120 tbc (default)
Metadata:
handler_name : DataHandler
encoder : Lavc57.107.100 libx264
FFmpeg 目前不支持该类型的元数据。如果您可以在 FFmpeg's bug tracker 上提供(简短的)示例,我们可能会在未来的版本中添加对此类元数据的支持。
每当我使用 ffmpeg 对 HiDPI/Retina 屏幕录像进行编码时,视频会以两倍大小播放,所以看起来很模糊,因为没有保留像素密度。
如何使用ffmpeg保持HiDPI录屏的原始像素密度?
如何重现:
- 使用 QuickTime Player 在 Retina 上创建屏幕录制 Mac。
- 使用
⌘1 Actual Size
视图播放您在 QuickTime Player 中录制的视频。请注意,它正在您的 Retina 显示屏上播放 2:1,因此视频看起来很清晰。它正在播放实际记录像素的一半 space。 使用 ffmpeg 使用如下命令对视频进行编码:
ffmpeg -i haha.mov -c:v libx264 -crf 23 haha-lg.mov
- 使用
⌘1 Actual Size
视图在 QuickTime Player 中播放新的 ffmpeg 压缩视频。请注意它正在播放 1:1,因此视频看起来很模糊。
澄清一下,视频看起来并不模糊,因为它被压缩了。相反,它看起来很模糊,因为视频正在以 1:1 像素密度而不是所需的 2:1 像素密度播放两倍大的视频,大概是因为在编码时丢弃了一些元数据.
郑重声明,VLC 播放的两个视频太大(模糊)。所以能够播放 HiDPI 视频似乎是 QuickTime Player 的一个功能。
这里是ffmpeg显示的原始屏幕录制的详细信息:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'haha.mov':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
creation_time : 2018-02-26T16:46:00.000000Z
com.apple.quicktime.make: Apple
com.apple.quicktime.model: iMac18,3
com.apple.quicktime.software: Mac OS X 10.13.3 (17D102)
com.apple.quicktime.creationdate: 2018-02-26T10:45:50-0600
Duration: 00:00:04.35, start: 0.000000, bitrate: 10947 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1396x928 [SAR 1:1 DAR 349:232], 10701 kb/s, 60 fps, 60 tbr, 6k tbn, 12k tbc (default)
Metadata:
creation_time : 2018-02-26T16:46:00.000000Z
handler_name : Core Media Data Handler
encoder : H.264
这里是 ffmpeg 压缩版本的信息:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'haha-lg.mov':
Metadata:
major_brand : qt
minor_version : 512
compatible_brands: qt
encoder : Lavf57.83.100
Duration: 00:00:04.35, start: 0.000000, bitrate: 1923 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1396x928 [SAR 1:1 DAR 349:232], 1783 kb/s, 60 fps, 60 tbr, 15360 tbn, 120 tbc (default)
Metadata:
handler_name : DataHandler
encoder : Lavc57.107.100 libx264
FFmpeg 目前不支持该类型的元数据。如果您可以在 FFmpeg's bug tracker 上提供(简短的)示例,我们可能会在未来的版本中添加对此类元数据的支持。