Recherche avancée

Médias (1)

Mot : - Tags -/Rennes

Autres articles (19)

  • Supporting all media types

    13 avril 2011, par

    Unlike most software and media-sharing platforms, MediaSPIP aims to manage as many different media types as possible. The following are just a few examples from an ever-expanding list of supported formats : images : png, gif, jpg, bmp and more audio : MP3, Ogg, Wav and more video : AVI, MP4, OGV, mpg, mov, wmv and more text, code and other data : OpenOffice, Microsoft Office (Word, PowerPoint, Excel), web (html, CSS), LaTeX, Google Earth and (...)

  • List of compatible distributions

    26 avril 2011, par

    The table below is the list of Linux distributions compatible with the automated installation script of MediaSPIP. Distribution nameVersion nameVersion number Debian Squeeze 6.x.x Debian Weezy 7.x.x Debian Jessie 8.x.x Ubuntu The Precise Pangolin 12.04 LTS Ubuntu The Trusty Tahr 14.04
    If you want to help us improve this list, you can provide us access to a machine whose distribution is not mentioned above or send the necessary fixes to add (...)

  • Submit bugs and patches

    13 avril 2011

    Unfortunately a software is never perfect.
    If you think you have found a bug, report it using our ticket system. Please to help us to fix it by providing the following information : the browser you are using, including the exact version as precise an explanation as possible of the problem if possible, the steps taken resulting in the problem a link to the site / page in question
    If you think you have solved the bug, fill in a ticket and attach to it a corrective patch.
    You may also (...)

Sur d’autres sites (4398)

  • Video Conferencing in HTML5 : WebRTC via Web Sockets

    1er janvier 2014, par silvia

    A bit over a week ago I gave a presentation at Web Directions Code 2012 in Melbourne. Maxine and John asked me to speak about something related to HTML5 video, so I went for the new shiny : WebRTC – real-time communication in the browser.

    Presentation slides

    I only had 20 min, so I had to make it tight. I wanted to show off video conferencing without special plugins in Google Chrome in just a few lines of code, as is the promise of WebRTC. To a large extent, I achieved this. But I made some interesting discoveries along the way. Demos are in the slide deck.

    UPDATE : Opera 12 has been released with WebRTC support.

    Housekeeping : if you want to replicate what I have done, you need to install a Google Chrome Web Browser 19+. Then make sure you go to chrome ://flags and activate the MediaStream and PeerConnection experiment(s). Restart your browser and now you can experiment with this feature. Big warning up-front : it’s not production-ready, since there are still changes happening to the spec and there is no compatible implementation by another browser yet.

    Here is a brief summary of the steps involved to set up video conferencing in your browser :

    1. Set up a video element each for the local and the remote video stream.
    2. Grab the local camera and stream it to the first video element.
    3. (*) Establish a connection to another person running the same Web page.
    4. Send the local camera stream on that peer connection.
    5. Accept the remote camera stream into the second video element.

    Now, the most difficult part of all of this – believe it or not – is the signalling part that is required to build the peer connection (marked with (*)). Initially I wanted to run completely without a server and just enter the remote’s IP address to establish the connection. This is, however, not a functionality that the PeerConnection object provides [might this be something to add to the spec ?].

    So, you need a server known to both parties that can provide for the handshake to set up the connection. All the examples that I have seen, such as https://apprtc.appspot.com/, use a channel management server on Google’s appengine. I wanted it all working with HTML5 technology, so I decided to use a Web Socket server instead.

    I implemented my Web Socket server using node.js (code of websocket server). The video conferencing demo is in the slide deck in an iframe – you can also use the stand-alone html page. Works like a treat.

    While it is still using Google’s STUN server to get through NAT, the messaging for setting up the connection is running completely through the Web Socket server. The messages that get exchanged are plain SDP message packets with a session ID. There are OFFER, ANSWER, and OK packets exchanged for each streaming direction. You can see some of it in the below image :

    WebRTC demo

    I’m not running a public WebSocket server, so you won’t be able to see this part of the presentation working. But the local loopback video should work.

    At the conference, it all went without a hitch (while the wireless played along). I believe you have to host the WebSocket server on the same machine as the Web page, otherwise it won’t work for security reasons.

    A whole new world of opportunities lies out there when we get the ability to set up video conferencing on every Web page – scary and exciting at the same time !

  • What is “interoperable TTML” ?

    1er janvier 2014, par silvia

    I’ve just tried to come to terms with the latest state of TTML, the Timed Text Markup Language.

    TTML has been specified by the W3C Timed Text Working Group and released as a RECommendation v1.0 in November 2010. Since then, several organisations have tried to adopt it as their caption file format. This includes the SMPTE, the EBU (European Broadcasting Union), and Microsoft.

    Both, Microsoft and the EBU actually looked at TTML in detail and decided that in order to make it usable for their use cases, a restriction of its functionalities is needed.

    EBU-TT

    The EBU released EBU-TT, which restricts the set of valid attributes and feature. “The EBU-TT format is intended to constrain the features provided by TTML, especially to make EBU-TT more suitable for the use with broadcast video and web video applications.” (see EBU-TT).

    In addition, EBU-specific namespaces were introduce to extend TTML with EBU-specific data types, e.g. ebuttdt:frameRateMultiplierType or ebuttdt:smpteTimingType. Similarly, a bunch of metadata elements were introduced, e.g. ebuttm:documentMetadata, ebuttm:documentEbuttVersion, or ebuttm:documentIdentifier.

    The use of namespaces as an extensibility mechanism will ascertain that EBU-TT files continue to be valid TTML files. However, any vanilla TTML parser will not know what to do with these custom extensions and will drop them on the floor.

    Simple Delivery Profile

    With the intention to make TTML ready for “internet delivery of Captions originated in the United States”, Microsoft proposed a “Simple Delivery Profile for Closed Captions (US)” (see Simple Profile). The Simple Profile is also a restriction of TTML.

    Unfortunately, the Microsoft profile is not the same as the EBU-TT profile : for example, it contains the “set” element, which is not conformant in EBU-TT. Similarly, the supported style features are different, e.g. Simple Profile supports “display-region”, while EBU-TT does not. On the other hand, EBU-TT supports monospace, sans-serif and serif fonts, while the Simple profile does not.

    Thus files created for the Simple Delivery Profile will not work on players that expect EBU-TT and the reverse.

    Fortunately, the Simple Delivery Profile does not introduce any new namespaces and new features, so at least it is an explicit subpart of TTML and not both a restriction and extension like EBU-TT.

    SMPTE-TT

    SMPTE also created a version of the TTML standard called SMPTE-TT. SMPTE did not decide on a subset of TTML for their purposes – it was simply adopted as a complete set. “This Standard provides a framework for timed text to be supported for content delivered via broadband means,…” (see SMPTE-TT).

    However, SMPTE extended TTML in SMPTE-TT with an ability to store a binary blob with captions in another format. This allows using SMPTE-TT as a transport format for any caption format and is deemed to help with “backwards compatibility”.

    Now, instead of specifying a profile, SMPTE decided to define how to convert CEA-608 captions to SMPTE-TT. Even if it’s not called a “profile”, that’s actually what it is. It even has its own namespace : “m608 :”.

    Conclusion

    With all these different versions of TTML, I ask myself what a video player that claims support for TTML will do to get something working. The only chance it has is to implement all the extensions defined in all the different profiles. I pity the player that has to deal with a SMPTE-TT file that has a binary blob in it and is expected to be able to decode this.

    Now, what is a caption author supposed to do when creating TTML ? They obviously cannot expect all players to be able to play back all TTML versions. Should they create different files depending on what platform they are targeting, i.e. a EBU-TT version, a SMPTE-TT version, a vanilla TTML version, and a Simple Delivery Profile version ? Should they by throwing all the features of all the versions into one TTML file and hope that the players will pick out the right things that they require and drop the rest on the floor ?

    Maybe the best way to progress would be to make a list of the “safe” features : those features that every TTML profile supports. That may be the best way to get an “interoperable TTML” file. Here’s me hoping that this minimal set of features doesn’t just end up being the usual (starttime, endtime, text) triple.

    UPDATE :

    I just found out that UltraViolet have their own profile of SMPTE-TT called CFF-TT (see UltraViolet FAQ and spec). They are making some SMPTE-TT fields optional, but introduce a new @forcedDisplayMode attribute under their own namespace “cff :”.

  • av_interleaved_write_frame() : Immediate exit requested when streaming WebM

    21 décembre 2013, par kd0hdf

    Ok, so I am trying to stream live video from my HD Homerun Prime (a network tv tuner that outputs mpeg2 video) to the web as WebM with ffserver. However, when I start ffmpeg it will run normally for a few seconds (and even output video through ffserver) then after 2-3 seconds it will freeze and I have to use ctrl+c to get back to a prompt.What am I missing here ? Sorry if this is a total newbie question.

    I should also mention I followed a tutorial here : https://www.virag.si/2012/11/streaming-live-webm-video-with-ffmpeg/

    FFmpeg command

    new@Desktop:~$ ffmpeg -i <network tuner="tuner"> <ffserver>
    ffmpeg version git-2013-12-12-d546a59 Copyright (c) 2000-2013 the FFmpeg developers
     built on Dec 13 2013 21:51:49 with gcc 4.8 (Ubuntu/Linaro 4.8.1-10ubuntu9)
     configuration: --prefix=/home/new/ffmpeg_build --extra-cflags=-I/home/new/ffmpeg_build/include --extra-ldflags=-L/home/new/ffmpeg_build/lib --bindir=/home/new/bin --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab
     libavutil      52. 58.100 / 52. 58.100
     libavcodec     55. 45.101 / 55. 45.101
     libavformat    55. 22.100 / 55. 22.100
     libavdevice    55.  5.102 / 55.  5.102
     libavfilter     3. 92.100 /  3. 92.100
     libswscale      2.  5.101 /  2.  5.101
     libswresample   0. 17.104 /  0. 17.104
     libpostproc    52.  3.100 / 52.  3.100
    [mpegts @ 0x326f980] Could not find codec parameters for stream 0 (Unknown: none (ETV1 / 0x31565445)): unknown codec
    Consider increasing the value for the &#39;analyzeduration&#39; and &#39;probesize&#39; options
    [mpegts @ 0x326f980] Could not find codec parameters for stream 1 (Unknown: none (ETV1 / 0x31565445)): unknown codec
    Consider increasing the value for the &#39;analyzeduration&#39; and &#39;probesize&#39; options
    [mpegts @ 0x326f980] Could not find codec parameters for stream 4 (Unknown: none ([134][0][0][0] / 0x0086)): unknown codec
    Consider increasing the value for the &#39;analyzeduration&#39; and &#39;probesize&#39; options
    Input #0, mpegts, from &#39;http://192.168.0.199:5004/auto/v39&#39;:
     Duration: N/A, start: 85618.589122, bitrate: 192 kb/s
     Program 8
       Stream #0:0[0x1093]: Unknown: none (ETV1 / 0x31565445)
       Stream #0:1[0x1094]: Unknown: none (ETV1 / 0x31565445)
       Stream #0:2[0x1095]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv), 704x480 [SAR 10:11 DAR 4:3], max. 15000 kb/s, 29.97 fps, 59.94 tbr, 90k tbn, 59.94 tbc
       Stream #0:3[0x1096](eng): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, stereo, fltp, 192 kb/s
       Stream #0:4[0x1097]: Unknown: none ([134][0][0][0] / 0x0086)
    [libvpx @ 0x3275060] v1.2.0
    Output #0, ffm, to &#39;http://localhost:8090/feed1.ffm&#39;:
     Metadata:
       creation_time   : now
       encoder         : Lavf55.22.100
       Stream #0:0(eng): Audio: vorbis (libvorbis), 22050 Hz, mono, fltp, 64 kb/s
       Stream #0:1: Video: vp8 (libvpx), yuv420p, 720x576 [SAR 16:15 DAR 4:3], q=10-42, 1000 kb/s, 1000k tbn, 29.97 tbc
    Stream mapping:
     Stream #0:3 -> #0:0 (ac3 -> libvorbis)
     Stream #0:2 -> #0:1 (mpeg2video -> libvpx)
    Press [q] to stop, [?] for help
    ^Cav_interleaved_write_frame(): Immediate exit requested70 bitrate= 936.1kbits/s dup=51 drop=0    
    Received signal 2: terminating.
    new@Desktop:~$
    </ffserver></network>

    FFserver configuration :

    Port 8090                      # Port to bind the server to
    BindAddress 0.0.0.0
    MaxHTTPConnections 2000
    MaxClients 1000
    MaxBandwidth 10000             # Maximum bandwidth per client
                                  # set this high enough to exceed stream bitrate
    CustomLog -
    NoDaemon                       # Remove this if you want FFserver to daemonize after start

    <feed>               # This is the input feed where FFmpeg will send
      File /tmp/feed1.ffm         # video stream.
      FileMaxSize 1G              # Maximum file size for buffering video
      #ACL allow 127.0.0.1         # Allowed IPs
    </feed>

    <stream>              # Output stream URL definition
      Feed feed1.ffm              # Feed from which to receive video
      Format webm

      # Audio settings
      AudioCodec vorbis
      AudioBitRate 64             # Audio bitrate

      # Video settings
      VideoCodec libvpx
      VideoSize 720x576           # Video resolution
      VideoFrameRate 25           # Video FPS
      AVOptionVideo flags +global_header  # Parameters passed to encoder
                                          # (same as ffmpeg command-line parameters)
      AVOptionVideo cpu-used 0
      AVOptionVideo qmin 10
      AVOptionVideo qmax 42
      AVOptionVideo quality good
      AVOptionAudio flags +global_header
      PreRoll 15
      StartSendOnKey
      VideoBitRate 1000            # Video bitrate
    </stream>

    <stream>            # Server status URL
      Format status
      # Only allow local people to get the status
      ACL allow localhost
      ACL allow 192.168.0.0 192.168.255.255
    </stream>

    <redirect>    # Just an URL redirect for index
      # Redirect index.html to the appropriate site
      URL <removed url="url" to="to" ffmpeg="ffmpeg" homepage="homepage">
    </removed></redirect>

    ...and for the FFserver side

    new@Desktop:/var/www$ ffserver -d -f /etc/ffserver.conf
    ffserver version git-2013-12-12-d546a59 Copyright (c) 2000-2013 the FFmpeg developers
     built on Dec 13 2013 21:51:49 with gcc 4.8 (Ubuntu/Linaro 4.8.1-10ubuntu9)
     configuration: --prefix=/home/new/ffmpeg_build --extra-cflags=-I/home/new/ffmpeg_build/include --extra-ldflags=-L/home/new/ffmpeg_build/lib --bindir=/home/new/bin --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab
     libavutil      52. 58.100 / 52. 58.100
     libavcodec     55. 45.101 / 55. 45.101
     libavformat    55. 22.100 / 55. 22.100
     libavdevice    55.  5.102 / 55.  5.102
     libavfilter     3. 92.100 /  3. 92.100
     libswscale      2.  5.101 /  2.  5.101
     libswresample   0. 17.104 /  0. 17.104
     libpostproc    52.  3.100 / 52.  3.100
    Fri Dec 20 23:53:20 2013 FFserver started.
    Fri Dec 20 23:53:29 2013 127.0.0.1 - - New connection: GET /feed1.ffm
    Fri Dec 20 23:53:29 2013 127.0.0.1 - - [GET] "/feed1.ffm HTTP/1.1" 200 4175