DASH Streaming Support

NOTE: This post is not the most up-to-date documentation of DASH support in GPAC. For the latest information on DASH, check out these pages:

We have been updating the support for DASH Streaming (ISO/IEC 23009-1) in GPAC as of revision 3849. The update covers both content generation tools and player, and both DASH and HLS support.

For more details on what is DASH and HTTP streaming, please refer to this post.

DASH Basics: MPD and Segments

Let’s quickly summarize how a DASH content is made of:

  • MPD: an XML document describing where the various media resources present in the content are located. The media resources can be single-media (for example, a video-only MP4 file) or a multiplexed set of streams (for example an AV MPEG-2 Transort Stream). Streams can be scalable (such as SVC) but we won’t go into such details as GPAC doesn’t support advanced description of scalable streams in DASH. Some media resources may exist in different versions, for example different bitrate or language or resolutions. In DASH, such a “version” of the stream is called a representation, and all representations are grouped together in an AdaptationSet.
  • segment: a continuous part of a media resource. The segment is the smallest part of the media that can be located in the MPD. What a segment exactly contains depends on the underlying media format of the content.
  • subsegment: a continuous part of a segment, or of a subsegment.
  • sidx: short name for SegmentIndexBox, this is an ISOBMF (MP4/3GP container) structure describing a segment by giving its earliest presentation time, how the segment is further divided into subsegments, random access points locations (byte offset) and timing in the segment payload. The goal of the SIDX is to build an index of the segment at a given granularity to simplify trick modes (seeking, fast-forward, fast-rewind, …).

There are several ways to refer to a segment in an MPD. If the file is made of a single segment (-single-segment option for ISOBMF), one will likely use SegmentBase element. If a file is made of several segments, each segment will be identified by the SegmentList syntax in the MPD, using byte ranges. For other cases, we need to instruct MP4Box how to refer to segments (and how to store them as well). The following switches are defined:

  • -segment-ext EXT: tells MP4Box to generate segments with EXT extension (by default m4s for ISOBMF and or ts for MPEG-2)
  • -segment-name NAME: tells MP4Box to generate each segment in a dedicated file, called NAME%d.EXT. NAME can also have %s in it, in which case %s will be replaced by the name of the file being dashed without folder indication and extension. By default, such segments will be stored using the SegmentList syntax in the MPD.
  • -url-template: if set when generating segements in different files, the segments will be refered to using the SegmentTemplate syntax in the MPD.

ISO Base Media File Format

For content based on ISOBMF (ISO/IEC 14496-12), MP4Box can be used to cut files into DASH segments. Before going any further, some definitions will be needed:

  • segment: for ISOBMF, a segment is a consecutive set of movie fragments. Each movie fragment is composed of a moof box followed by mdat box(es), and all data adressing in the mdat(s) are done using relative offsets in the moof.
  • subsegment: a part of a segment, made of a consecutive set of movie fragments. A subsegment can be further divided in subsegments, until only a single movie fragment per subsegment is present.

With that in mind, we can generate DASH content by playing with the following MP4Box parameters:

  • -dash X: produce segments of roughly X milliseconds.
  • -frag Y: use movie fragments of roughly Y milliseconds. By default, fragments duration is 500 milliseconds.
  • -rap:  attempts to cut segments so that they all start with an access point (IDR, I-frame or beginning of a gradual decoding refresh for example).
  • -subsegs-per-sidx N: specifies how many subsegments per sidx we would like. This only covers the first level of segment spliting (MP4Box doesn’t handle subsegments subdivision into subsegments). Noticable values are:
  • <0: disable: sidx will not be produced
  • 0: a single sidx box is used for the entire segment, and each subsegment is made of a single movie fragment (i.e., there will be X/Y subsegments in sidx). This is the default value.
  • >0: produces X/Y/N subsegments referenced in the first sidx.
  • -daisy-chain: this is only used when producing multiple subsegments per segment (-subsegs-per-sidx). If specified, subsegments will be described in SIDX in which the last entry (subsegment) points to the next SIDX. Otherwise, multiple SIDXs will be stored in a hierarchical way, with the first SIDX pointing to each SIDX of the subsegments.
  •  -single-segment: special mode indicating that the file should be segmented as one single segment. In that case, the dash duration X becomes the subsegment duration, and a single sidx is produced before any movie fragment.

Now let’s see an example.

Dashing a file with 10 seconds, rap-aligned segments with a fragment duration (i.e. subsegment duration since we don’t subdivide the SIDX)  of 1 sec:

MP4Box -dash 10000 -frag 1000 -rap test.mp4

The same with a separated segment using template addressing, and 5 subsegments per segments:

MP4Box -dash 10000 -frag 1000 -rap -segment-name myDash
          -subsegs-per-sidx 5 -url-template test.mp4

Generating an onDemand profile DASH file (single segment) is just as simple:

MP4Box -dash 10000 -frag 1000 -rap -single-segment test.mp4

MPEG-2 TS

MP4Box can also be used to segment MPEG-2 TS files. The same options as the ISOBMF case are used, with the following restrictions:

  • -single-segment, -frag, -subsegs-per-sidx and -daisy-chain are ignored
  • -rap splits at the PAT preceeding the RAP found, but does not repacketize the TS to make sure it begins with the RAP

For example, spliting a TS in 10 seconds segments can be done with

 MP4Box -dash 10000 -url-template -segment-name segments test.ts

Also note that it is possible to use MP4Box to translate an existing m3u8 (Apple HLS) to a conformant MPD, using the -mpd switch:

MP4Box -mpd test.mpd [-url-template] [http://...]myfile.m3u8

 Multiple Representations

You now know how to create a conformant DASH content from a given file, but what about the ‘A for Adaptive’ in DASH ? At first thought it would just be enough to let you with a bunch of MPD and a good XSLT, to produce your final MPD (which you will have to do anyway I believe). However, there are some tricks in the segment generation itself that cannot be easily done.

The most problematic thing is that, when building ISOBMF files designed for bitstream switching, the initial bootstrap of the DASH session (i.e. moov and co) must contain all sample descriptions used in all representations of the media. Therefore, we will need MP4Box here to generate files with correct sample descriptions, and segments with correct sampleDescriptionIndex

Although this might look a bit complex, the process is itself quite simple; assuming you have encoded file1, .., fileN version of your movie, you can generate a nice adaptive MPD as follows:

MP4Box -dash 10000 [other options as seen above] -out final.mpd file1.mp4 … fileN.mp4

This works for both ISOBMF and TS files. Additionnaly, you don’t want segments to be overriden when generating segments in dedicated files for each representation. MP4Box gives you the possibility to format the name of the segment using -segment-name:

MP4Box -dash 10000 -segment-name mysegs_%s -url-template
         -out final.mpd file1.mp4 ... fileN.mp

Osmo4 Playback

You can test DASH playback in GPAC using Osmo4/MP4Client. The player supports a good part of the technology:

  • playback from an HTTP server or from local storage for test purposes.
  • Media segments based on TS and ISOBMF
  • independent component download (one adaptation set for audio, one for video)
  • most MPD syntax is supported
  • (some) bitstream switching. ISOBMF is not complete, multiple SampleDescription are not supported yet
  • manual quality switching by using ctrl+h and ctrl+l
  • basic automatic quality switching when playing HTTP urls

Some guidelines

DASH is still quite new, and few players support it. The main problematic, especially with ISOBMF, is to address the bitstream switching scenario while not breaking existing implementations. We would therefore recommend:

  • do NOT mix codecs in your various representations of the media streams (whether multiplexed or not). This is not supported by existing players and will break seemless switching in most cases. And there is no point doing so, so don’t do it
  • for AVC video, use dedicated SPS and PPS IDs for your different streams. This can even be done with x264 using –sps-id option. This will ensure that the produced files can still be played by most implementations supporting movie fragments.
  • Obey the specification: use the same codec for each media in an adaptation set.

50 thoughts on “DASH Streaming Support

  1. Is the fullrange=on or off & colormatrix patch ever going to make it into the nightly builds? Relying on Komisar builds for this very important functionality for switching the flag off before transcoding DSLR generated h264 (fullrange flag set on in camera firmware) to lossless codecs via ffmpeg as ffmpeg treats it as yuvj420 due to the flag being on and clamps luma in the transcode to any other codec. Switching the flag off with patched builds of MP4Box makes ffmpeg treat the camera files as yuv420 and just leaves luma levels alone, ie: maintains full range luma no clamping or scaling in the transcode. It’s impossible to get ffmpeg to do this and so rely on the patch in MP4Box.

  2. Hi,
    1. Out of segments, sub-segments and fragments, which one actually corresponds to separate files (actual files with, say, mp4 extension) cut from the original large mp4 file? From the above description, it appears one or more segments form a separate file on hard disk. If the Please confirm.
    2. Is the “fragment” term used above consistent with “fragmented MP4” (pushed by Microsoft and Adobe)? Latter is a single big file of pre-recorded video.

    Next question is rather generic.
    3. For live video with low latency (< 1 sec, say), how does the the segment duration , number of sub-segments and fragments play a role?

    Thanks,
    Sandeep

  3. 1- usually a segment is a file, but segments may be concatenated in a single file and retrieved through HTTP byte-ranges. Moreover, the onDemand profile of DASH mandates that a single segment is used, so an onDemand profile file will have only one segements with many subsegments .

    2- fragment = a movie fragment = “moof box + mdat box”. This is the terminology from the spec, I cannot say whether other use the term fragment correctly. Note that a fragment may be stored in its own file or concatenated with other fragments. Also note that typically, a segment is made of one or more subsegment, which in turns are made of one or more movie fragments

    3- It depends how you transfer your segments/subsegments on the network

    Jean.

  4. Hi,
    I’ve installed latest Osmo4 (win32 binaries version 4127).
    It’s no problem playing .mpd from local PC and .mp4 files from my http server.
    However, Osmo4 crashed when playing .mpd from my http server.
    Would you please me.

    Thanks a lot
    Julian

  5. Dear cconcolato,

    I corrected the settings on MIME type and now It works well.
    Thank you very much.

    Julian

  6. Hi Julian,
    Could you please post your MIME settings that worked?

    I’m experiencing a similar problem: Osmo4 plays the initial mp4 file but crashes when trying to play mpd.

    In my .htaccess, the following is defined:

    AddType application/dash+xml .mpd

  7. Hi Alexander,

    This MIME type should work. There is probably something wrong elsewhere. Could you send a message on the GPAC forums, providing if possible a link to your MPD or an example?

    Thanks,
    Cyril

  8. Hello,
    How to make mp4box generating the initialization segment?

    I’m trying to segment an mp4 file with the following command:

    mp4box -dash 10000 -rap -segment-name segment MyFile.mp4

    The tool produces an MPD file; it includes an MPD.Period.AdaptationSet.SegmentList.Initialization element that has sourceURL of MyFile_dash_init.mp4. However the tool doesn’t produce this mp4 file, it only produces a bunch of segment%d.m4s and the manifest.

  9. I’d extend my previous question (and I hope that it will be easier to suggest a solution).

    Could anyone provide an example of a command that produces the files (manifest and content) that could be played by VLC with the DASH plugin?

    I’m asking because currently I am unable to make anything playable. I’ve tried dozens of various combinations of parameters and values, but all my attempts always ended up in two ways: the player either 1) crashes or 2) writes the only message in the log and hangs, so I have to kill the process.

    The crashes occur on single segment content. The hang occurs on content that has segments in separate files. The message is: dash error: Cannot seek backward outside the current block :-/

    So—could anyone provide a 100% working example command? Should I prepare the mp4 file somehow before fragmenting it? Does VLC plugin support audio? Do I need to use particular versions of mp4box and VLC plugin? Are there any other important things?

  10. I have installed an updated version; it supports the -dash-profile parameter, and it generates the manifest indeed.

    However I have difficulties with playing the results of fragmentation, see my reply above.

  11. Hello,
    I would like to test an example of live streaming with Dash.
    Do you know how it’s possible to create segments and the updated Mpd?

    Thanks a lot
    Alberto

  12. This is under development. For the moment you can only use live with a single representation (one file as the DASH input of MP4Box). The procedeure is to call MP4Box on regular basis with the segments you need to add to the live session:
    MP4Box [DASH_OPTIONS] -dash-ctx dasher.cfg fileX.mp4

    dasher.cfg will be created/updated to maintain timeline continuity between the different files appended. This is very experimental and may be quite buggy for the time being …

  13. Thanks for your answer.
    So, for the moment, i can’t send all the segments, but just a single segment right? I’ve an other question: how can I use correctly the rtp/live options with this representation?
    Thanks so much for your support!!

  14. A) you don’t send anything since this is DASH, you have to make the output sequences available through a web server.

    B) the number of segments produced at each call to MP4Box will depend on the input duration of your file and the desired segment duration

    C) there is nothing rtp-related in DASH (at least for the current time), what do you mean exactly ?

  15. -rtp options are for real-time streaming (rtp), not for HTTP streaming (dash)

    maybe a -h dash would clarify the situation though …

  16. Hello,

    Is it possible, using a TS file as original video file, to create a single file that includes several segments? I was able to do that using a MP4 file using
    MP4Box -dash 10000 test.mp4,
    which creates a mpd that reference a single MP4 using byte ranges, but I could not get the same result with a TS file

    Thanks!

  17. Hi!

    I saw the example of converting a HLS m3u8 playlist file into a MPD file, which works great. Reading some documentation about DASH, I saw that Smooth Streaming manifest files could also (theoretically) be converted into a MPD file.

    Can MP4Box do this?

  18. If you have a self-initializing m4s (containing a moov box) or if you concatenate the init segment (mp4) with your segment, the resulting file can be used as an input to MP42TS included in GPAC.

  19. Hi, I have two questions:

    1 – how do I get Osmo4 to play from a URL? I can select a file from the GUI but I can’t figure out how to insert a URL. I am using the mac version of Osmo4

    2 – I cant seem to get the streams to play back on VLC (beta), has anyone managed to acheive this? If so what commands did you use? Again I am using mp4box for mac (testing before i implement on linux)

    An example command I am using: ./MP4Box -dash-profile main -dash 1000 -rap -out /Users//Sites/DASH/Test/Gnarwolves.mpd Gnarwolves.mp4

    With this, the files get DASHed and put in the correct directory but looking at the .mpd none of the segments (nor the init_segment) have URL’s but say simply:

    etc
    etc
    shouldn’t they each have their url in this? Looking at .mpd’s online this line always seems to have the segment url in it, im wondering if this might be why VLC is struggling to playback the files?

    Any help would be very greatly appreciated

    Kind Regards

    Nick

  20. Ah, there are missing bits, the example code should read:

    /Users/username/Sites/DASH/Test/Gnarwolves.mpd

    and the lines from the .mpd are:
    SegmentURL mediaRange=”1280-449088″ indexRange=”1280-1600″/>
    SegmentURL mediaRange=”449089-980022″ indexRange=”449089-449409″
    SegmentURL mediaRange=”980023-1643789″ indexRange=”980023-980343″
    SegmentURL mediaRange=”1643790-2074706″ indexRange=”1643790-1644110″
    etc
    etc

    Many thanks

  21. I’m trying to build the DashEncoder code which I downloaded from github https://github.com/slederer/DASHEncoder. Well, I followed all the instructions given in the how to compile dash file. installed Gpac n X264 and compiled both successfully. Then did make of Dashencoder and ran it as ./Dashencoder. But I found some issues in it. Got this log :

    ==========DASH ENCODER===============
    Unknown option in resourcefile : sql-pw :
    current encoder x264
    YES
    x264 encoding @ 300 kbps: Pass 1
    x264: x264 –profile baseline –preset slow –verbose –fps 24 –vbv-maxrate 300 –vbv-bufsize 600 –scenecut 0 –keyint 48 –output /opt/lampp/htdocs/tests_updates/sintel_trailer_2k_480p24_300kbit.h264 /home/niu/sintel_trailer_2k_480p24.y4m >out.txt 2>&1
    mkdir: cannot create directory `/opt/lampp/htdocs/tests_updates/sintel_300kbit’: File exists
    cp: omitting directory `/opt/lampp/htdocs/tests_updates/’
    copy audio: cp /opt/lampp/htdocs/tests_updates/ /opt/lampp/htdocs/tests_updates/sintel_300kbit/MP4Box multiplexing Video: /opt/lampp/htdocs/tests_updates/sintel_300kbit/sintel_trailer_2k_480p24_300kbit.h264
    mp4box: MP4Box -add /opt/lampp/htdocs/tests_updates/sintel_300kbit/sintel_trailer_2k_480p24_300kbit.h264 /opt/lampp/htdocs/tests_updates/sintel_300kbit/sintel_trailer_2k_480p24_300kbit.mp4
    AVC-H264 import – frame size 854 x 480 at 24.000 FPS
    AVC Import results: 1253 samples – Slices: 27 I 1226 P 0 B – 1 SEI – 27 IDR
    Saving to /opt/lampp/htdocs/tests_updates/sintel_300kbit/sintel_trailer_2k_480p24_300kbit.mp4: 0.500 secs Interleaving
    MP4Box multiplexing Audio:/opt/lampp/htdocs/tests_updates/sintel_300kbit/
    mp4box: MP4Box -add /opt/lampp/htdocs/tests_updates/sintel_300kbit/ /opt/lampp/htdocs/tests_updates/sintel_300kbit/sintel_trailer_2k_480p24_300kbit.mp4
    Unknown input file type
    Unknown input file type
    Error importing /opt/lampp/htdocs/tests_updates/sintel_300kbit/: Bad Parameter
    MP4Box Cleaning …
    mp4box: MP4Box -no-sys /opt/lampp/htdocs/tests_updates/sintel_300kbit/sintel_trailer_2k_480p24_300kbit.mp4
    Saving /opt/lampp/htdocs/tests_updates/sintel_300kbit/sintel_trailer_2k_480p24_300kbit.mp4: 0.500 secs Interleaving
    MP4Box segmentation: /opt/lampp/htdocs/tests_updates/sintel_300kbit/sintel_trailer_2k_480p24_300kbit.h264
    mp4box: MP4Box -frag 2000 -dash 2000 -rap -segment-name /opt/lampp/htdocs/tests_updates/sintel_300kbit/sintel /opt/lampp/htdocs/tests_updates/sintel_300kbit/sintel_trailer_2k_480p24_300kbit.mp4
    DASH-ing file: 2.00s segments 2.00s fragments single sidx per segment
    Spliting segments at GOP boundaries
    [DASH] Generating MPD at time 2013-03-16T16:40:03Z
    DASHing file /opt/lampp/htdocs/tests_updates/sintel_300kbit/sintel_trailer_2k_480p24_300kbit.mp4
    terminate called after throwing an instance of ‘std::out_of_range’
    what(): basic_string::substr
    Error: Unable to open MPD file!Aborted
    Why is this error at the end? and also one folder got created in my /opt/lampp/htdocs/tests_updates/sintel_300kbit. which has two types of files : 27 files of .m4s extension 1 file -sintelinit.mp4 1 file- sintel_trailer_2k_480p24_300kbit.mp4 , which when played in vlc player played the video bt no audio! &

    1 file- sintel_trailer_2k_480p24_300kbit.h264 which cannot be opened.

    No .mpd file was created.

    Also I want to know aft creating that .mpd file how will i be able to test it on my android client say media player.

    I am damn confused with all this happening. Please help.

  22. You should specify an MPD file name to the MP4Box command line
    “mp4box: MP4Box -frag 2000 -dash 2000 -rap -segment-name /opt/lampp/htdocs/tests_updates/sintel_300kbit/sintel /opt/lampp/htdocs/tests_updates/sintel_300kbit/sintel_trailer_2k_480p24_300kbit.mp4 -out /path/to/file.mpd”

    If the error persists, please upload your file somewhere

  23. The GUI is not really maintained, sorry about that. Opening a URL can be done by long-pressing the folder icon.

    Haven’t tried VLC playback.

    The generated MPD is correct, since you specified the main profile it is using segment byte ranges rather than files. To generate files, use -profile live for example

  24. Hi

    To create MPD file for multiple representations it is used the command above: MP4Box -dash 10000 -segment-name mysegs_%s -out final.mpd file1.mp4 … fileN.mp4

    But what if I wanted to divide the segments of the respective representation in different folders? Can MP4Box do that?

  25. Although not intended for that, the -subdur switch may help you here. Set it to the duration that you want for each folder

    MP4Box -dash 1000 -subdur 10000 -dash-ctx dash.txt …

    will create segments of 1s using only 10s of the source files. With -dash-ctx set, the second call will do the same, restart from where the previous call stopeed.

    MP4Box -dash 1000 -subdur 10000 -dash-ctx dash.txt …

  26. Hi
    I used the command:
    mp4box -profile main -dash 1000 -base-url http://xxx.xxx.xxx.xxx/ -segment-name mysegs_%s -out final.mpd file1.mp4 file2.mp4
    generated the MPD file.
    But why there are two AdaptationSet in the MPD file, the only difference between the two input files is the bitrate.
    Thanks.

  27. same question. Is it because that VLC dash plugin is not compatible with the dash files made by MP4Box? Is VLC only compatible with the dash files made by DASHEncoder? But currently, there’ s something wrong with the DASHEncoder. So please help, thx.

  28. Hello GPAC team,
    I’m testing the DASH standard and I’m using your tools to do that.
    I encoded a video at different bitrates and resolutions with ffmpeg (example command: ffmpeg -i name.mp4 -s 640×480 -b 700k -aspect 4:3 -r 24 -c:v libx264 -profile:v baseline -g 48 -keyint_min 48 -c:a copy output_700k.mp4), then I generated the MPD file and the dash segments with the following command of MP4Box:

    MP4Box -frag 2000 -dash 2000 -rap -dash-profile main -segment-name dash_%s_ -bs-switching yes -base-url http://folder/ -out metal output_200kbit.mp4 output_400kbit.mp4 output_700kbit.mp4 output_1000kbit.mp4 …and so on.

    I put all the files on an Apache server and I tried to play the HTTP url of the mpd by using MP4Client. The player switches automatically the quality to the higher representation without problems, but when I force the output transmission rate on the server to lower values, MP4Client is not able to switch to the lower representation, the video stalls, but the player continues to send GET requests to the server for the previous representation, instead of adapting to the available bandwidth.

    Maybe there’s something wrong in my commands to encode the videos or create the segments/mpd or something to set in the configuration file of MP4Client.
    I hope that you can help me, I don’t know what can I do.
    Thank you a lot.

  29. Which version/revision are you using? Also, make sure automatic switching is not disabled (in MP4Client config file, section [DASH])
    Is your test service available somewhere so that we can have a look at the issue ?

    jean

  30. I could make all the dataset available on my Dropbox at least.
    Thank you for your help.

  31. Hi to everyone,
    I have the same problem. After some experiments I found out that the switch works from a lower to a higher quality but when a high to low switch is needed the MP4Client freezes.

    My GPAC version is 0.5.1-DEV-rev4571 and is compiled and installed in a PC running Fedora 17( x86_64 ).

    If anyone else has some more insight regarding this problem please share. 🙂

    Artsi

  32. Can MP4Box generate a separate initialization segment for each representation in an adaptation set? If so, what should the command-line switches be?

  33. Hi,
    I have installed x264, gpac revision 3849 and ffmpeg successfully but when I run DashEncoder with below config file I received this error:

    current encoder x264
    YES
    terminate called after throwing an instance of ‘std::logic_error’
    what(): basic_string::_S_construct NULL not valid
    Aborted(core dumped)

    Please help me
    thanks

    #========================================
    # Config File for DASH Encoder
    #========================================

    #========================================
    # General Options
    #========================================

    dest-directory : /home/pardis/Downloads/DASHEncoder-master/out

    video-encoder : x264
    audio-encoder : ffmpegAAC
    multiplexer : mp4box

    #store-psnr
    #sql-host : localhost
    #sql-user : root
    #sql-pw :
    #sql-database : dash

    add-non-segmented

    use-ffmpeg-pipe
    ffmpeg-opt : -f rawvideo
    #input-res : 384×208
    #input-res : 352×288
    input-res : 320×240
    #========================================
    # x264 Options
    #========================================

    bitrate : 300

    #bitrate : 250@480×360|500@480×360|1000
    #bitrate : 200|400|600|1000
    statistics : stat.temp
    gop : 48
    scenecut : 0
    profile : baseline
    preset : slow
    input : /home/pardis/sample.m4v
    #input : /home/stefan/foreman_cif.y4m
    #input : /home/stefan/kingkong.mp4
    #input : /media/Volume/MI200802010028-video_newsroom_hd_1080_p29_97-channelSelectionT0C0_T0C1.mp4
    passes : 1
    const-filesize : 0

    #Additional Options for Encoding

    #pass1 : –frames 500 –fps 29.970029
    pass1 : –verbose –fps 24
    pass2 : –verbose –psnr

    #========================================
    # FFMPEG AAC Options
    #========================================

    # [channels, samplerate, bitrate]
    #audio-quality : 2,44100,48|2,44000,128
    #audio-quality : 2,44100,48
    #audio-quality :

    #audio-input : /home/stefan/sintel_trailer-audio.flac
    #audio-codec : libfaac

    #========================================
    # MP4Box Options
    #========================================

    #AV Muxing
    #mux-combi : 300@48|600@128
    #mux-combi :

    fragment-size : 200
    segment-size : 200
    rap-aligned
    segment-name : test
    folder-prefix : test

    #========================================
    # MPD Options
    #========================================
    mpd-name : test.mpd
    url-root : http://localhost:8080/test/
    #set-base-url
    mpdActStandardPostfix : _actVersion.mpd
    duration : 5S
    #transform-mpd
    minBufferTime : 2.0S
    segDuration : 1
    #========================================
    # Other Options
    #========================================

  34. cf MP4Box -h dash: option “-bs-switching no” will disable bitstream switching and therefore produce one init seg per representation

  35. I used command: MP4Box -dash 10000 -frag -1000 -rap -out promethus.mpd p1.mp4……p10.mp4 for 10 profiles….The result was
    p10_dash.mp4 p3_dash.mp4 p6_dash.mp4 p9_dash.mp4
    p1_dash.mp4 p4_dash.mp4 p7_dash.mp4 promethus_init.mp4
    p2_dash.mp4 p5_dash.mp4 p8_dash.mp4 promethus.mpd

    But when I tried to play from OSmo4 client i was not able to play…

    Please tell …what is promethus_init.mp4 in this result…..

    Also how to use -segment-name -url-template….Is it manadatory to use -segment-name and -url-template for Adaptive on-demand streaming

Comments are closed.