Opened 4 months ago

Last modified 4 months ago

#7045 new defect

Should retain pixel density metadata from HiDPI/Retina screen recordings

Reported by: moubry Owned by:
Priority: normal Component: undetermined
Version: unspecified Keywords:
Cc: sean+ffmpeg@moubry.com Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:
Whenever I use ffmpeg to encode a HiDPI/Retina screen recording, the video plays at 2x the size, so it looks fuzzy, because the pixel density is not retained. I expect videos encoded with ffmpeg to retain whatever metadata is used by players (like QuickTime? Player) to play HiDPI/Retina videos at the expected size.

I'm experiencing this issue on a Mac, but it might be an issue across other platforms with HiDPi displays as well.

$ ffmpeg version
ffmpeg version 3.4.2 Copyright (c) 2000-2018 the FFmpeg developers
  built with Apple LLVM version 9.0.0 (clang-900.0.39.2)

How to reproduce:

  1. Use QuickTime? Player to create a Screen Recording on a Retina Mac.
  2. Play the video you recorded in QuickTime? Player using the ⌘1 Actual Size view. Notice that it’s playing 2:1 on your Retina Display, so the video looks sharp. It’s playing in half the space of the actual recorded pixels.
  3. Use ffmpeg to encode the video using a command like this:
    $ ffmpeg -i haha.mov -c:v libx264 -crf 23 haha-lg.mov
    
  4. Play the new ffmpeg-compressed video in QuickTime? Player using the ⌘1 Actual Size view. Notice that it’s playing 1:1, so the video looks fuzzy.

To clarify, the video does not look blurry because it was compressed. Rather, it looks blurry because the video is being played twice as big as it should be, at a 1:1 pixel density, instead of the required 2:1 pixel density, presumably because some metadata is being discarded when encoding.

Here is the detailed information ffmpeg shows for the original screen recording:

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

And here is the information for the ffmpeg-compressed version:

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

Attachments (3)

retina_sample.mov (1.5 MB) - added by moubry 4 months ago.
Original screen recording from QuickTime? Player (this correctly plays at 2x)
retina_sample_compressed.mov (83.2 KB) - added by moubry 4 months ago.
Compressed by ffmpeg/lix264 (this plays at 1x instead of the expected 2x)
terminal_output (15.0 KB) - added by moubry 4 months ago.

Download all attachments as: .zip

Change History (8)

comment:1 Changed 4 months ago by moubry

For the record, VLC plays both videos too big (blurry). So being able to play HiDPI videos at the expected pixel density seems to be a feature of QuickTime? Player.

comment:2 Changed 4 months ago by moubry

  • Cc sean+ffmpeg@moubry.com added
  • Keywords quicktime added
  • Version changed from unspecified to 3.4

comment:3 follow-up: Changed 4 months ago by cehoyos

  • Keywords quicktime removed
  • Version changed from 3.4 to unspecified

Please test current FFmpeg git head and provide the command line you tested together with the complete, uncut console output and upload an input file to make this a valid ticket.

Changed 4 months ago by moubry

Original screen recording from QuickTime? Player (this correctly plays at 2x)

Changed 4 months ago by moubry

Compressed by ffmpeg/lix264 (this plays at 1x instead of the expected 2x)

Changed 4 months ago by moubry

comment:4 in reply to: ↑ 3 Changed 4 months ago by moubry

Replying to cehoyos:

Please test current FFmpeg git head and provide the command line you tested together with the complete, uncut console output and upload an input file to make this a valid ticket.

I've added the things you've asked for. I reinstalled ffmpeg from head, compressed a sample video, and attached the terminal output as well as the before and after videos. I hope this helps!

comment:5 Changed 4 months ago by cehoyos

Is the issue also reproducible with the following command line?

$ ffmpeg -i retina_sample.mov -vcodec copy out.mov
Note: See TracTickets for help on using tickets.