Opened 11 years ago

Closed 3 years ago

Last modified 12 months ago

#2865 closed enhancement (fixed)

Front Center, Downmix Left, and Downmix Right unlabelled in QTPlayer

Reported by: CJ Owned by:
Priority: wish Component: avformat
Version: git-master Keywords: chan mov
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: yes

Description

Summary of the bug: When the below command generates an MOV file, we open it in Quicktime Player to verify the track configuration is labelled correctly. On the 3rd, 7th, and 8th audio tracks (0:3,0:7,0:8) the audio assignment label (QT Player>Movie Properties>Audio Settings>Channel Assignment) does not appear and instead says "Mono" in the Quicktime UI. When I run the FFMPEG -i <input> command by itself on the produced file, "Center" or "FC" does not show up in that track and instead says "mono".

How to reproduce:

Command Line - 

%ffmpegpath% -i "%~dpnx1" -map 0:v:0 -c:v prores -profile:v 3 -filter:v "setsar=sar=10/11" -top:v -1 -filter_complex "[0:a:0]pan=FL:c0=c0[outFL]" -map [outFL] -filter_complex "[0:a:0]pan=FR:c0=c1[outFR]" -map [outFR] -filter_complex "[0:a:0]pan=FC:c0=c2[outFC]" -map [outFC] -filter_complex "[0:a:0]pan=LFE:c0=c3[outLFE]" -map [outLFE] -filter_complex "[0:a:0]pan=BL:c0=c4[outBL]" -map [outBL] -filter_complex "[0:a:0]pan=BR:c0=c5[outBR]" -map [outBR] -filter_complex "[0:a:0]pan=DL:c0=c6[outDL]" -map [outDL] -filter_complex "[0:a:0]pan=DR:c0=c7[outDR]" -map [outDR] -c:a pcm_s24le -timecode 00:59:59:00 -f mov -y "%~dpn1_ProResHQ.mov"

ffmpeg version built on ... 07/02/2013

Analysis of Output Console Readout - 
ffmpeg version N-54362-ge0be3cb Copyright (c) 2000-2013 the FFmpeg developers
  built on Jul  2 2013 22:15:59 with gcc 4.7.3 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp
e --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena
ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-l
ibopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
eex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-
amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --
enable-libxvid --enable-zlib
  libavutil      52. 38.100 / 52. 38.100
  libavcodec     55. 18.100 / 55. 18.100
  libavformat    55. 11.100 / 55. 11.100
  libavdevice    55.  2.100 / 55.  2.100
  libavfilter     3. 77.101 /  3. 77.101
  libswscale      2.  3.100 /  2.  3.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'T:\prores_inbound\SD_TESTING\SD_IVTC_8c
hannel_ProResHQ_metasave.mov':
  Metadata:
    major_brand     : qt
    minor_version   : 537199360
    compatible_brands: qt
    creation_time   : 2013-08-14 20:10:39
    encoder         : Lavf55.11.100
  Duration: 00:00:10.01, start: 0.000000, bitrate: 51014 kb/s
    Stream #0:0(eng): Video: prores (apch / 0x68637061), yuv422p10le, 720x480, 4
1831 kb/s, SAR 10:11 DAR 15:11, 23.98 fps, 23.98 tbr, 11988 tbn, 11988 tbc
    Metadata:
      creation_time   : 2013-08-14 20:10:39
      handler_name    : Apple Alias Data Handler
      timecode        : 00:59:59:00
    Stream #0:1(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels
 (FL), s32, 1152 kb/s
    Metadata:
      creation_time   : 2013-08-14 20:10:39
      handler_name    : Apple Alias Data Handler
    Stream #0:2(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels
 (FR), s32, 1152 kb/s
    Metadata:
      creation_time   : 2013-08-14 20:10:39
      handler_name    : Apple Alias Data Handler
    Stream #0:3(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32,
 1152 kb/s
    Metadata:
      creation_time   : 2013-08-14 20:10:39
      handler_name    : Apple Alias Data Handler
    Stream #0:4(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels
 (LFE), s32, 1152 kb/s
    Metadata:
      creation_time   : 2013-08-14 20:10:39
      handler_name    : Apple Alias Data Handler
    Stream #0:5(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels
 (BL), s32, 1152 kb/s
    Metadata:
      creation_time   : 2013-08-14 20:10:39
      handler_name    : Apple Alias Data Handler
    Stream #0:6(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels
 (BR), s32, 1152 kb/s
    Metadata:
      creation_time   : 2013-08-14 20:10:39
      handler_name    : Apple Alias Data Handler
    Stream #0:7(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels
 (DL), s32, 1152 kb/s
    Metadata:
      creation_time   : 2013-08-14 20:10:39
      handler_name    : Apple Alias Data Handler
    Stream #0:8(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels
 (DR), s32, 1152 kb/s
    Metadata:
      creation_time   : 2013-08-14 20:10:39
      handler_name    : Apple Alias Data Handler
    Stream #0:9(eng): Data: none (tmcd / 0x64636D74), 0 kb/s
    Metadata:
      creation_time   : 2013-08-14 20:10:39
      handler_name    : Apple Alias Data Handler
      timecode        : 00:59:59:00
At least one output file must be specified

BTW, if you find a better way to do this command, I would really appreciate it. We need 8 mono tracks in an MOV with ProResHQ and this command does 95% of the job whereas our current process does about 65% of the job.

Attachments (2)

SD_IVTC_8channel_ProResHQ_test.mov (998.1 KB ) - added by CJ 11 years ago.
Example of output of command line, 12 frames of black and silence.
SD_IVTC_8channel_ProResHQ_test_withT3.7.8_labels.mov (1005.2 KB ) - added by CJ 11 years ago.
Asset with labelling provided by QT Player. Same video and audio.

Download all attachments as: .zip

Change History (16)

by CJ, 11 years ago

Example of output of command line, 12 frames of black and silence.

comment:1 by Carl Eugen Hoyos, 11 years ago

Component: FFmpegavformat
Keywords: chan added; Quicktime Channel Metadata ProResHQ removed
Priority: normalwish
Type: defectenhancement
Version: unspecifiedgit-master

Could you provide a mov sample that shows the intended layout in QuickTime?

by CJ, 11 years ago

Asset with labelling provided by QT Player. Same video and audio.

comment:2 by CJ, 11 years ago

Thank you so much for looking into this. I only called it a defect as 5 of the 8 tracks were working so I thought it was a bug. Anyway, the attached file is almost the same asset, but now with QTPlayer's labelling included. You'll see in QTPlayer's movie inspector as well when all 8 tracks are turned on in Movie Properties. That's another weird thing about the LibAV output is that the tracks are "turned off" upon output from FFMPEG.

Chris.

in reply to:  2 ; comment:3 by Carl Eugen Hoyos, 11 years ago

Replying to cjplay93:

I only called it a defect as 5 of the 8 tracks were working so I thought it was a bug.

I really understand that, the problem is that DL and DR were never supported when writing the chan atom, adding support is relatively easy for caf and aiff (which does not help you) but less easy for mov (if used to be identical for mov and the other containers but was deliberately broken at some point, it will be necessary to test if there is a hidden feature in the brokenness that I so far didn't see or if the change can simply be reverted).

Concerning FC vs "mono": FFmpeg cannot discern between them (mono and center are the same in wav), are you only worried because QuickTime does not show what you expect or is the output file effectively broken if you produce six instead of eight channels?

Anyway, the attached file is almost the same asset, but now with QTPlayer's labelling included.

This is extremely useful, thank you!

You'll see in QTPlayer's movie inspector as well when all 8 tracks are turned on in Movie Properties. That's another weird thing about the LibAV output is that the tracks are "turned off" upon output from FFMPEG.

I still believe that the typical use-case is to mux several languages into one mov file and you don't want them to play simultaneously. But what you ask is an often requested feature, help on this is welcome, initial tests showed that we (or at least I) don't know how exactly to enable all tracks. (But you could test older versions of FFmpeg.)

Version 0, edited 11 years ago by Carl Eugen Hoyos (next)

in reply to:  3 comment:4 by CJ, 11 years ago

Replying to cehoyos:

I really understand that, the problem is that DL and DR were never supported when writing the chan atom, adding support is relatively easy for caf and aiff (which does not help you) but less easy for mov (if used to be identical for mov and the other containers but was deliberately broken at some point, it will be necessary to test if there is a hidden feature in the brokenness that I so far didn't see or if the change can simply be reverted).

The "caf" and "aiff" is a point I'd not differentiated. I simply want 24-bit, 48khz LE PCM inside the MOV file. If you feel using a different audio format within the Quicktime output is more viable and/or simpler for you, then by all means I will gladly change my command to match that. What would your recommendation be there?

Concerning FC vs "mono": FFmpeg cannot discern between them (mono and center are the same in wav), are you only worried because QuickTime does not show what you expect or is the output file effectively broken if you produce six instead of eight channels?

Yes, I just need QTPlayer to show the correct values, thus validating the output for Apple's usage.

Anyway, the attached file is almost the same asset, but now with QTPlayer's labelling included.

This is extremely useful, thank you!

You'll see in QTPlayer's movie inspector as well when all 8 tracks are turned on in Movie Properties. That's another weird thing about the LibAV output is that the tracks are "turned off" upon output from FFMPEG.

I still believe that the typical use-case is to mux several languages into one mov file and you don't want them to play simultaneously. But what you ask is an often requested feature, help on this is welcome, initial tests showed that we (or at least I) don't know how exactly to enable all tracks. (But you could test older versions of FFmpeg.)

Exactly what help is needed? Programmatic or simple decisive choice? I actually agree on that with your typical use case. I have actually tried turning on those tracks in QTPlayer and they fail to stay on. Even on a Mac and saving a new file. Strange... Anyway, I will help how I can. If you need research into atom states/occupancies/settings, I can help there as I've gotten to know Atombox a bit.

comment:5 by Carl Eugen Hoyos, 11 years ago

Keywords: mov added

comment:6 by CJ, 11 years ago

Confirming FFMBC has multi-track working in Quicktime player. I was able to get 8 tracks working at one time. I'm checking on the metadata track assignments as I have to re-write most of my command to work with the older syntax.

More as it develops.

Chris.

comment:7 by billys, 10 years ago

Could I suggest that we introduce a new channel ("C", "center"). This channel will become the channel for true mono 1.0 channel sets. FC will become the channel to be used for all other channel sets. When a channel layout is unknown, 0 should be used as opposed to guessing mono/FC.

comment:8 by CJ, 10 years ago

That's rational to me.

comment:9 by speedyrazor, 9 years ago

I have exactly the same issue with the latest version of ffmpeg, did anyone get to the bottom of this?

comment:10 by mattdicken, 6 years ago

This is still an issue in the current build. Was it ever addressed elsewhere?

comment:11 by Marc London, 5 years ago

We are also very interested in this. Perhaps a Mono track assignment (M?) is created to differentiate from true Front Center (FC) as part of a 5.1.

comment:13 by James, 3 years ago

Analyzed by developer: set
Reproduced by developer: set
Resolution: fixed
Status: openclosed

in reply to:  12 comment:14 by Jeff, 12 months ago

Replying to Balling:

Last part is fixed here. https://patchwork.ffmpeg.org/project/ffmpeg/patch/20220328232453.54773-6-jamrial@gmail.com/

I found another use case where this fix would be helpful.
https://trac.ffmpeg.org/ticket/10527

Note: See TracTickets for help on using tickets.