Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MPEG-DASH.py appears to not have full schema layout for MPD's used under IIS from ISMV files #18

Closed
ddjauregui opened this issue Jul 17, 2015 · 15 comments

Comments

@ddjauregui
Copy link

I'm trying to have this command line generate my stub mp4 files and the new ISM/ISMC files as well as the mpd file. MY current command line as an example is

c:\mp4-dash.py -smooth --smooth-client-manifest-name=video1435746311702 --smooth-server-manifest-name=video1435746311702 --mpd-name=video1435746311702.mpd

It generate my new ism's and copies the ismv as well as the stub mp4's are built and the mpd file. Do I have to perform anything additional?

I have the security.xml and crossdomain.xml set to * for hosts and I have added the appropriate mime types for mpd and mp4 at the top level IIS server. Any suggestions? I've tried to play from the web hosted players, such as shaka and your akamai hosted one but nothing. I tried one from http://dashif.org/reference/players/javascript/1.4.0/samples/dash-if-reference-player/index.html
And playing the stream http://DALHT7.digitalsyphon.com/dalht7-0/2015/7/video1435746311702.mpd

I encoded my ISMV using expressions encoder 4 pro sp2.
When running on Chrome and windows 7 I just get an unsupported media type when tryingto play back my ism I have mime types for .mpd, .mp4, and .ism (application/vnd.ms-sstr+xml) I've also tried w/o the .ism mime type and no dice? any help woudl be appreciated.

@barbibulle
Copy link
Contributor

Trying the URL below, it seems that the server is refusing to serve the segments:

(browser log:)

http://dalht7.digitalsyphon.com/dalht7-0/2015/7/video1435746311702.ism/QualityLevels(382305)/Fragments(video=0)
[Error] Failed to load resource: the server responded with a status of 415 (Unsupported Media Type) (Fragments(video=0), line 0)

It seems that you IIS server isn't happy with the files. Can you check that the .ism file that's generated does indeed refer to .ismv files that exist.

Also, your command line above looks a bit odd. You use the same name for the smooth client manifest name and server manifest name. (--smooth-client-manifest-name=video1435746311702 --smooth-server-manifest-name=video1435746311702)

@ddjauregui
Copy link
Author

Hi There,

Yeah in terms of the manifest names, it will generate one as an ISM and the
other as a .ISMC sorry I forgot to place the extensions.

Yes, the ISM file is referencing the the same relative path. You can d/l
and see all my files are under the 7 folder, including the MP4 stub files
which are not called the same thing I left them as the default output from
the output folder that is generated by the tool.

Regards,

Doug


From: barbibulle [mailto:notifications@github.com]
Sent: Friday, July 17, 2015 4:10 PM
To: axiomatic-systems/Bento4
Cc: ddjauregui
Subject: Re: [Bento4] MPEG-DASH.py appears to not have full schema layout
for MPD's used under IIS from ISMV files (#18)

Trying the URL below, it seems that the server is refusing to serve the
segments:

(browser log:)

http://dalht7.digitalsyphon.com/dalht7-0/2015/7/video1435746311702.ism/QualityLevels(382305)/Fragments(video=0)
[Error] Failed to load resource: the server responded with a status of 415
(Unsupported Media Type) (Fragments(video=0), line 0)

It seems that you IIS server isn't happy with the files. Can you check that
the .ism file that's generated does indeed refer to .ismv files that exist.

Also, your command line above looks a bit odd. You use the same name for
the smooth client manifest name and server manifest name.
(--smooth-client-manifest-name=video1435746311702
--smooth-server-manifest-name=video1435746311702)


Reply to this email directly or view it on GitHub
#18 (comment)
.

@ddjauregui
Copy link
Author

Oh, and just to check that those ISM/ISMC and ISMV do in fact exist and are
valid I’m referencing via a simple silverlight stream

http://dalht7.digitalsyphon.com/SmoothStreamingPlayer.html

If you look at the html it references the same path except with the
.ism/manifest instead.

Doug.


From: barbibulle [mailto:notifications@github.com]
Sent: Friday, July 17, 2015 4:10 PM
To: axiomatic-systems/Bento4
Cc: ddjauregui
Subject: Re: [Bento4] MPEG-DASH.py appears to not have full schema layout
for MPD's used under IIS from ISMV files (#18)

Trying the URL below, it seems that the server is refusing to serve the
segments:

(browser log:)

http://dalht7.digitalsyphon.com/dalht7-0/2015/7/video1435746311702.ism/QualityLevels(382305)/Fragments(video=0)
[Error] Failed to load resource: the server responded with a status of 415
(Unsupported Media Type) (Fragments(video=0), line 0)

It seems that you IIS server isn't happy with the files. Can you check that
the .ism file that's generated does indeed refer to .ismv files that exist.

Also, your command line above looks a bit odd. You use the same name for
the smooth client manifest name and server manifest name.
(--smooth-client-manifest-name=video1435746311702
--smooth-server-manifest-name=video1435746311702)


Reply to this email directly or view it on GitHub
#18 (comment)
.

@barbibulle
Copy link
Contributor

The stream you're pointing to here works fine, but it is a different stream:
http://DALHT7.digitalsyphon.com:80/dalht7-0/2015/7/video1436972404413.ism/manifest

compared to the one that's causing problems:

http://DALHT7.digitalsyphon.com/dalht7-0/2015/7/video1435746311702.mpd
(for which the Smooth Manifest URL is: http://DALHT7.digitalsyphon.com/dalht7-0/2015/7/video1435746311702.ism/Manifest)

Can you send the contents of the .ism file? (video1435746311702.ism)
It should contain the names of the .ismv files that the server is supposed to read from.

@ddjauregui
Copy link
Author

Ok I updated the smooth stream example from silvelright to reflect it, you
were right I made a mistakethere. I regenerated the video mpd and its
associated files using that same ISMV, you can d/l the ISMV and play it in
windows media player just fine.

So now that I did that I’m getting a different problem, now I’m getting a
404 not found.

From: barbibulle [mailto:notifications@github.com]
Sent: Friday, July 17, 2015 4:42 PM
To: axiomatic-systems/Bento4
Cc: ddjauregui
Subject: Re: [Bento4] MPEG-DASH.py appears to not have full schema layout
for MPD's used under IIS from ISMV files (#18)

The stream you're pointing to here works fine, but it is a different stream:
http://DALHT7.digitalsyphon.com:80/dalht7-0/2015/7/video1436972404413.ism/manifest

compared to the one that's causing problems:

http://DALHT7.digitalsyphon.com/dalht7-0/2015/7/video1435746311702.mpd
(for which the Smooth Manifest URL is:
http://DALHT7.digitalsyphon.com/dalht7-0/2015/7/video1435746311702.ism/Manifest
)

Can you send the contents of the .ism file? (video1435746311702.ism)
It should contain the names of the .ismv files that the server is supposed
to read from.


Reply to this email directly or view it on GitHub
#18 (comment)
.

@ddjauregui
Copy link
Author

Normally I don’t place a mime type for .ism files, should I remove that?


From: barbibulle [mailto:notifications@github.com]
Sent: Friday, July 17, 2015 4:42 PM
To: axiomatic-systems/Bento4
Cc: ddjauregui
Subject: Re: [Bento4] MPEG-DASH.py appears to not have full schema layout
for MPD's used under IIS from ISMV files (#18)

The stream you're pointing to here works fine, but it is a different stream:
http://DALHT7.digitalsyphon.com:80/dalht7-0/2015/7/video1436972404413.ism/manifest

compared to the one that's causing problems:

http://DALHT7.digitalsyphon.com/dalht7-0/2015/7/video1435746311702.mpd
(for which the Smooth Manifest URL is:
http://DALHT7.digitalsyphon.com/dalht7-0/2015/7/video1435746311702.ism/Manifest
)

Can you send the contents of the .ism file? (video1435746311702.ism)
It should contain the names of the .ismv files that the server is supposed
to read from.


Reply to this email directly or view it on GitHub
#18 (comment)
.

@ddjauregui
Copy link
Author

I’ve made the file listing available

http://dalht7.digitalsyphon.com/dalht7-0/2015/7/
http://localhost/dalht7-0/2015/7/


From: barbibulle [mailto:notifications@github.com]
Sent: Friday, July 17, 2015 4:42 PM
To: axiomatic-systems/Bento4
Cc: ddjauregui
Subject: Re: [Bento4] MPEG-DASH.py appears to not have full schema layout
for MPD's used under IIS from ISMV files (#18)

The stream you're pointing to here works fine, but it is a different stream:
http://DALHT7.digitalsyphon.com:80/dalht7-0/2015/7/video1436972404413.ism/manifest

compared to the one that's causing problems:

http://DALHT7.digitalsyphon.com/dalht7-0/2015/7/video1435746311702.mpd
(for which the Smooth Manifest URL is:
http://DALHT7.digitalsyphon.com/dalht7-0/2015/7/video1435746311702.ism/Manifest
)

Can you send the contents of the .ism file? (video1435746311702.ism)
It should contain the names of the .ismv files that the server is supposed
to read from.


Reply to this email directly or view it on GitHub
#18 (comment)
.

@barbibulle
Copy link
Contributor

I don't think you need a mime type for the .ism files, since they're never returned to the client. They are server-side instructions that tell the IIS server where to find the .ismv files and how to map segment URLs to portions inside those files.
Your .ism files are at least partially correct, since retrieving the /Manifest Smooth streaming manifest works (when requesting the xxx.ism/Manifest URL, the server locates the client manifest file (.ismc) by parsing the XML element with name="clientManifestRelativePath")

@ddjauregui
Copy link
Author

Ok I’ve removed the .ism mime type and restarted the site and IIS. I’ve
also gone ahead and verified the files can be read by the player and via a
standard /manifest command.


From: barbibulle [mailto:notifications@github.com]
Sent: Friday, July 17, 2015 5:04 PM
To: axiomatic-systems/Bento4
Cc: ddjauregui
Subject: Re: [Bento4] MPEG-DASH.py appears to not have full schema layout
for MPD's used under IIS from ISMV files (#18)

I don't think you need a mime type for the .ism files, since they're never
returned to the client. They are server-side instructions that tell the IIS
server where to find the .ismv files and how to map segment URLs to
portions inside those files.
Your .ism files are at least partially correct, since retrieving the
/Manifest Smooth streaming manifest works (when requesting the
xxx.ism/Manifest URL, the server locates the client manifest file (.ismc)
by parsing the XML element with name="clientManifestRelativePath")


Reply to this email directly or view it on GitHub
#18 (comment)
.

@barbibulle
Copy link
Contributor

From the listing of the directory that you've opened up, I can see the list of all the .ism .ismc .ismv and other files. But I can't retrieve any of the .ism or .ismc files, since the IIS servers' Smooth Streaming module virtualizes those files. For example, if I request this URL:
http://dalht7.digitalsyphon.com/dalht7-0/2015/7/video1435746311702.ism
the server will refuse.
If I request http://dalht7.digitalsyphon.com/dalht7-0/2015/7/video1435746311702.ism/Manifest, the server will parse video1435746311702.ism and read video1435746311702.ismc and return that.
Can you copy/paste the contents of video1435746311702.ism?

One thing that's a bit dangerous with the file layout you have here (it isn't what's causing the problem here, but I thought I'd mention it since you may run into it later on) is that you have multiple videos in the same directory, and they all share the same init segments (init-video-1.mp4, init-video-2.mp4, etc.). This is Ok as long as all the videos are encoded exactly the same (they would have the same data in the init segment). But that won't work if your videos are either encoded differently or encrypted, because then they would each need their own init segments.
I would recommend creating one directory per video stream.

@ddjauregui
Copy link
Author

Version generated by the mp4-dash tool.

<meta content="video1435746311702.ismc"

name="clientManifestRelativePath"/>

<switch>

  <audio src="video1435746311702.ismv" systemBitrate="65227">

    <param name="trackID" value="1" valueType="data"/>

    <param name="trackName" value="audio_und" valueType="data"/>

  </audio>

  <video src="video1435746311702.ismv" systemBitrate="688047">

    <param name="trackID" value="2" valueType="data"/>

  </video>

  <video src="video1435746311702.ismv" systemBitrate="409773">

    <param name="trackID" value="3" valueType="data"/>

  </video>

</switch>

An original example

        <head>

                    <meta name="clientManifestRelativePath" content="

video1435746311702.ismc" />

        </head>

        <body>

                    <switch>

                                <audio src=" video1435746311702.ismv"

systemBitrate="65227">

                                            <param name="trackID"

value="1" valueType="data" />

                                </audio>

                                <video src=" video1435746311702.ismv"

systemBitrate="688047">

                                            <param name="trackID"

value="2" valueType="data" />

                                </video>

                                <video src=" video1435746311702.ismv"

systemBitrate="409773">

                                            <param name="trackID"

value="3" valueType="data" />

                                </video>

                    </switch>

        </body>

From: barbibulle [mailto:notifications@github.com]
Sent: Friday, July 17, 2015 5:11 PM
To: axiomatic-systems/Bento4
Cc: ddjauregui
Subject: Re: [Bento4] MPEG-DASH.py appears to not have full schema layout
for MPD's used under IIS from ISMV files (#18)

From the listing of the directory that you've opened up, I can see the list
of all the .ism .ismc .ismv and other files. But I can't retrieve any of
the .ism or .ismc files, since the IIS servers' Smooth Streaming module
virtualizes those files. For example, if I request this URL:
http://dalht7.digitalsyphon.com/dalht7-0/2015/7/video1435746311702.ism
the server will refuse.
If I request
http://dalht7.digitalsyphon.com/dalht7-0/2015/7/video1435746311702.ism/Manifest,
the server will parse video1435746311702.ism and read
video1435746311702.ismc and return that.
Can you copy/paste the contents of video1435746311702.ism?

One thing that's a bit dangerous with the file layout you have here (it
isn't what's causing the problem here, but I thought I'd mention it since
you may run into it later on) is that you have multiple videos in the same
directory, and they all share the same init segments (init-video-1.mp4,
init-video-2.mp4, etc.). This is Ok as long as all the videos are encoded
exactly the same (they would have the same data in the init segment). But
that won't work if your videos are either encoded differently or encrypted,
because then they would each need their own init segments.
I would recommend creating one directory per video stream.


Reply to this email directly or view it on GitHub
#18 (comment)
.

@ddjauregui
Copy link
Author

I understand in terms of the init segments, this is a first changeover to
try to get dash content to be served up from the IIS server with
smooothstreaming extension added on.

All the videos are under one profile so shold be encoded at a constant
bitrate at same resolution and same audio/video codecs.


From: barbibulle [mailto:notifications@github.com]
Sent: Friday, July 17, 2015 5:11 PM
To: axiomatic-systems/Bento4
Cc: ddjauregui
Subject: Re: [Bento4] MPEG-DASH.py appears to not have full schema layout
for MPD's used under IIS from ISMV files (#18)

From the listing of the directory that you've opened up, I can see the list
of all the .ism .ismc .ismv and other files. But I can't retrieve any of
the .ism or .ismc files, since the IIS servers' Smooth Streaming module
virtualizes those files. For example, if I request this URL:
http://dalht7.digitalsyphon.com/dalht7-0/2015/7/video1435746311702.ism
the server will refuse.
If I request
http://dalht7.digitalsyphon.com/dalht7-0/2015/7/video1435746311702.ism/Manifest,
the server will parse video1435746311702.ism and read
video1435746311702.ismc and return that.
Can you copy/paste the contents of video1435746311702.ism?

One thing that's a bit dangerous with the file layout you have here (it
isn't what's causing the problem here, but I thought I'd mention it since
you may run into it later on) is that you have multiple videos in the same
directory, and they all share the same init segments (init-video-1.mp4,
init-video-2.mp4, etc.). This is Ok as long as all the videos are encoded
exactly the same (they would have the same data in the init segment). But
that won't work if your videos are either encoded differently or encrypted,
because then they would each need their own init segments.
I would recommend creating one directory per video stream.


Reply to this email directly or view it on GitHub
#18 (comment)
.

@barbibulle
Copy link
Contributor

That manifest looks ok at first glance.
But something's odd.
The video1435746311702 stream doesn't work (either DASH or Smooth), as the segment URL requests fail.
But the next video in the list (http://dalht7.digitalsyphon.com/dalht7-0/2015/7/video1435748048380.ism) works fine (http://dalht7.digitalsyphon.com/dalht7-0/2015/7/video1435748048380.ism/Manifest with a Smooth player).

The error returned by your IIS server ([Error] Failed to load resource: the server responded with a status of 415 (Unsupported Media Type) (Fragments(video=0), line 0)) may be an indication that there's something wrong with the .ismv file itself (the IIS server can't parse it).
Can you make that file accessible for download by itself without being 'caught' by the IIS server (for example, make a copy and rename it .mp4 instead of .ismv, and that should allow it to be downloaded directly).
Also, there may be some more verbose logging done by your server that indicate what it may not like.

@ddjauregui
Copy link
Author

http://dalht7.digitalsyphon.com/dalht7-0/2015/7/video1435746311702.mp4

Ok I renamed to a .mp4 so you can d/l and be able to analyze it.


From: barbibulle [mailto:notifications@github.com]
Sent: Friday, July 17, 2015 5:38 PM
To: axiomatic-systems/Bento4
Cc: ddjauregui
Subject: Re: [Bento4] MPEG-DASH.py appears to not have full schema layout
for MPD's used under IIS from ISMV files (#18)

That manifest looks ok at first glance.
But something's odd.
The video1435746311702 stream doesn't work (either DASH or Smooth), as the
segment URL requests fail.
But the next video in the list (
http://dalht7.digitalsyphon.com/dalht7-0/2015/7/video1435748048380.ism)
works fine (
http://dalht7.digitalsyphon.com/dalht7-0/2015/7/video1435748048380.ism/Manifest
with a Smooth player).

The error returned by your IIS server ([Error] Failed to load resource: the
server responded with a status of 415 (Unsupported Media Type)
(Fragments(video=0), line 0)) may be an indication that there's something
wrong with the .ismv file itself (the IIS server can't parse it).
Can you make that file accessible for download by itself without being
'caught' by the IIS server (for example, make a copy and rename it .mp4
instead of .ismv, and that should allow it to be downloaded directly).
Also, there may be some more verbose logging done by your server that
indicate what it may not like.


Reply to this email directly or view it on GitHub
#18 (comment)
.

@barbibulle
Copy link
Contributor

Something's changed on the server. I'm now able to stream the first stream with a Smooth Streaming client (http://DALHT7.digitalsyphon.com/dalht7-0/2015/7/video1435746311702.ism/Manifest), so that's good.
And looking at the media fragments, I can explain why most DASH players won't be able to play the stream: your media segments aren't 100% DASH compliant. They are missing the 'tfdt' box to timestamp the fragments. As a result, the HTML5 DASH players are not going to get the right timing, and nothing will show (they could be more resilient to non-compliant streams, but that's not the case).
To fix this, you need to either get a version of your encoder that can produce .ismv files with 'tfdt' boxes, or your can convert/fix your .ismv files using the 'mp4fragment' tool:
mp4fragment <smooth_original.ismv> <dash_compatible.mp4>
This will re-fragment your .ismv file and add the missing 'tfdt' boxes.
You then use the converted/fixed video files as the input to mp4-dash.py. The result will be compatible both with Smooth Streaming and with DASH.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants