Recherche avancée

Médias (1)

Mot : - Tags -/censure

Autres articles (71)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

  • Support audio et vidéo HTML5

    10 avril 2011

    MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
    Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
    Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
    Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

Sur d’autres sites (13234)

  • ffmpeg adts streaming with ezstream for icecast

    9 août 2017, par Roberto Arosemena

    I’m trying to use ezstream to stream to an icecast server, my problem is while encoding the audio, I decode it from mp3 with madplay and I’m trying to encode it with ffmpeg so the output is aac, someone told me to use adts to be able to stream aac the problem is that the encoding doesn’t stream the audio, it shows the timer on the console but it goes from 0:00:00 to 0:00:40 to 0:01:30, etc until the song ends instead of going second by second, this is my config :

    <ezstream>
      <url>http://localhost:8100/t</url>
      <sourcepassword>password</sourcepassword>
      <format>MP3</format>
      <filename>/home/vybroo/server/audio/play.m3u</filename>
      <reencode>
         <enable>1</enable>
         <encdec>
            <format>MP3</format>
            <match>.mp3</match>
            <decode>madplay -b 16 -R 44100 -S -o raw:- @T@</decode>
            <encode>ffmpeg -f s16le -ar 44.1k -ac 2 -i - -b:a 32k -ar 44.1k -f adts -</encode>
         </encdec>
      </reencode>
    </ezstream>

    is the enconding config wrong ?, what should i change so it streams second by second correctly

  • varying RTP stream result from custom SIP implementation

    1er février, par Nik Hendricks

    I am in the process of creating my own SIP implementation in Node.js. As well as a b2bua as a learning project.

    &#xA;

    Finding people wise in the ways of SIP has proved to be difficult elsewhere but here I have had good results

    &#xA;

    this is the GitHub of my library so far node.js-sip

    &#xA;

    this is the GitHub of my PBX so far FlowPBX

    &#xA;

    Currently, everything is working as I expect. Although I really have some questions on possible errors in my implementation.

    &#xA;

    My main issue is with RTP streams. Currently I am utilizing ffmpeg.

    &#xA;

    my function goes as follows

    &#xA;

    start_stream(call_id, sdp){&#xA;        console.log(&#x27;Starting Stream&#x27;)&#xA;        let port = sdp.match(/m=audio (\d&#x2B;) RTP/)[1];&#xA;        let ip = sdp.match(/c=IN IP4 (\d&#x2B;\.\d&#x2B;\.\d&#x2B;\.\d&#x2B;)/)[1];&#xA;        let codec_ids = sdp.match(/m=audio \d&#x2B; RTP\/AVP (.&#x2B;)/)[1].split(&#x27; &#x27;);&#xA;        let ffmpeg_codec_map = {&#xA;            &#x27;opus&#x27;: &#x27;libopus&#x27;,&#xA;            &#x27;PCMU&#x27;: &#x27;pcm_mulaw&#x27;,&#xA;            &#x27;PCMA&#x27;: &#x27;pcm_alaw&#x27;,&#xA;            &#x27;telephone-event&#x27;: &#x27;pcm_mulaw&#x27;,&#xA;            &#x27;speex&#x27;: &#x27;speex&#x27;,&#xA;            &#x27;G722&#x27;: &#x27;g722&#x27;,&#xA;            &#x27;G729&#x27;: &#x27;g729&#x27;,&#xA;            &#x27;GSM&#x27;: &#x27;gsm&#x27;,&#xA;            &#x27;AMR&#x27;: &#x27;amr&#x27;,&#xA;            &#x27;AMR-WB&#x27;: &#x27;amr_wb&#x27;,&#xA;            &#x27;iLBC&#x27;: &#x27;ilbc&#x27;,&#xA;            &#x27;iSAC&#x27;: &#x27;isac&#x27;,&#xA;        }&#xA;&#xA;        let codecs = [];&#xA;        sdp.split(&#x27;\n&#x27;).forEach(line => {&#xA;            if(line.includes(&#x27;a=rtpmap&#x27;)){&#xA;                let codec = line.match(/a=rtpmap:(\d&#x2B;) (.&#x2B;)/)[2];&#xA;                let c_id = line.match(/a=rtpmap:(\d&#x2B;) (.&#x2B;)/)[1];&#xA;                codecs.push({                    &#xA;                    name: codec.split(&#x27;/&#x27;)[0],&#xA;                    rate: codec.split(&#x27;/&#x27;)[1],&#xA;                    channels: codec.split(&#x27;/&#x27;)[2] !== undefined ? codec.split(&#x27;/&#x27;)[2] : 1,&#xA;                    id: c_id&#xA;                })&#xA;            }&#xA;        })&#xA;&#xA;        console.log(&#x27;codecs&#x27;)&#xA;        console.log(codecs)&#xA;&#xA;        let selected_codec = codecs[0]&#xA;        if(selected_codec.name == &#x27;telephone-event&#x27;){&#xA;            selected_codec = codecs[1]&#xA;            console.log(selected_codec)&#xA;        }&#xA;&#xA;        //see if opus is available&#xA;        codecs.forEach(codec => {&#xA;            if(codec.name == &#x27;opus&#x27;){&#xA;                selected_codec = codec;&#xA;            }&#xA;        })&#xA;&#xA;        if(selected_codec.name != &#x27;opus&#x27;){&#xA;            //check if g729 is available&#xA;            codecs.forEach(codec => {&#xA;                if(codec.name == &#x27;G729&#x27;){&#xA;                    selected_codec = codec;&#xA;                }&#xA;            })&#xA;        }&#xA;&#xA;        console.log(&#x27;selected_codec&#x27;)&#xA;        console.log(selected_codec)&#xA;&#xA;        let spawn = require(&#x27;child_process&#x27;).spawn;&#xA;        let ffmpegArgs = [&#xA;            &#x27;-re&#x27;,&#xA;            &#x27;-i&#x27;, &#x27;song.mp3&#x27;,&#xA;            &#x27;-acodec&#x27;, ffmpeg_codec_map[selected_codec.name],&#xA;            &#x27;-ar&#x27;, selected_codec.rate,&#xA;            &#x27;-ac&#x27;, selected_codec.channels,&#xA;            &#x27;-payload_type&#x27;, selected_codec.id,&#xA;            &#x27;-f&#x27;, &#x27;rtp&#x27;, `rtp://${ip}:${port}`&#xA;        ];&#xA;&#xA;        let ffmpeg = spawn(&#x27;ffmpeg&#x27;, ffmpegArgs);&#xA;&#xA;        ffmpeg.stdout.on(&#x27;data&#x27;, (data) => {&#xA;            console.log(`stdout: ${data}`);&#xA;        });&#xA;        ffmpeg.stderr.on(&#x27;data&#x27;, (data) => {&#xA;            console.error(`stderr: ${data}`);&#xA;        });&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;

    &#xA;

    When using zoiper to test it works great. I have seen the mobile version negotiate speex&#xA;and the desktop version negotiate opus mostly for the codec.

    &#xA;

    today I tried to register a grandstream phone to my pbx and the rtp stream is blank audio.&#xA;opus is available and I have tried to prefer that in my stream but still even when selecting that I cannot get audio to the grandstream phone. This is the same case for a yealink phone. I can only get zoiper to work so far.

    &#xA;

    what could be causing this behavior ? there is a clear path of communication between everything just like the zoiper client's I have used.

    &#xA;

    Additionally in my sip implementation,&#xA;how important is the concept of a dialog ? currently, I just match messages by Call-ID

    &#xA;

    and then choose what to send based on the method or response. is there any other underlying dialog functionality that I may need to implement ?

    &#xA;

    It would just be awesome to get someone who really knows what they are talking about eyes on some of my code to direct this large codebase in the right direction but I realize that a big ask lol.

    &#xA;

  • How to use ffmpeg capture screen (not command) ?

    16 novembre 2022, par Tom

    I am looking for example on the Internet, but none of the relevant examples can be run. Always I compile the no match ffmpeg version. Could someone share a example to learn ?

    &#xA;