[FFmpeg-trac] #4334(ffmpeg:new): Second audio track marked as default after copy

FFmpeg trac at avcodec.org
Fri Feb 27 10:53:21 CET 2015


#4334: Second audio track marked as default after copy
-------------------------------------+-------------------------------------
             Reporter:  mar          |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:  ffmpeg       |                  Version:  git-
             Keywords:  mp4 default  |  master
  audio track                        |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug:

 I have an mp4 source file with one video and two audio tracks. The first
 audio track is english and marked as default, the second is german. But
 the language in the file is undefined for both audio tracks:

 {{{
 c:\Temp>ffprobe -i "C:\Temp\Test.mp4"
 ffprobe version N-70239-g111d79a Copyright (c) 2007-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 --enab
 le-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-
 libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-
 libilbc --enable-lib
 modplug --enable-libmp3lame --enable-libopencore-amrnb --enable-
 libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp
 --enable-libschroedinge
 r --enable-libsoxr --enable-libspeex --enable-libtheora --enable-
 libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-
 amrwbenc --enable-libvorbis
  --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264
 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-
 decklink --enab
 le-zlib
   libavutil      54. 19.100 / 54. 19.100
   libavcodec     56. 26.100 / 56. 26.100
   libavformat    56. 23.105 / 56. 23.105
   libavdevice    56.  4.100 / 56.  4.100
   libavfilter     5. 11.101 /  5. 11.101
   libswscale      3.  1.101 /  3.  1.101
   libswresample   1.  1.100 /  1.  1.100
   libpostproc    53.  3.100 / 53.  3.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\Temp\Test.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomiso2avc1mp41
     encoder         : Lavf56.23.105
   Duration: 00:00:05.02, start: 0.005333, bitrate: 1658 kb/s
     Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
 720x576 [SAR 64:45 DAR 16:9], 757 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc
 (default)
     Metadata:
       handler_name    : VideoHandler
     Stream #0:1(und): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side),
 fltp, 448 kb/s (default)
     Metadata:
       handler_name    : SoundHandler
     Side data:
       unknown side data type 7 (4 bytes)
     Stream #0:2(und): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side),
 fltp, 448 kb/s
     Metadata:
       handler_name    : SoundHandler
     Side data:
       unknown side data type 7 (4 bytes)

 c:\Temp>
 }}}

 How to reproduce:
 Now, I want to change the order of the audio tracks so that the first
 track will be german '''and maked as default''' and the second will be
 english. And I also want to set the language meta data to "ger" and "eng".
 I execute the following:

 {{{
 c:\Temp>ffmpeg.exe -i Test.mp4 -map 0:0 -map 0:2 -map 0:1 -c copy
 -metadata:s:a:0 language=ger -metadata:s:a:1 language=eng Out.mp4
 ffmpeg version N-70239-g111d79a 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 --enab
 le-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-
 libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-
 libilbc --enable-lib
 modplug --enable-libmp3lame --enable-libopencore-amrnb --enable-
 libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp
 --enable-libschroedinge
 r --enable-libsoxr --enable-libspeex --enable-libtheora --enable-
 libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-
 amrwbenc --enable-libvorbis
  --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264
 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-
 decklink --enab
 le-zlib
   libavutil      54. 19.100 / 54. 19.100
   libavcodec     56. 26.100 / 56. 26.100
   libavformat    56. 23.105 / 56. 23.105
   libavdevice    56.  4.100 / 56.  4.100
   libavfilter     5. 11.101 /  5. 11.101
   libswscale      3.  1.101 /  3.  1.101
   libswresample   1.  1.100 /  1.  1.100
   libpostproc    53.  3.100 / 53.  3.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Test.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomiso2avc1mp41
     encoder         : Lavf56.23.105
   Duration: 00:00:05.02, start: 0.005333, bitrate: 1658 kb/s
     Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
 720x576 [SAR 64:45 DAR 16:9], 757 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc
 (default)
     Metadata:
       handler_name    : VideoHandler
     Stream #0:1(und): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side),
 fltp, 448 kb/s (default)
     Metadata:
       handler_name    : SoundHandler
     Side data:
       unknown side data type 7 (4 bytes)
     Stream #0:2(und): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side),
 fltp, 448 kb/s
     Metadata:
       handler_name    : SoundHandler
     Side data:
       unknown side data type 7 (4 bytes)
 [mp4 @ 0000000004a57b80] track 1: codec frame size is not set
 [mp4 @ 0000000004a57b80] track 2: codec frame size is not set
 Output #0, mp4, to 'Out.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomiso2avc1mp41
     encoder         : Lavf56.23.105
     Stream #0:0(und): Video: h264 ([33][0][0][0] / 0x0021), yuv420p,
 720x576 [SAR 64:45 DAR 16:9], q=2-31, 757 kb/s, 25 fps, 25 tbr, 12800 tbn,
 12800 tbc (defau
 lt)
     Metadata:
       handler_name    : VideoHandler
     Stream #0:1(ger): Audio: ac3 ([165][0][0][0] / 0x00A5), 48000 Hz,
 5.1(side), 448 kb/s
     Metadata:
       handler_name    : SoundHandler
     Side data:
       unknown side data type 7 (4 bytes)
     Stream #0:2(eng): Audio: ac3 ([165][0][0][0] / 0x00A5), 48000 Hz,
 5.1(side), 448 kb/s (default)
     Metadata:
       handler_name    : SoundHandler
     Side data:
       unknown side data type 7 (4 bytes)
 Stream mapping:
   Stream #0:0 -> #0:0 (copy)
   Stream #0:2 -> #0:1 (copy)
   Stream #0:1 -> #0:2 (copy)
 Press [q] to stop, [?] for help
 frame=  125 fps=0.0 q=-1.0 Lsize=    1017kB time=00:00:05.02
 bitrate=1658.2kbits/s
 video:463kB audio:550kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 0.483151%

 c:\Temp>
 }}}

 But in the output file, '''the second track is marked as default'''
 (english) and not the first (german):

 {{{
 c:\Temp>ffprobe -i Out.mp4
 ffprobe version N-70239-g111d79a Copyright (c) 2007-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 --enab
 le-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-
 libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-
 libilbc --enable-lib
 modplug --enable-libmp3lame --enable-libopencore-amrnb --enable-
 libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp
 --enable-libschroedinge
 r --enable-libsoxr --enable-libspeex --enable-libtheora --enable-
 libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-
 amrwbenc --enable-libvorbis
  --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264
 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-
 decklink --enab
 le-zlib
   libavutil      54. 19.100 / 54. 19.100
   libavcodec     56. 26.100 / 56. 26.100
   libavformat    56. 23.105 / 56. 23.105
   libavdevice    56.  4.100 / 56.  4.100
   libavfilter     5. 11.101 /  5. 11.101
   libswscale      3.  1.101 /  3.  1.101
   libswresample   1.  1.100 /  1.  1.100
   libpostproc    53.  3.100 / 53.  3.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Out.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomiso2avc1mp41
     encoder         : Lavf56.23.105
   Duration: 00:00:05.02, start: 0.000000, bitrate: 1658 kb/s
     Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
 720x576 [SAR 64:45 DAR 16:9], 757 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc
 (default)
     Metadata:
       handler_name    : VideoHandler
     Stream #0:1(ger): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side),
 fltp, 448 kb/s
     Metadata:
       handler_name    : SoundHandler
     Side data:
       unknown side data type 7 (4 bytes)
     Stream #0:2(eng): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side),
 fltp, 448 kb/s (default)
     Metadata:
       handler_name    : SoundHandler
     Side data:
       unknown side data type 7 (4 bytes)

 c:\Temp>
 }}}

 I'm not shre if I'm correct, but should ffmpeg not always produce files
 where the first audio track is makred as default? Or is there a
 possibility how I can infuence ffmpeg so that the first audio track will
 be marked as default?

--
Ticket URL: <https://trac.ffmpeg.org/ticket/4334>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list