Recherche avancée

Médias (1)

Mot : - Tags -/musée

Autres articles (35)

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

  • Encodage et transformation en formats lisibles sur Internet

    10 avril 2011

    MediaSPIP transforme et ré-encode les documents mis en ligne afin de les rendre lisibles sur Internet et automatiquement utilisables sans intervention du créateur de contenu.
    Les vidéos sont automatiquement encodées dans les formats supportés par HTML5 : MP4, Ogv et WebM. La version "MP4" est également utilisée pour le lecteur flash de secours nécessaire aux anciens navigateurs.
    Les documents audios sont également ré-encodés dans les deux formats utilisables par HTML5 :MP3 et Ogg. La version "MP3" (...)

  • Récupération d’informations sur le site maître à l’installation d’une instance

    26 novembre 2010, par

    Utilité
    Sur le site principal, une instance de mutualisation est définie par plusieurs choses : Les données dans la table spip_mutus ; Son logo ; Son auteur principal (id_admin dans la table spip_mutus correspondant à un id_auteur de la table spip_auteurs)qui sera le seul à pouvoir créer définitivement l’instance de mutualisation ;
    Il peut donc être tout à fait judicieux de vouloir récupérer certaines de ces informations afin de compléter l’installation d’une instance pour, par exemple : récupérer le (...)

Sur d’autres sites (5900)

  • Create one mpeg-dash segment

    19 février 2018, par Yuriy Pryyma

    I have video encoded in mpeg-dash(*.mpd, init segments, video segments)
    Task is to replace one of video segments with segment generated by me. And so video is still can be played.

    I read properties of one segment(combining init segment and video segment) using

    avformat_open_input
    avformat_find_stream_info

    1) I have tried to use dash muxer to generate new segment.

    avformat_alloc_output_context2(&avFormatContext, NULL, "dash", filename)

    But the problem is it creates mpd manifest, and other segments. So how to force it to create one segment ?

    2) When I parsed segment I noticed that it had format "QuickTime / MOV".

    avformat_alloc_output_context2(&avFormatContext, NULL, "mov", filename);

    So my another idea was to use "mov" encoder. And set properties same as in initial segment(start time, duration, resolution).
    But here the question is how to remove init header ? Because I already have init segment.

    Are there any other approaches to generate one mpeg-dash segment and how to solve my problems ?

  • Play HLS segments through Media source extensions

    11 février 2018, par ler

    I got a list of m4s and init.mp4 from this FFMPEG command

    ffmpeg -i bunny.mp4 -f hls -hls_segment_type fmp4 -c:v copy playlist.m3u8

    I send those chunks using Socketand try to play them through MSE.
    When i send them in this order :

    init.mp4 + playlist0.m4s + playlist1.m4s ...

    They play without any problem, But when i want to start from the chunk number 3 meaning init.mp4 + playlist3.m4s for example i get this error :

    video frame with PTS 0us has negative DTS -80000us after applying timestampOffset, handling any discontinuity, and filtering against append window.

    I want to be able to start from any chunk, currently the only way to play the video is to star by init.mp4 + playlist0.m4s meaning playlist0.m4s because init.mp4 contain just headers of the video, This is the client code i’m using :

    var socket = io();
    var video = document.querySelector('video');
    var mimeCodec = 'video/mp4; codecs="avc1.64000d,mp4a.40.2"'; // true
    if ('MediaSource' in window && MediaSource.isTypeSupported(mimeCodec))
    {
       var mediaSource = new MediaSource;
       video.src = URL.createObjectURL(mediaSource);
       mediaSource.addEventListener('sourceopen', function () {
               var mediaSource = this;
               var sourceBuffer = mediaSource.addSourceBuffer(mimeCodec);
              sourceBuffer.mode = 'segments';
               sourceBuffer.addEventListener('updateend', function (_) { video.play().then(function() { }).catch(function(error) { }); });
               socket.on('broadcast', function (chunk) {
                   downloadData(chunk.uri, function(arrayBuffer) {
                       sourceBuffer.appendBuffer(arrayBuffer);
                   });
               });
       });
    } else {
       console.error('Unsupported MIME type or codec: ', mimeCodec);
    }
    function downloadData(url, cb) {
       var xhr = new XMLHttpRequest;
       xhr.open('get', url);
       xhr.responseType = 'arraybuffer';
       xhr.onload = function () {
           cb(new Uint8Array(xhr.response));
       };
       xhr.send();
    }
  • Deinterlace video frames

    23 janvier 2018, par Gui

    I am using a Accord.net’s VideoFileReader to open an ’.mts’ (AVCHD File) file from a Sony HandyCam.

    var file = new VideoFileReader();
    file.Open(@"pathToFile");

    var frame = file.ReadVideoFrame();

    This appears to open without issue. The resolution properties of the VideFileReader instance are correct, however it identifies the frame rate as being double that of the actual file. Upon inspection it appears to be interlaced via some method.

    enter image description here

    I would like to traverse video files frame by frame for some simple analysis, where speed is relatively unimportant, however the time of each frame is critical. I am happy to deinterlace frames myself if I had a clear understanding of how I needed to manipulate the frame images.

    From my research on interlacing, I was expecting the resolution of each frame to be half that of the final output, where alternating frames need to be spliced -
    one containing even lines, and the other odd ; this appears not to be the case. All Frames are the full resolution of the video, even the very first frame seems to have two unique images present in it.

    How could I go about recovering a valid frame back from my video on a frame by frame basis (accessing adjacent frames if needed is fine) ? Is this something I have missed, not understood, or overlooked in the Documentation ?

    I’m not necessary looking for a code solution (although that would be great), an explanation of what is going on and what actions I could take will sufficiently address my needs.