Opened 5 years ago

Closed 5 years ago

#722 closed defect (fixed)

ffmpeg parses bext umid incorrectly when umid is 64 bytes

Reported by: dericed Owned by:
Priority: normal Component: avformat
Version: git-master Keywords: bext
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

The bext UMID field can be either 32 bytes or 64 bytes. When I run ffmpeg -i 64byteumid.wav on a file with 64 byte UMID, the expressed UMID value is incomplete and missing the last byte (0x45). Note the the umid expressed by ffmpeg inserts an '0x' as the 33rd byte.

ffmpeg reports

0x060A2B34010101010101021333000000FF7FCBA40000008000000000000000FF0x000000000000008000000000000000000000000055534120574E5943444156

but the umid is

0x060A2B34010101010101021033000000FF7FCBA40000008000000000000000FF000000000000008000000000000000000000000055534120574E594344415645

ffmpeg output:

ffmpeg version N-31814-g7076967, Copyright (c) 2000-2011 the FFmpeg developers
  built on Nov 29 2011 16:34:05 with gcc 4.2.1 (Apple Inc. build 5666) (dot 3)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --cc=/usr/bin/gcc-4.2 --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libxvid --disable-ffplay
  libavutil    51. 29. 1 / 51. 29. 1
  libavcodec   53. 39. 1 / 53. 39. 1
  libavformat  53. 22. 0 / 53. 22. 0
  libavdevice  53.  4. 0 / 53.  4. 0
  libavfilter   2. 50. 0 /  2. 50. 0
  libswscale    2.  1. 0 /  2.  1. 0
  libpostproc  51.  2. 0 / 51.  2. 0
[wav @ 0x7fd37a83d800] parser not found for codec pcm_s16le, packets or times may be invalid.
[wav @ 0x7fd37a83d800] max_analyze_duration 5000000 reached at 5024000
Input #0, wav, from '64byteumid.wav':
  Metadata:
    IENG            : IENG value
    originator_reference: orig reference
    IARL            : IARL value
    artist          : IART value
    ICMS            : ICMS value
    comment         : sample file for ffmpeg's bext parser 

    copyright       : ICOP value
    genre           : IGNR value
    IKEY            : IKEY value
    IMED            : IMED value
    title           : INAM value
    album           : IPRD value
    ISBJ            : ISBJ value
    encoder         : ISFT value
    ISRC            : ISRC value
    ISRF            : ISRF value
    encoded_by      : dave
    date            : 2001-09-13
    creation_time   : 07:50:05
    time_reference  : 119136534
    umid            : 0x060A2B34010101010101021333000000FF7FCBA40000008000000000000000FF0x000000000000008000000000000000000000000055534120574E5943444156
    coding_history  : A=PCM,F=44100,W=16,M=stereo,T=Orban AUDICY EDIT 
A=PCM,F=32000,W=16,M=stereo,T=Orban AUDICY SRC 

  Duration: 00:00:06.28, bitrate: 1029 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 32000 Hz, 2 channels, s16, 1024 kb/s
At least one output file must be specified

Attachments (1)

64byteumid.wav (789.6 KB) - added by dericed 5 years ago.
wav file with bext chunk with 64 byte umid

Download all attachments as: .zip

Change History (4)

Changed 5 years ago by dericed

wav file with bext chunk with 64 byte umid

comment:1 Changed 5 years ago by cehoyos

  • Component changed from undetermined to avformat

Does writing a 64bit umid tag work?

comment:2 Changed 5 years ago by dericed

How do I enable bext writing? The command I tried below does not produce a bext chunk (input file has no bext).

ffmpeg -y -i dave.wav -metadata umid="060A2B34010101010101021033000000FF7FCBA40000008000000000000000FF000000000000008000000000000000000000000055534120574E594344415645" -c:a copy umid.wav
ffmpeg version N-31814-g7076967, Copyright (c) 2000-2011 the FFmpeg developers
  built on Nov 29 2011 16:34:05 with gcc 4.2.1 (Apple Inc. build 5666) (dot 3)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --cc=/usr/bin/gcc-4.2 --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libxvid --disable-ffplay
  libavutil    51. 29. 1 / 51. 29. 1
  libavcodec   53. 39. 1 / 53. 39. 1
  libavformat  53. 22. 0 / 53. 22. 0
  libavdevice  53.  4. 0 / 53.  4. 0
  libavfilter   2. 50. 0 /  2. 50. 0
  libswscale    2.  1. 0 /  2.  1. 0
  libpostproc  51.  2. 0 / 51.  2. 0
[wav @ 0x7fb90a03d800] parser not found for codec pcm_s16le, packets or times may be invalid.
Input #0, wav, from 'dave.wav':
  Duration: 00:00:01.00, bitrate: 1536 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, 2 channels, s16, 1536 kb/s
Output #0, wav, to 'umid.wav':
  Metadata:
    umid            : 060A2B34010101010101021033000000FF7FCBA40000008000000000000000FF000000000000008000000000000000000000000055534120574E594344415645
    encoder         : Lavf53.22.0
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, 2 channels, 1536 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
size=     188kB time=00:00:01.00 bitrate=1536.4kbits/s    
video:0kB audio:188kB global headers:0kB muxing overhead 0.023958%

comment:3 Changed 5 years ago by cehoyos

  • Reproduced by developer set
  • Resolution set to fixed
  • Status changed from new to closed

Fixed the original problem, thank you for the sample!

Does "write_bext" option to write the bext metadata work?

Note: See TracTickets for help on using tickets.