Recherche avancée

Médias (1)

Mot : - Tags -/musée

Autres articles (111)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

  • 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 (10337)

  • Shaka Player : ignore empty AdaptationSet

    24 juin 2019, par Mitya

    I’m trying to play DASH stream in Shaka Player.
    Sometimes the stream doesn’t have an audio source and its manifest file contains an empty AdaptationSet entry.
    In this case Shaka Player returns the manifest parsing error :

    | DASH_EMPTY_ADAPTATION_SET | 4003 | number |  The DASH Manifest contained an AdaptationSet with no Representations. |

    Is it possible to ignore this error somehow and play the video without audio source ?

    Example of manifest file :

    <?xml version="1.0" encoding="utf-8"?>
    <mpd xmlns="urn:mpeg:dash:schema:mpd:2011" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="dynamic" minimumupdateperiod="PT4S" suggestedpresentationdelay="PT4S" availabilitystarttime="2019-06-24T13:38:04Z" publishtime="2019-06-24T13:38:34Z" timeshiftbufferdepth="PT14.9S" minbuffertime="PT9.9S">
       <programinformation>
           
       </programinformation>
       <period start="PT0.0S">
           <adaptationset contenttype="video" segmentalignment="true" bitstreamswitching="true">
               <representation mimetype="video/mp4" codecs="avc1.640028" bandwidth="2000000" width="1920" height="1080" framerate="20/1">
                   <segmenttemplate timescale="10240" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startnumber="5">
                       <segmenttimeline>
                           <s t="201697" d="51190" r="2"></s>
                       </segmenttimeline>
                   </segmenttemplate>
               </representation>
           </adaptationset>
           <adaptationset contenttype="audio" segmentalignment="true" bitstreamswitching="true">
           </adaptationset>
       </period>
    </mpd>
  • Issue with streaming in realtime to HTML5 video player

    24 juillet 2023, par ImaSquareBTW

    ok so i created a project which should take an mkv file convert it to a sutaible fomrat in relatime and play it as it transcodes in the html 5 video player and should play as soon as small segement is ready for playback but unfornatlly it does seem to work heres my code if your curious, help would be very much appreicted

    &#xA;

    &#xA;&#xA;  &#xA;    &#xA;  &#xA;  &#xA;    <video controls="controls">&#xA;      <source src="output.mp4" type="video/mp4">&#xA;    </source></video>&#xA;    <code class="echappe-js">&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/ffmpeg/0.11.6/ffmpeg.min.js&quot; integrity=&quot;sha512-91IRkhfv1tLVYAdH5KTV&amp;#x2B;KntIZP/7VzQ9E/qbihXFSj0igeacWWB7bQrdiuaJVMXlCVREL4Z5r&amp;#x2B;3C4yagAlwEw==&quot; crossorigin=&quot;anonymous&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/script&gt;&#xA;    &lt;script src='http://stackoverflow.com/feeds/tag/player.js'&gt;&lt;/script&gt;&#xA;  &#xA;&#xA;

    &#xA;

    and my javscript :

    &#xA;

    let mediaSource;&#xA;let sourceBuffer;&#xA;let isTranscoding = false;&#xA;let bufferedSeconds = 0;&#xA;&#xA;async function setupMediaSource() {&#xA;  mediaSource = new MediaSource();&#xA;  const videoPlayer = document.getElementById(&#x27;video-player&#x27;);&#xA;  videoPlayer.src = URL.createObjectURL(mediaSource);&#xA;  await new Promise(resolve => {&#xA;    mediaSource.addEventListener(&#x27;sourceopen&#x27;, () => {&#xA;      sourceBuffer = mediaSource.addSourceBuffer(&#x27;video/mp4; codecs="avc1.64001E, mp4a.40.2"&#x27;); // Match the transcoded format&#xA;      sourceBuffer.addEventListener(&#x27;updateend&#x27;, () => {&#xA;        if (!sourceBuffer.updating &amp;&amp; mediaSource.readyState === &#x27;open&#x27;) {&#xA;          mediaSource.endOfStream();&#xA;          resolve();&#xA;        }&#xA;      });&#xA;    });&#xA;  });&#xA;}&#xA;&#xA;async function transcodeVideo() {&#xA;  const ffmpeg = createFFmpeg({ log: true });&#xA;  const videoPlayer = document.getElementById(&#x27;video-player&#x27;);&#xA;&#xA;  await ffmpeg.load();&#xA;  const transcodeCommand = [&#x27;-i&#x27;, &#x27;The Legend of Old Gregg S02E05.mkv&#x27;, &#x27;-c:v&#x27;, &#x27;libx264&#x27;, &#x27;-preset&#x27;, &#x27;ultrafast&#x27;, &#x27;-c:a&#x27;, &#x27;aac&#x27;, &#x27;-strict&#x27;, &#x27;experimental&#x27;, &#x27;-f&#x27;, &#x27;mp4&#x27;, &#x27;-movflags&#x27;, &#x27;frag_keyframe&#x2B;empty_moov&#x27;, &#x27;output.mp4&#x27;];&#xA;&#xA;  const videoUrl = &#x27;The Legend of Old Gregg S02E05.mkv&#x27;; // The URL of the original video file&#xA;&#xA;  let lastBufferedSeconds = 0;&#xA;  let currentTime = 0;&#xA;  while (currentTime &lt; videoPlayer.duration) {&#xA;    if (!isTranscoding &amp;&amp; sourceBuffer.buffered.length > 0 &amp;&amp; sourceBuffer.buffered.end(0) - currentTime &lt; 5) {&#xA;      isTranscoding = true;&#xA;      const start = sourceBuffer.buffered.end(0);&#xA;      const end = Math.min(videoPlayer.duration, start &#x2B; 10);&#xA;      await fetchAndTranscode(videoUrl, start, end, ffmpeg, transcodeCommand);&#xA;      isTranscoding = false;&#xA;      currentTime = end;&#xA;      bufferedSeconds &#x2B;= (end - start);&#xA;      const transcodingSpeed = bufferedSeconds / (currentTime);&#xA;      lastBufferedSeconds = bufferedSeconds;&#xA;      console.log(`Transcoded ${end - start} seconds of video. Buffered: ${bufferedSeconds.toFixed(2)}s (${transcodingSpeed.toFixed(2)}x speed)`);&#xA;    }&#xA;    await new Promise(resolve => setTimeout(resolve, 500));&#xA;  }&#xA;&#xA;  await ffmpeg.exit();&#xA;}&#xA;&#xA;async function fetchAndTranscode(url, start, end, ffmpeg, transcodeCommand) {&#xA;  const response = await fetch(url, { headers: { Range: `bytes=${start}-${end}` } });&#xA;  const data = new Uint8Array(await response.arrayBuffer());&#xA;  ffmpeg.FS(&#x27;writeFile&#x27;, &#x27;input.mkv&#x27;, data); // Use &#x27;input.mkv&#x27; as a temporary file&#xA;  await ffmpeg.run(...transcodeCommand);&#xA;  const outputData = ffmpeg.FS(&#x27;readFile&#x27;, &#x27;output.mp4&#x27;);&#xA;  appendSegmentToBuffer(outputData);&#xA;}&#xA;&#xA;function appendSegmentToBuffer(segment) {&#xA;  if (!sourceBuffer.updating) {&#xA;    sourceBuffer.appendBuffer(segment);&#xA;  } else {&#xA;    sourceBuffer.addEventListener(&#x27;updateend&#x27;, () => {&#xA;      sourceBuffer.appendBuffer(segment);&#xA;    });&#xA;  }&#xA;}&#xA;&#xA;async function createFFmpeg(options) {&#xA;  const { createFFmpeg } = FFmpeg;&#xA;  const ffmpeg = createFFmpeg(options);&#xA;  await ffmpeg.load();&#xA;  return ffmpeg;&#xA;}&#xA;&#xA;(async () => {&#xA;  await setupMediaSource();&#xA;  await transcodeVideo();&#xA;})();&#xA;&#xA;

    &#xA;

  • ffmpeg player in discord.py (python) automatically leave

    25 octobre 2018, par Rastasplif

    I have created a discord bot that on certain messages either sends back a message or plays a sound (like a soundboard)

    The crucial line of code is :

            soundboard_player = voice_client.create_ffmpeg_player("doh.mp3")
            soundboard_player.start()
            await client.send_message(message.channel, "Playing DOH...")

    This works absolutely fine but i kept trying to add the line
    after=voice_client.disconnect()
    I put this inside the ("doh.mp3", * I PUT IT HERE *) brackets.
    I wanted the bot to leave after it was done.

    When I run the code with the ’after’ statement included, the bot joins and I get the error message :

    TypeError: disconnect() takes 1 positional argument but 2 were given

    I know you can use soundboard_player.is_done() to check the status of the bot but I couldn’t figure out a way to check the status without trapping the code in a loop

    By trapping the code in the loop I cant execute a STOP command to stop it playing the song (soundbite) half way through.

    Any help with the after=voice_client.disconnect() command for the ffmpeg player
    or a creative way to periodically check the status without getting trapped in the loop ?