Skip to content

Expose Stream Disposition from FFMPEG - audio tracks disabled automatically. #706

@vade

Description

@vade

Overview

Hello. firstly, thank you for PyAV.

I am working with for air masters for a client that are Quicktime, containing Pro Res 422 HQ, Time Code and up to 16 channels of discrete mono uncompressed LPCM audio tracks. I am re-muxing and thus making a new container which has some (but not all) packets from the master.

My new container has all of my audio tracks, but introspecting these tracks in both Quicktime Player and in MediaInfo indicate all but the 1st audio track is disabled by default.

I believe this is related to FFMPEG's disposition default behavior - which I dont believe PyAV exposes. See FFMPEGs docs and search for disposition

Expected behavior

Audio tracks added other than the first are explicitly enabled unless specified with a different language grouping.
ie:
6 discrete mono tracks marked as english (perhaps Chanel layout for 5.1) - all enabled
6 discrete stereo tracks marked with different languages, all but the first disabled.
6 discrete tracks manually marked with disposition information - enabled as per disposition requests.

Actual behavior

Audio tracks after the first appear to be disabled with no way to intercede. This may be an FFMPEG issue, its unclear to me if this has been patched, See : https://trac.ffmpeg.org/ticket/2626 & https://trac.ffmpeg.org/ticket/3622

Build report:

Im not using a build, but a pip install in a Google Colab instance. What do you need here? I cant run the command listed sans error.

Investigation

Load multi track audio files into various application that allow for intropspecting tracks - such as Quicktime, MediaInfo, etc.

Reproduction

Add multiple discrete audio to an output container with PyAV and introspect using the above tools.

Versions

- OS: Google Colab - Linux d0ce16e0210c 4.19.112+ #1 SMP Thu Jul 23 08:00:38 PDT 2020 x86_64 x86_64 x86_64 GNU/Linux
  • PyAV runtime:
PyAV v8.0.2
git origin: git@github.com:PyAV-Org/PyAV
git commit: v8.0.2
library configuration: --disable-doc --disable-static --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-shared --enable-version3 --enable-zlib --prefix=/tmp/vendor
library license: GPL version 3 or later
libavcodec     58. 54.100
libavdevice    58.  8.100
libavfilter     7. 57.100
libavformat    58. 29.100
libavutil      56. 31.100
libswresample   3.  5.100
libswscale      5.  5.100
  • PyAV build:
python3: can't open file 'setup.py': [Errno 2] No such file or directory
  • FFmpeg:
ffmpeg version 4.3-2~18.04.york0 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
configuration: --prefix=/usr --extra-version='2~18.04.york0' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
libavutil      56. 51.100 / 56. 51.100
libavcodec     58. 91.100 / 58. 91.100
libavformat    58. 45.100 / 58. 45.100
libavdevice    58. 10.100 / 58. 10.100
libavfilter     7. 85.100 /  7. 85.100
libavresample   4.  0.  0 /  4.  0.  0
libswscale      5.  7.100 /  5.  7.100
libswresample   3.  7.100 /  3.  7.100
libpostproc    55.  7.100 / 55.  7.100

Research

I have done the following:

Additional context

{{ Add any other context about the problem here. }}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions