[FFmpeg-user] How to generate IRT conform D10 MXFs (IMX50) with FFmpeg?

Christoph Gerstbauer christophgerstbauer at gmail.com
Thu Apr 30 08:20:22 CEST 2015


Hello

I am making tests with IMX50/MXF encodings with FFMBC and FFMPEG. (with
24bit audio and 16bit audio)
The tests compare the final files with the IRT MXF Analyzer Pro tool to
be shure to be IRT conform.
(My commandline outputs are at the bottom of this mail)

Both files (generated with ffmbc and ffmpeg) are working very well in
editing tools but there is a little difference:

The IMX50 generated by ffmbc has no errors/warnings at IRT MXF Analyzer
(with 16bit audio). It is really perfect. In fact (with one exception) I 
NEVER had a clean "green" MXF by testing other probes from other 
encoding tools. Only the IRT probes itself are clean (of course). So 
ffmbc MXF is IRT conform when using the
standard target preset "imx50". (it automatically uses 16bit audio)

When I use 24bit audio encoding at ffmbc, I got this error from IRT MXF 
Analyzer:
ERROR: "The Sound Essence Descriptor signals that the number if
quantization bits is 24, which is higher than actually required (16) as
detemined by parsing the essence."

I tried the same with ffmpeg:
When using 16bit audio, I got no audio error. But I get always this warning:
WARNING:
"Fill Item Key with a wrong RP210 (SMPTE Metadata Dictionary) version
number of 0x01. The correct version number is 0x02"

When using 24bit audio I get the same error like in ffmbc with 24bit audio:
ERROR: "The Sound Essence Descriptor signals that the number if
quantization bits is 24, which is higher than actually required (16) as
detemined by parsing the essence."

So, I could always prevent the audio WARNING by producing 16bit audio.
But is there a problem in the MXF when producing 24bit? Sound works in 
editing tools.


So I have 2 questions (because I want to use ffmpeg instead of ffmbc)

1.) Is there an syntax option in ffmpeg/ffmbc for 24bit audio encoding to
prevent this ERROR:
"The Sound Essence Descriptor signals that the number if quantization
bits is 24, which is higher than actually required (16) as detemined by
parsing the essence."

2.) Is there an syntax option in ffmpeg to prevent this warning?
WARNING:
"Fill Item Key with a wrong RP210 (SMPTE Metadata Dictionary) version
number of 0x01. The correct version number is 0x02"


Every hint would be very helpful, thank you!

Best Regards
Christoph




USED SYNTAX:

-------------------------------------------------------------

FFmbc (16bit audio):

ffmbc -i I:\IMX_tests\IMX50_CARBON.avi -target imx50
I:\IMX_tests\_FFMBC_PAL_IMX_16bit_2.mxf -loglevel debug
FFmbc version 0.7-rc7
Copyright (c) 2008-2012 Baptiste Coudurier and the FFmpeg developers
Input #0, avi, from 'I:\IMX_tests\IMX50_CARBON.avi':
    Metadata:
      encoder: Lavf55.0.100
      ISMP: 00:00:00:00
    Duration: 00:00:20.00, start: 0.000000, bitrate: 113291 kb/s
      Stream #0.0(und): Video: ffvhuff, yuv422p, 720x608p, PAR 152:135
DAR 4:3, 25.00 fps
      Stream #0.1(und): Audio: pcm_s24le, 48000 Hz, stereo, s32, 2304 kb/s
File 'I:\IMX_tests\_FFMBC_PAL_IMX_16bit_2.mxf' already exists. Overwrite
? [y/N] y
[buffer @ 00000000018E07E0] w:720 h:608 pixfmt:yuv422p tb:1/1000000
sar:152/135 sws_param:
Incompatible sample format 's32' for codec 'pcm_s16le', auto-selecting
format 's16'
Warning, QMAT_SHIFT is larger than 21, overflows possible
      Last message repeated 1 times
Output #0, mxf_d10, to 'I:\IMX_tests\_FFMBC_PAL_IMX_16bit_2.mxf':
    Metadata:
      encoder: FFmbc 0.7
      Stream #0.0(und), 0, 1/25: Video: mpeg2video, yuv422p, 720x608i tff
[PAR 152:135 DAR 4:3], tbc 1/25, cbr, 50000 kb/s, 25.00 fps
      Stream #0.1(und), 0, 1/48000: Audio: pcm_s16le, 48000 Hz, stereo,
s16, 1536 kb/s
Stream mapping:
    Stream #0.0 -> #0.0
    Stream #0.1 -> #0.1
Press [q] to stop, [?] for help
[mxf_d10 @ 000000000037C9C0] package type:1
[mxf_d10 @ 000000000037C9C0] package type:2
[mxf_d10 @ 000000000037C9C0] edit units count 0
frame=  239 fps= 25 q=3.0 size=   72409kB time=00:00:09.52
bitrate=62307.8kbits/s eta=00:00:10.51

-------------------------------------------------------------

FFmbc (24bit audio):

ffmbc -i I:\IMX_tests\IMX50_CARBON.avi -target imx50 -acodec pcm_s24le
I:\IMX_tests\_FFMBC_PAL_IMX_24bit_2.mxf -loglevel debug
FFmbc version 0.7-rc7
Copyright (c) 2008-2012 Baptiste Coudurier and the FFmpeg developers
Input #0, avi, from 'I:\IMX_tests\IMX50_CARBON.avi':
    Metadata:
      encoder: Lavf55.0.100
      ISMP: 00:00:00:00
    Duration: 00:00:20.00, start: 0.000000, bitrate: 113291 kb/s
      Stream #0.0(und): Video: ffvhuff, yuv422p, 720x608p, PAR 152:135
DAR 4:3, 25.00 fps
      Stream #0.1(und): Audio: pcm_s24le, 48000 Hz, stereo, s32, 2304 kb/s
[buffer @ 00000000002EFF60] w:720 h:608 pixfmt:yuv422p tb:1/1000000
sar:152/135 sws_param:
Warning, QMAT_SHIFT is larger than 21, overflows possible
      Last message repeated 1 times
Output #0, mxf_d10, to 'I:\IMX_tests\_FFMBC_PAL_IMX_24bit_2.mxf':
    Metadata:
      encoder: FFmbc 0.7
      Stream #0.0(und), 0, 1/25: Video: mpeg2video, yuv422p, 720x608i tff
[PAR 152:135 DAR 4:3], tbc 1/25, cbr, 50000 kb/s, 25.00 fps
      Stream #0.1(und), 0, 1/48000: Audio: pcm_s24le, 48000 Hz, stereo,
s32, 2304 kb/s
Stream mapping:
    Stream #0.0 -> #0.0
    Stream #0.1 -> #0.1
Press [q] to stop, [?] for help
[mxf_d10 @ 00000000003BF460] package type:1
[mxf_d10 @ 00000000003BF460] package type:2
[mxf_d10 @ 00000000003BF460] edit units count 0
frame=  341 fps= 25 q=3.0 size=  103570kB time=00:00:13.60
bitrate=62385.4kbits/s eta=00:00:06.41

-------------------------------------------------------------

FFMPEG (24bit audio):

ffmpegnew -i I:\IMX_tests\IMX50_CARBON.avi -map 0:v -map 0:a -c:v
mpeg2video -r 25 -pix_fmt yuv422p -aspect 4:3 -minrate 50000k -maxrate
50000k -b:v 50000k -intra -flags +ildct+low_del
ay -intra_vlc 1 -non_linear_quant 1 -ps 1 -qmin 1 -qmax 3 -top 1 -dc 10
-bufsize 2000000 -rc_init_occupancy 2000000 -rc_max_vbv_use 1
-rc_min_vbv_use 1 -c:a pcm_s24le -ar 48000 -f mxf_d10 I:\IMX_tests
\_FFMPEGNEW_PAL_IMX_24bit_2.mxf
ffmpeg version N-71727-g46778ab Copyright (c) 2000-2015 the FFmpeg
developers
    built with gcc 4.9.2 (GCC)
    configuration: --enable-gpl --enable-version3 --disable-w32threads
--enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r
--enable-gnutls --enable-iconv --enable-libass --enable-libblu
ray --enable-libbs2b --enable-libcaca --enable-libdcadec
--enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc
--enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enab
le-libopencore-amrwb --enable-libopenjpeg --enable-libopus
--enable-librtmp --enable-libschroedinger --enable-libsoxr
--enable-libspeex --enable-libtheora --enable-libtwolame
--enable-libvidstab --ena
ble-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis
--enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264
--enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --ena
ble-decklink --enable-zlib
    libavutil      54. 23.101 / 54. 23.101
    libavcodec     56. 35.101 / 56. 35.101
    libavformat    56. 31.100 / 56. 31.100
    libavdevice    56.  4.100 / 56.  4.100
    libavfilter     5. 14.100 /  5. 14.100
    libswscale      3.  1.101 /  3.  1.101
    libswresample   1.  1.100 /  1.  1.100
    libpostproc    53.  3.100 / 53.  3.100
Input #0, avi, from 'I:\IMX_tests\IMX50_CARBON.avi':
    Metadata:
      encoder         : Lavf55.0.100
      timecode        : 00:00:00:00
    Duration: 00:00:20.00, start: 0.000000, bitrate: 113291 kb/s
      Stream #0:0: Video: ffvhuff (FFVH / 0x48564646), yuv422p, 720x608,
111196 kb/s, SAR 152:135 DAR 4:3, 25 fps, 25 tbr, 25 tbn, 25 tbc
      Stream #0:1: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 48000 Hz,
stereo, s32 (24 bit), 2304 kb/s
File 'I:\IMX_tests\_FFMPEGNEW_PAL_IMX_24bit_2.mxf' already exists.
Overwrite ? [y/N] y
Output #0, mxf_d10, to 'I:\IMX_tests\_FFMPEGNEW_PAL_IMX_24bit_2.mxf':
    Metadata:
      timecode        : 00:00:00:00
      encoder         : Lavf56.31.100
      Stream #0:0: Video: mpeg2video, yuv422p, 720x608 [SAR 152:135 DAR
4:3], q=1-3, 50000 kb/s, 25 fps, 25 tbn, 25 tbc
      Metadata:
        encoder         : Lavc56.35.101 mpeg2video
      Stream #0:1: Audio: pcm_s24le, 48000 Hz, stereo, s32 (24 bit), 2304
kb/s
      Metadata:
        encoder         : Lavc56.35.101 pcm_s24le
Stream mapping:
    Stream #0:0 -> #0:0 (ffvhuff (native) -> mpeg2video (native))
    Stream #0:1 -> #0:1 (pcm_s24le (native) -> pcm_s24le (native))
Press [q] to stop, [?] for help
[mxf_d10 @ 00000000003bf240] the number of audio channels shall be 4 or
8 : the output will not comply to MXF D-10 specs, use -d10_channelcount
to fix this
frame=  500 fps=347 q=1.6 Lsize=  152756kB time=00:00:20.00
bitrate=62568.9kbits/s
video:122070kB audio:5625kB subtitle:0kB other streams:0kB global
headers:0kB muxing overhead: 19.625412%


More information about the ffmpeg-user mailing list