Menu

which streaming server

Help
2003-10-31
2003-11-06
  • nicola franchi

    nicola franchi - 2003-10-31

    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

     
    • Jean Le Feuvre

      Jean Le Feuvre - 2003-10-31

      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).

       
      • nicola franchi

        nicola franchi - 2003-11-03

        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

         
      • Jean Le Feuvre

        Jean Le Feuvre - 2003-11-06

        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.

         
    • Hans-Jürgen Bardenhagen

      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/

       
    • Jean Le Feuvre

      Jean Le Feuvre - 2003-11-03

      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.

       
      • Hans-Jürgen Bardenhagen

        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.

         
    • Jean Le Feuvre

      Jean Le Feuvre - 2003-11-03

      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.

       
    • nicola franchi

      nicola franchi - 2003-11-03

      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