[FFmpeg-trac] #10553(avformat:new): MXF files lose metadata upon copy/remux

FFmpeg trac at avcodec.org
Wed Sep 6 22:41:21 EEST 2023


#10553: MXF files lose metadata upon copy/remux
-------------------------------------+-------------------------------------
             Reporter:  brtstyczen   |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:  avformat     |                  Version:  git-
             Keywords:  mxf          |  master
  metadata encoder                   |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 If an MXF file has reel_name stored in a stream, while copying or
 remuxing file, some (most) of the stream metadata is lost.
 Here’s the file:
 https://streams.videolan.org/ffmpeg/incoming/original.mxf

 After running ffmpeg -i original.mxf -c copy output.mxf, and checking
 with ffprobe,
 the original file has the following stream metadata:

 {{{
 file_package_umid:
 0x060A2B340101010501010D431300000064F640280FA57031060E2B347F7F2A80
       file_package_name: B002C0006_230803_1932_000001 (0)
       track_name      : B002C0006_230803_1932_000001 (0)_v1
       reel_umid       :
 0x060A2B340101010501010D431300000064F640280FA67031060E2B347F7F2A80
       reel_name       : B002C0006_230803_1932_000001 (1)
       timecode        : 00:06:15:21
 }}}


 And the copied file only these:

 {{{
 file_package_umid:
 0x060A2B340101010501010D001339242252947134203924220052947134203901
       file_package_name: B002C0006_230803_1932_000001 (0)

 }}}


 After applying the patch, copied file correctly shows reel metadata
 and the timecode:

 {{{
  file_package_umid:
 0x060A2B340101010501010D001321CA09529471342721CA090052947134272101
       file_package_name: B002C0006_230803_1932_000001 (0)
       reel_umid       :
 0x060A2B340101010501010D001321CA09529471342721CA090052947134272102
       reel_name       : B002C0006_230803_1932_000001 (1)
       timecode        : 00:06:15:21
 }}}


 The track_name is still missing though, so I will continue to
 investigate the issue.


 Proposed patch:

 {{{
 Signed-off-by: Bart Styczen <bart.styczen at cine.dev>
 ---
 libavformat/mxfenc.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

 diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c
 index d8252ed68f..d3ae83a9fb 100644
 --- a/libavformat/mxfenc.c
 +++ b/libavformat/mxfenc.c
 @@ -1817,7 +1817,17 @@ static int
 mxf_write_header_metadata_sets(AVFormatContext *s)
     }

     entry = av_dict_get(s->metadata, "reel_name", NULL, 0);
 -    if (entry) {
 +    if (!entry) {
 +        /* check if any of the streams contain a reel_name */
 +        for (i = 0; i < s->nb_streams; i++) {
 +            st = s->streams[i];
 +            if (entry = av_dict_get(st->metadata, "reel_name", NULL, 0))
 {
 +                break;
 +            }
 +        }
 +    }
 +
 +    if (entry) {
         packages[2].name = entry->value;
         packages[2].type = SourcePackage;
         packages[2].instance = 2;
 --
 2.37.1 (Apple Git-137.1)
 }}}
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/10553>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list