Blog Archive

Wednesday 9 December 2015

Extract each track from a NI STEM mp4 file using ffmpeg

There's a new fancy format for mixing up tracks called, rather unoriginally "STEMS" from Native Instruments. When you buy one, it comes in an mp4 container, and you can treat this mp4 like any other mp4 or mkv container and extract each stream, or track, into a wav file for use in apps which don't (yet) support NI STEMS, like every app except Traktor at time of writing.

Get info about the mp4 file :

# ffmpeg -i test.mp4

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 1
    compatible_brands: isom
    creation_time   : 2015-11-06 12:29:51
    title           : Academic (Extended Mix)
    artist          : New Order
    album           : Academic (Extended Mix)
    track           : 1/1
    publisher       : Mute
    LABEL           : Mute
    AUDIOTYPE       : STEM
    ISRC            : GB-R8R-15-00458
    CATALOGNUMBER   : S7STUMM390STEMS
  Duration: 00:08:57.28, start: 0.000000, bitrate: 1219 kb/s
    Stream #0:0(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 258 kb/s (default)
    Metadata:
      creation_time   : 1992-05-30 16:50:26
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 257 kb/s
    Metadata:
      creation_time   : 1996-02-18 23:12:18
    Stream #0:2(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 247 kb/s
    Metadata:
      creation_time   : 1999-11-09 05:34:10
    Stream #0:3(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 253 kb/s
    Metadata:
      creation_time   : 2003-01-17 07:35:46
    Stream #0:4(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 191 kb/s
    Metadata:
      creation_time   : 2005-09-14 05:17:06
    Stream #0:5: Video: png, rgb24, 1236x1236, 90k tbr, 90k tbn, 90k tbc

Stream 0 appears to be the full track, stream 1 onwards seem to be the separate parts.

Extract stream 1:

ffmpeg -i test.mp4 -map 0:1 -vn test1.wav

Extract stream 2:

ffmpeg -i test.mp4 -map 0:2 -vn test2.wav

etc....