Excuse me for the newbie question.
I need to stream an mp4 file which is not isma-compliant, since it contains more than one video elementary stream; I've hinted it using MP4Box.
I've then tried Darwin Streaming Server, but it didn't work correctly. I wonder why.
Do you know any alternative to DSS?
Thanks
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Regarding alternative to DSS, the answer is no - I've always used it and never tried anything else...
regarding the pbs of streaming files with multiple video, could you give more details:
1- are the video streams a scalable representation of the same video object
2- what kind of scene is using these
3- how did you configure the sdp, especially the mpeg4-iod generated by mp4box (hint options).
More genrally speaking, DSS has know limitation when doing MPEG-4 streaming, since it only supports a single timeline for the session (eg, all tracks in the MP4 are served synchronized, which is not always the case in an MPEG4 presentation).
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thanks for your response.
Some details: I want to stream an mp4 file with two distinct video sources and one audio source. I created the file using mp4creator (MPEG4IP) and then I have modified the scene description; I can play the file locally.
Next, I've hinted it using MP4Box (only with the '-hint' option ) and tried to stream it with DSS, but the scene is not recomposed correctly.
However, I cannot stream even the sample files from the ENST page (in particular hinted kangaroo.mp4 and teaser.mp4). Excuse for my inexperience, but do I need to create an sdp file even for on-demand streaming? What is the proper way to hint mp4 files?
Thanks again
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
OK here we go for news on all this:
non-ISMA streaming in version 0.1.0 is broken, I spend the last 2 days fixing all this - it's quite messy since DSS handling of streams SETUP/PLAY when other streams are playing is a bit confusing for the player (basically the server resyncs all streams to the last PLAY start range). I fixed that in the client to be able to play complex sessions, and now gpac handles the kind of scenes posted in this thread.
The only issue is that the scene shall have only one timeline, DSS always assuming all tracks in the mp4 are synchronized.
To test all this, you will need to update from CVS, and recompile both MP4Box and Osmo4, and rehint the files. It should work right out of the box although you may get weird buffering messages ...
Please test (and enjoy), these are likely the last fixes before 0.1.1.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
As far as I know, the new TCVP open source project (Linux-only) is also able to stream MP4 files, but I'm not sure if they use Apple's Darwin Streaming Server for this, too. You may have a look at it for yourself:
On the "Formats" page they do not mention MP4 as a possible container format for that, so you are probably right that this is not included yet. I only guessed that MP4 is also a part of it, because FAAC and FAAD2 are included, too. Since TCVP is modular, it might be easy to add MP4 support though.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Regarding SDP creation, this is done (and should be correct) by MP4Box, so you don't have to do anything.
Regarding pbs with teaser.mp4, this is what I said above: currently due to limitations in DSS, streaming an MPEG4 presentation with several media running on different timeline is not supported.
The pb with kangaroo.mp4 is more tricky, and comes from differences between the RTSP protocol and the DMIF (eg MPEG4 network abstraction) one. I'm working on fixes to support it, but currently gpac cannot play streamed cartoons with audio (eg, if you remove audio from the cartoon and re-encode/re-hint the file, it works).
Regarding your specific pb, I would need at least the .bt file to understand what is happening...
More generally speaking, the only way to stream presentations with several media running on # timelines is to physically dissociate the media, eg have a hinted mp4 for each "timeline group", and reference them in the main presentation.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Excuse me for the newbie question.
I need to stream an mp4 file which is not isma-compliant, since it contains more than one video elementary stream; I've hinted it using MP4Box.
I've then tried Darwin Streaming Server, but it didn't work correctly. I wonder why.
Do you know any alternative to DSS?
Thanks
Regarding alternative to DSS, the answer is no - I've always used it and never tried anything else...
regarding the pbs of streaming files with multiple video, could you give more details:
1- are the video streams a scalable representation of the same video object
2- what kind of scene is using these
3- how did you configure the sdp, especially the mpeg4-iod generated by mp4box (hint options).
More genrally speaking, DSS has know limitation when doing MPEG-4 streaming, since it only supports a single timeline for the session (eg, all tracks in the MP4 are served synchronized, which is not always the case in an MPEG4 presentation).
Thanks for your response.
Some details: I want to stream an mp4 file with two distinct video sources and one audio source. I created the file using mp4creator (MPEG4IP) and then I have modified the scene description; I can play the file locally.
Next, I've hinted it using MP4Box (only with the '-hint' option ) and tried to stream it with DSS, but the scene is not recomposed correctly.
However, I cannot stream even the sample files from the ENST page (in particular hinted kangaroo.mp4 and teaser.mp4). Excuse for my inexperience, but do I need to create an sdp file even for on-demand streaming? What is the proper way to hint mp4 files?
Thanks again
OK here we go for news on all this:
non-ISMA streaming in version 0.1.0 is broken, I spend the last 2 days fixing all this - it's quite messy since DSS handling of streams SETUP/PLAY when other streams are playing is a bit confusing for the player (basically the server resyncs all streams to the last PLAY start range). I fixed that in the client to be able to play complex sessions, and now gpac handles the kind of scenes posted in this thread.
The only issue is that the scene shall have only one timeline, DSS always assuming all tracks in the mp4 are synchronized.
To test all this, you will need to update from CVS, and recompile both MP4Box and Osmo4, and rehint the files. It should work right out of the box although you may get weird buffering messages ...
Please test (and enjoy), these are likely the last fixes before 0.1.1.
As far as I know, the new TCVP open source project (Linux-only) is also able to stream MP4 files, but I'm not sure if they use Apple's Darwin Streaming Server for this, too. You may have a look at it for yourself:
http://tcvp.sourceforge.net/
Hmm, I haven't seen the MP4 streaming there, but I admit i didn't dig too much in the source. Very interesting project btw.
They only mention UDP streaming on the first page and also HTTP streaming on this page (so no RTSP available it seems):
http://tcvp.sourceforge.net/media.php
On the "Formats" page they do not mention MP4 as a possible container format for that, so you are probably right that this is not included yet. I only guessed that MP4 is also a part of it, because FAAC and FAAD2 are included, too. Since TCVP is modular, it might be easy to add MP4 support though.
Regarding SDP creation, this is done (and should be correct) by MP4Box, so you don't have to do anything.
Regarding pbs with teaser.mp4, this is what I said above: currently due to limitations in DSS, streaming an MPEG4 presentation with several media running on different timeline is not supported.
The pb with kangaroo.mp4 is more tricky, and comes from differences between the RTSP protocol and the DMIF (eg MPEG4 network abstraction) one. I'm working on fixes to support it, but currently gpac cannot play streamed cartoons with audio (eg, if you remove audio from the cartoon and re-encode/re-hint the file, it works).
Regarding your specific pb, I would need at least the .bt file to understand what is happening...
More generally speaking, the only way to stream presentations with several media running on # timelines is to physically dissociate the media, eg have a hinted mp4 for each "timeline group", and reference them in the main presentation.
Jean, thank you for your infinite patience.
This is th VRML code:
OrderedGroup {
children [
Transform2D {
translation -159.0 120.0
children [
Shape {
appearance Appearance {
texture MovieTexture {
url [ "20" ]
}
}
geometry Bitmap {
scale 1.0 1.0
}
}
]
}
Transform2D {
translation 160.0 200.0
children [
Shape {
appearance Appearance {
material Material2D {
emissiveColor 1.0 0.0 0.0
filled true
}
}
geometry Rectangle {
size 300.0 60.0
}
}
]
}
Transform2D {
translation 50.0 180.0
children [
Shape {
appearance Appearance {
material Material {
emissiveColor 1.0 0.0 0.0
transparency 0.0
}
}
geometry Text {
string [ "Snapping" ]
fontStyle FontStyle {
size 60.0
style "BOLD"
}
}
}
]
}
Transform2D {
translation 159.0 -120.0
children [
Shape {
appearance Appearance {
texture MovieTexture {
url [ "30" ]
}
}
geometry Bitmap {
scale 1.0 1.0
}
}
]
}
Transform2D {
translation -160.0 -200.0
children [
Shape {
appearance Appearance {
material Material2D {
emissiveColor 1.0 0.0 0.0
filled true
}
}
geometry Rectangle {
size 300.0 60.0
}
}
]
}
Transform2D {
translation -240.0 -220.0
children [
Shape {
appearance Appearance {
material Material {
emissiveColor 1.0 0.0 0.0
transparency 0.0
}
}
geometry Text {
string [ "Talking" ]
fontStyle FontStyle {
size 60.0
style "BOLD"
}
}
}
]
}
Sound2D {
spatialize false
source AudioSource {
url [ "10" ]
}
}
]
}
InitialObjectDescriptor {
objectDescriptorID 0
ODProfileLevelIndication 254
sceneProfileLevelIndication 254
audioProfileLevelIndication 254
visualProfileLevelIndication 254
graphicsProfileLevelIndication 254
includeInlineProfileLevelFlag false
esdescr [
ES_Descriptor {
es_id 2
streamPriority 0
decConfigDescr DecoderConfigDescriptor {
objectTypeIndication 2
streamType 3
upStream false
bufferSizeDB 240
maxBitrate 1920
avgBitrate 192
decSpecificInfo BIFSv2Config {
use3DMeshCoding false
usePredictiveMFField false
isCommandStream true
pixelMetrics true
pixelWidth 640
pixelHeight 480
nodeIDBits 0
routeIDBits 0
protoIDBits 0
}
}
slConfigDescr SLConfigDescriptor {
}
}
ES_Descriptor {
es_id 1
streamPriority 0
decConfigDescr DecoderConfigDescriptor {
objectTypeIndication 1
streamType 1
upStream false
bufferSizeDB 210
maxBitrate 376
avgBitrate 37
}
slConfigDescr SLConfigDescriptor {
}
}
]
}
AT 0 {
UPDATE OD [
ObjectDescriptor {
objectDescriptorID 20
esdescr [
ES_Descriptor {
es_id 3
streamPriority 0
decConfigDescr DecoderConfigDescriptor {
objectTypeIndication 32
streamType 4
upStream false
bufferSizeDB 12962
maxBitrate 886840
avgBitrate 608742
decSpecificInfo DecoderSpecificInfoString {
info "@@@@@A;@?C@@@@@A;E@I@@@@@A@A@@@@@AB@@B@DD@@FFHE@B@?@:BAO"
}
}
slConfigDescr SLConfigDescriptor {
}
}
]
}
] # end UPDATE OD
UPDATE OD [
ObjectDescriptor {
objectDescriptorID 30
esdescr [
ES_Descriptor {
es_id 4
streamPriority 0
decConfigDescr DecoderConfigDescriptor {
objectTypeIndication 32
streamType 4
upStream false
bufferSizeDB 8871
maxBitrate 174744
avgBitrate 86314
decSpecificInfo DecoderSpecificInfoString {
info "@@@@@A;@?C@@@@@A;E@I@@@@@A@A@@@@@AB@@B@DD@@FFHE@B@?@:BAO"
}
}
slConfigDescr SLConfigDescriptor {
}
}
]
}
] # end UPDATE OD
UPDATE OD [
ObjectDescriptor {
objectDescriptorID 10
esdescr [
ES_Descriptor {
es_id 5
streamPriority 0
decConfigDescr DecoderConfigDescriptor {
objectTypeIndication 64
streamType 5
upStream false
bufferSizeDB 379
maxBitrate 69968
avgBitrate 58058
decSpecificInfo DecoderSpecificInfoString {
info "ABA@"
}
}
slConfigDescr SLConfigDescriptor {
}
}
]
}
] # end UPDATE OD
}
Osmo4 buffers just the 0.20% and then stops.
Any ideas?
Thanks