ffmpegvideo-streamingmpeg-dashmp4boxdash.js

MPEG-DASH - Multiplexed Representations Issue


I'm trying to learn ffmpeg, MP4Box, and MPEG-DASH, but I'm running into an issue with the .mp4 I'm using. I'm using ffmpeg to demux the mp4 with this command:

ffmpeg -i test.mp4 -c:v copy -g 72 -an video.mp4 -c:a copy audio.mp4

Once the two files are created, I use MP4Box to segment the files for the dash player using this command:

MP4Box -dash 4000 -frag 1000 -rap -segment-name segment_ output.mp4

Which does create all the files I think I need. Then I point the player to the output_dash.mpd and nothing happens except a ton of messages in the console:

[8] EME detected on this user agent! (ProtectionModel_21Jan2015) 
[11] Playback Initialized 
[21] [dash.js 2.3.0] MediaPlayer has been initialized 
[64] Parsing complete: ( xml2json: 3.42ms, objectiron: 2.61ms, total: 0.00603s) 
[65] Manifest has been refreshed at Wed Apr 12 2017 12:16:52 GMT-0600 (MDT)[1492021012.196]  
[72] MediaSource attached to element.  Waiting on open... 
[77] MediaSource is open! 
[77] Duration successfully set to: 148.34 
[78] Added 0 inline events 
[78] No video data. 
[79] No audio data. 
[79] No text data. 
[79] No fragmentedText data. 
[79] No embeddedText data. 
[80] Multiplexed representations are intentionally not supported, as they are not compliant with the DASH-AVC/264 guidelines 
[81] No streams to play.

Here is the MP4Box -info on the video I'm using:

* Movie Info *
    Timescale 1000 - Duration 00:02:28.336
    Fragmented File no - 2 track(s)
    File suitable for progressive download (moov before mdat)
    File Brand mp42 - version 512
    Created: GMT Wed Feb  6 06:28:16 2036

File has root IOD (9 bytes)
Scene PL 0xff - Graphics PL 0xff - OD PL 0xff
Visual PL: Not part of MPEG-4 Visual profiles (0xfe)
Audio PL: Not part of MPEG-4 audio profiles (0xfe)
No streams included in root OD

iTunes Info:
    Name: Rogue One - A Star Wars Story
    Artist: Lucasfilm
    Genre: Trailer
    Created: 2016
    Encoder Software: HandBrake 0.10.2 2015060900
    Cover Art: JPEG File

Track # 1 Info - TrackID 1 - TimeScale 90000 - Duration 00:02:28.335
Media Info: Language "Undetermined" - Type "vide:avc1" - 3552 samples
Visual Track layout: x=0 y=0 width=1920 height=816
MPEG-4 Config: Visual Stream - ObjectTypeIndication 0x21
AVC/H264 Video - Visual Size 1920 x 816
    AVC Info: 1 SPS - 1 PPS - Profile High @ Level 4.1
    NAL Unit length bits: 32
    Pixel Aspect Ratio 1:1 - Indicated track size 1920 x 816
Self-synchronized

Track # 2 Info - TrackID 2 - TimeScale 44100 - Duration 00:02:28.305
Media Info: Language "English" - Type "soun:mp4a" - 6387 samples
MPEG-4 Config: Audio Stream - ObjectTypeIndication 0x40
MPEG-4 Audio MPEG-4 Audio AAC LC - 2 Channel(s) - SampleRate 44100
Synchronized on stream 1
Alternate Group ID 1

I know I need to separate the video and audio and I think that's where my issue is. The command I'm using probably isn't doing the right thing.

Is there a better command to demux my mp4? Is the MP4Box command I'm using best for segmenting the files? If I use different files, will they always need to be demuxed?

One thing to mention, if I use the following commands everything works fine, but there is no audio because of the -an which means it's only video:

ffmpeg -i test.mp4 -c:v copy -g 72 -an output.mp4

MP4Box -dash 4000 -frag 1000 -rap -segment-name segment_ output.mp4

UPDATE

I noticed that the video had no audio stream, but the audio had the video stream which is why I got the mux error. I thought that might be an issue so I ran this command to keep the unwanted streams out of the outputs:

ffmpeg -i test.mp4 -c:v copy -g 72 -an video.mp4 -c:a copy -vn audio.mp4

then I run:

MP4Box -dash 4000 -frag 1000 -rap -segment-name segment_ video.mp4 audio.mp4

now I no longer get the Multiplexed representations are intentionally not supported... message, but now I get:

[122] Video Element Error: MEDIA_ERR_SRC_NOT_SUPPORTED 
[123] [object MediaError] 
[125] Schedule controller stopping for audio 
[126] Caught pending play exception - continuing (NotSupportedError: Failed to load because no supported source was found.)

I tried playing the video and audio independently through Chrome and they both work, just not through the dash player. Ugh, this is painful to learn, but I feel like I'm making progress.


Solution

  • I ended up going with Bento4. I'm not sure why I couldn't get MP4Box working, but Bento4 worked very easy and had me up and going within a few hours.