Recherche avancée

Médias (0)

Mot : - Tags -/auteurs

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (53)

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

  • Use, discuss, criticize

    13 avril 2011, par

    Talk to people directly involved in MediaSPIP’s development, or to people around you who could use MediaSPIP to share, enhance or develop their creative projects.
    The bigger the community, the more MediaSPIP’s potential will be explored and the faster the software will evolve.
    A discussion list is available for all exchanges between users.

  • Creating farms of unique websites

    13 avril 2011, par

    MediaSPIP platforms can be installed as a farm, with a single "core" hosted on a dedicated server and used by multiple websites.
    This allows (among other things) : implementation costs to be shared between several different projects / individuals rapid deployment of multiple unique sites creation of groups of like-minded sites, making it possible to browse media in a more controlled and selective environment than the major "open" (...)

Sur d’autres sites (7460)

  • 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;    <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;

  • avcodec : add TrueMotion 2.0 Real Time decoder

    6 avril 2016, par Paul B Mahol
    avcodec : add TrueMotion 2.0 Real Time decoder
    

    Signed-off-by : Paul B Mahol <onemda@gmail.com>

    • [DH] Changelog
    • [DH] libavcodec/Makefile
    • [DH] libavcodec/allcodecs.c
    • [DH] libavcodec/avcodec.h
    • [DH] libavcodec/codec_desc.c
    • [DH] libavcodec/truemotion2rt.c
    • [DH] libavcodec/version.h
    • [DH] libavformat/riff.c
  • 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 :

    &lt;?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>