FFMPEG Concat DNxHD-Files: неправильная длительность выходного файла - PullRequest
0 голосов
/ 04 мая 2020

У меня есть AVID-DNxHD-файлы, созданные Ikegami EditCamHD и FFMPEG-кодированные DNxHD-файлы.

Файлы Ikegami имеют разрешение 1080 / 25psF со скоростью 185 Мбит / с c (10 бит). FFMPEG-файлы создаются с помощью этой команды:

ffmpeg -loop 1 -i c:\pics\VideoNichtVorhanden.jpg -s 1920x1080 -r 25 -t 92.8 -c:v dnxhd -b:v 185M -pix_fmt yuv422p10le d:\MissingFiles\missing_0001.mov

ffprobe из файла Ikegami:

{
  "streams": [
    {
      "index": 0,
      "codec_name": "dnxhd",
      "codec_long_name": "VC3\/DNxHD",
      "profile": "DNXHD",
      "codec_type": "video",
      "codec_time_base": "1\/25",
      "codec_tag_string": "[0][0][0][0]",
      "codec_tag": "0x0000",
      "width": 1920,
      "height": 1080,
      "coded_width": 1920,
      "coded_height": 1088,
      "has_b_frames": 0,
      "sample_aspect_ratio": "1:1",
      "display_aspect_ratio": "16:9",
      "pix_fmt": "yuv422p10le",
      "level": -99,
      "color_space": "bt709",
      "field_order": "tt",
      "refs": 1,
      "r_frame_rate": "25\/1",
      "avg_frame_rate": "25\/1",
      "time_base": "1\/25",
      "start_pts": 0,
      "start_time": "0.000000",
      "duration_ts": 827,
      "duration": "33.080000",
      "bits_per_raw_sample": "10",
      "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
      },
      "tags": {
        "file_package_umid": "0x060A2B340101010101010F0013000000D6F21F070302074C060E2B347F7F2A80",
        "file_package_name": "File Package",
        "track_name": "V1"
      }
    },
    {
      "index": 1,
      "codec_type": "data",
      "codec_tag_string": "[0][0][0][0]",
      "codec_tag": "0x0000",
      "r_frame_rate": "0\/0",
      "avg_frame_rate": "0\/0",
      "time_base": "1\/90000",
      "start_pts": 0,
      "start_time": "0.000000",
      "duration_ts": 2977200,
      "duration": "33.080000",
      "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
      },
      "tags": {
        "file_package_umid": "0x060A2B34010101010101080013000000D6F21F070276074C060E2B347F7F2A80",
        "track_name": "A1",
        "data_type": "audio"
      }
    },
    {
      "index": 2,
      "codec_type": "data",
      "codec_tag_string": "[0][0][0][0]",
      "codec_tag": "0x0000",
      "r_frame_rate": "0\/0",
      "avg_frame_rate": "0\/0",
      "time_base": "1\/90000",
      "start_pts": 0,
      "start_time": "0.000000",
      "duration_ts": 2977200,
      "duration": "33.080000",
      "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
      },
      "tags": {
        "file_package_umid": "0x060A2B34010101010101080013000000D6F21F07028A074C060E2B347F7F2A80",
        "track_name": "A2",
        "data_type": "audio"
      }
    }
  ],
  "format": {
    "filename": "G:\\MXF-sortiert\\Ikegami\\2018-04-10\\V\\MULTI_NN17GN0V\\NN17GN0V.0001.MXF",
    "nb_streams": 3,
    "nb_programs": 0,
    "format_name": "mxf",
    "format_long_name": "MXF (Material eXchange Format)",
    "start_time": "0.000000",
    "duration": "33.080000",
    "size": "761004264",
    "bit_rate": "184039725",
    "probe_score": 100,
    "tags": {
      "operational_pattern_ul": "060e2b34.04010102.0d010201.10030000",
      "uid": "caf0bf8e-ff07-b34d-9616-bc3e7bd32d54",
      "generation_uid": "fb90769f-a46d-d546-983d-dda63339a8fd",
      "company_name": "Ikegami",
      "product_name": "HDN-X10",
      "product_version": "1.30d",
      "product_uid": "3e2189d7-294b-4612-8243-1b1990e14055",
      "modification_date": "2018-04-10T05:57:59.788000Z",
      "material_package_umid": "0x060A2B340101010101010F0013000000D6F21F070262074C060E2B347F7F2A80",
      "material_package_name": "01047",
      "timecode": "01:23:17:03"
    }
  }
}

ffprobe из файла ffmpeg-coded-file:

{
  "streams": [
    {
      "index": 0,
      "codec_name": "dnxhd",
      "codec_long_name": "VC3\/DNxHD",
      "profile": "DNXHD",
      "codec_type": "video",
      "codec_time_base": "1\/25",
      "codec_tag_string": "AVdn",
      "codec_tag": "0x6e645641",
      "width": 1920,
      "height": 1080,
      "coded_width": 1920,
      "coded_height": 1088,
      "has_b_frames": 0,
      "sample_aspect_ratio": "1:1",
      "display_aspect_ratio": "16:9",
      "pix_fmt": "yuv422p10le",
      "level": -99,
      "color_range": "tv",
      "color_space": "bt709",
      "refs": 1,
      "r_frame_rate": "25\/1",
      "avg_frame_rate": "25\/1",
      "time_base": "1\/12800",
      "start_pts": 0,
      "start_time": "0.000000",
      "duration_ts": 1187840,
      "duration": "92.800000",
      "bit_rate": "183500800",
      "bits_per_raw_sample": "10",
      "nb_frames": "2320",
      "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
      },
      "tags": {
        "handler_name": "VideoHandler",
        "encoder": "Lavc58.54.100 dnxhd"
      }
    }
  ],
  "format": {
    "filename": "G:\\MXF-sortiert\\Ikegami\\2018-04-10\\V\\MULTI_NN1EUS0V\\MXF\\NN1EUS0V.0001.mov",
    "nb_streams": 1,
    "nb_programs": 0,
    "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
    "format_long_name": "QuickTime \/ MOV",
    "start_time": "0.000000",
    "duration": "92.800000",
    "size": "2128619444",
    "bit_rate": "183501676",
    "probe_score": 100,
    "tags": {
      "major_brand": "qt  ",
      "minor_version": "512",
      "compatible_brands": "qt  ",
      "encoder": "Lavf58.29.100"
    }
  }
}

Когда я, например, конкатюрирую один .mxf с одним .mov и другим .mxf в конце, длительность является постоянной (около 26 Miuntes, когда должно быть около 4 минут или около того), и VL C -Player дает частоту кадров очень низкая частота кадров, и видео не воспроизводит кодированную часть ffmpeg.

ffprobe из concat-output:

{
  "streams": [
    {
      "index": 0,
      "codec_name": "dnxhd",
      "codec_long_name": "VC3\/DNxHD",
      "profile": "DNXHD",
      "codec_type": "video",
      "codec_time_base": "20268137\/1351040",
      "codec_tag_string": "AVdn",
      "codec_tag": "0x6e645641",
      "width": 1920,
      "height": 1080,
      "coded_width": 1920,
      "coded_height": 1088,
      "has_b_frames": 0,
      "sample_aspect_ratio": "1:1",
      "display_aspect_ratio": "16:9",
      "pix_fmt": "yuv422p10le",
      "level": -99,
      "color_range": "tv",
      "color_space": "bt709",
      "refs": 1,
      "r_frame_rate": "25\/1",
      "avg_frame_rate": "1351040\/20268137",
      "time_base": "1\/12800",
      "start_pts": 0,
      "start_time": "0.000000",
      "duration_ts": 1216088220,
      "duration": "95006.892188",
      "bit_rate": "489252",
      "bits_per_raw_sample": "10",
      "nb_frames": "6333",
      "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
      },
      "tags": {
        "handler_name": "VideoHandler"
      }
    }
  ],
  "format": {
    "filename": "G:\\MXF-sortiert\\Ikegami\\2018-04-10\\V\\NN1EUS0V_MIES.mov",
    "nb_streams": 1,
    "nb_programs": 0,
    "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
    "format_long_name": "QuickTime \/ MOV",
    "start_time": "0.000000",
    "duration": "95006.893000",
    "size": "5810367616",
    "bit_rate": "489258",
    "probe_score": 100,
    "tags": {
      "major_brand": "qt  ",
      "minor_version": "512",
      "compatible_brands": "qt  ",
      "encoder": "Lavf58.29.100"
    }
  }
}

Файлы с кодировкой Ikegami и ffmpeg для себя отлично воспроизводятся и показывают правильный fps в VL C.

Я вижу в журналах пробников

  "codec_time_base": "20268137\/1351040"

и

  "avg_frame_rate": "1351040\/20268137"

Что здесь не так? Как я могу улучшить кодирующую часть и / или конкат, чтобы получить хороший результат? Возможно ли это только с перекодированием вместо c: v copy?

Любая помощь приветствуется, заранее спасибо,

Tom

...