Opened 2 years ago

#9542 new defect

FFprobe doesn't get exif metadata

Reported by: Aightt Owned by:
Priority: normal Component: ffprobe
Version: git-master Keywords: mjpeg exif
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Hello,

Summary of the bug:
Since this commit (https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/e93c9986027d17917c3b4f533b28ee4a2ce7cd4c), the mpjeg decoder detect the rotation in the exif metadata and automatically rotate the frames. But unfortunately when analyzing the same file with ffprobe, we don't get the rotate information.


How to reproduce:

% ffprobe -i input -of json -show_streams -show_format
ffprobe / ffmpeg built from master
built on debian

Result:

{
Input #0, jpeg_pipe, from '036538dd-700c-4884-9bf4-da1f4d85baed':
  Duration: N/A, bitrate: N/A
  Stream #0:0: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 1280x960 [SAR 72:72 DAR 4:3], 25 fps, 25 tbr, 25 tbn
    "streams": [
        {
            "index": 0,
            "codec_name": "mjpeg",
            "codec_long_name": "Motion JPEG",
            "profile": "Baseline",
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1280,
            "height": 960,
            "coded_width": 1280,
            "coded_height": 960,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 0,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "4:3",
            "pix_fmt": "yuvj420p",
            "level": -99,
            "color_range": "pc",
            "color_space": "bt470bg",
            "chroma_location": "center",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/25",
            "bits_per_raw_sample": "8",
            "disposition": {
                "default": 0,
                "dub": 0,
                "original": 0,
                "comment": 0,
                "lyrics": 0,
                "karaoke": 0,
                "forced": 0,
                "hearing_impaired": 0,
                "visual_impaired": 0,
                "clean_effects": 0,
                "attached_pic": 0,
                "timed_thumbnails": 0,
                "captions": 0,
                "descriptions": 0,
                "metadata": 0,
                "dependent": 0,
                "still_image": 0
            }
        }
    ],
    "format": {
        "filename": "036538dd-700c-4884-9bf4-da1f4d85baed",
        "nb_streams": 1,
        "nb_programs": 0,
        "format_name": "jpeg_pipe",
        "format_long_name": "piped jpeg sequence",
        "size": "272927",
        "probe_score": 26
    }
}

We can see there is no informations about the rotate metadata.
But when reencoding:

ffmpeg -y -loop 1 -t 5 -f image2 -i input output.mp4
ffprobe -i output.mp4 -of json -show_streams -show_format

Result:

{
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf59.9.102
  Duration: 00:00:05.00, start: 0.000000, bitrate: 351 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt470bg/unknown/unknown, progressive), 960x1280 [SAR 1:1 DAR 3:4], 347 kb/s, 25 fps, 25 tbr, 12800 tbn (default)
    Metadata:
      handler_name    : VideoHandler
      vendor_id       : [0][0][0][0]
    "streams": [
        {
            "index": 0,
            "codec_name": "h264",
            "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
            "profile": "High",
            "codec_type": "video",
            "codec_tag_string": "avc1",
            "codec_tag": "0x31637661",
            "width": 960,
            "height": 1280,
            "coded_width": 960,
            "coded_height": 1280,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "3:4",
            "pix_fmt": "yuvj420p",
            "level": 32,
            "color_range": "pc",
            "color_space": "bt470bg",
            "chroma_location": "center",
            "field_order": "progressive",
            "refs": 1,
            "is_avc": "true",
            "nal_length_size": "4",
            "id": "0x1",
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/12800",
            "start_pts": 0,
            "start_time": "0.000000",
            "duration_ts": 64000,
            "duration": "5.000000",
            "bit_rate": "347878",
            "bits_per_raw_sample": "8",
            "nb_frames": "125",
            "extradata_size": 51,
            "disposition": {
                "default": 1,
                "dub": 0,
                "original": 0,
                "comment": 0,
                "lyrics": 0,
                "karaoke": 0,
                "forced": 0,
                "hearing_impaired": 0,
                "visual_impaired": 0,
                "clean_effects": 0,
                "attached_pic": 0,
                "timed_thumbnails": 0,
                "captions": 0,
                "descriptions": 0,
                "metadata": 0,
                "dependent": 0,
                "still_image": 0
            },
            "tags": {
                "language": "und",
                "handler_name": "VideoHandler",
                "vendor_id": "[0][0][0][0]"
            }
        }
    ],
    "format": {
        "filename": "output.mp4",
        "nb_streams": 1,
        "nb_programs": 0,
        "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
        "format_long_name": "QuickTime / MOV",
        "start_time": "0.000000",
        "duration": "5.000000",
        "size": "219803",
        "bit_rate": "351684",
        "probe_score": 100,
        "tags": {
            "major_brand": "isom",
            "minor_version": "512",
            "compatible_brands": "isomiso2avc1mp41",
            "encoder": "Lavf59.9.102"
        }
    }
}

We can see the resolution is not the same in output because the mjpeg decoder automatically rotate the frame.

Change History (0)

Note: See TracTickets for help on using tickets.