Recherche avancée

Médias (2)

Mot : - Tags -/kml

Autres articles (70)

  • MediaSPIP v0.2

    21 juin 2013, par

    MediaSPIP 0.2 est la première version de MediaSPIP stable.
    Sa date de sortie officielle est le 21 juin 2013 et est annoncée ici.
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Comme pour la version précédente, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

  • Diogene : création de masques spécifiques de formulaires d’édition de contenus

    26 octobre 2010, par

    Diogene est un des plugins ? SPIP activé par défaut (extension) lors de l’initialisation de MediaSPIP.
    A quoi sert ce plugin
    Création de masques de formulaires
    Le plugin Diogène permet de créer des masques de formulaires spécifiques par secteur sur les trois objets spécifiques SPIP que sont : les articles ; les rubriques ; les sites
    Il permet ainsi de définir en fonction d’un secteur particulier, un masque de formulaire par objet, ajoutant ou enlevant ainsi des champs afin de rendre le formulaire (...)

  • MediaSPIP version 0.1 Beta

    16 avril 2011, par

    MediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Pour avoir une installation fonctionnelle, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

Sur d’autres sites (6858)

  • ffmpeg removes ID3 header when read from mpegts

    20 octobre 2020, par igal k

    I'm trying to understand why ID3's header is missing whenever i try to read(av_read_frame) ID3 packets from mpegts.

    


    AVPacket's contents :

    


    {...}
[0]: 0 '\000'
[1]: 0 '\000'
[2]: 0 '\000'
[3]: 0 '\000'
[4]: 56 '8'
[5]: 84 'T'
[6]: 88 'X'
[7]: 88 'X'
[8]: 88 'X'
[9]: 0 '\000'
[10]: 0 '\000'
[11]: 0 '\000'
[12]: 46 '.'
[13]: 0 '\000'
[14]: 0 '\000'
[15]: 3 '\003'
[16]: 0 '\000'
[17]: 52 '4'
[18]: 57 '9'
[19]: 48 '0'
[20]: 97 'a'
[21]: 51 '3'
[22]: 57 '9'
[23]: 55 '7'


    


    DVBInspector analysis :

    


    enter image description here

    


  • Decode frame produced by ffmpeg lib using webcodecs

    24 mars 2023, par mccat

    server side extracting frame from video using ffmpeg library. Here is code :

    


        AVFormatContext *pFormatContext = avformat_alloc_context();&#xA;    avformat_open_input(&amp;pFormatContext, "VID_20230219_171331_300.mp4.mov", NULL, NULL);&#xA;    avformat_find_stream_info(pFormatContext,  NULL);&#xA;&#xA;    const AVCodec *pCodec = NULL;&#xA;    AVCodecParameters *pCodecParameters =  NULL;&#xA;    int video_stream_index = -1;&#xA;&#xA;    // loop though all the streams and print its main information&#xA;    for (int i = 0; i &lt; pFormatContext->nb_streams; i&#x2B;&#x2B;)&#xA;    {&#xA;        AVCodecParameters *pLocalCodecParameters =  NULL;&#xA;        pLocalCodecParameters = pFormatContext->streams[i]->codecpar;&#xA;        const AVCodec *pLocalCodec = NULL;&#xA;        pLocalCodec = avcodec_find_decoder(pLocalCodecParameters->codec_id);&#xA;&#xA;        if(pLocalCodec==NULL)&#xA;            continue;&#xA;&#xA;        // when the stream is a video we store its index, codec parameters and codec&#xA;        if(pLocalCodecParameters->codec_type == AVMEDIA_TYPE_VIDEO)&#xA;        {&#xA;            if(video_stream_index == -1)&#xA;            {&#xA;                video_stream_index = i;&#xA;                pCodec = pLocalCodec;&#xA;                pCodecParameters = pLocalCodecParameters;&#xA;&#xA;                const char *buffer = reinterpret_cast <const> (pFormatContext->streams[i]->codecpar->extradata);&#xA;                QFile file("extradata.txt"); //!!!!!!!!!!!!!!!! storing extradata for browser visualization&#xA;                file.open(QIODevice::WriteOnly);&#xA;                QDataStream out(&amp;file);&#xA;                out.writeRawData(buffer, pFormatContext->streams[i]->codecpar->extradata_size);&#xA;                file.flush();&#xA;                file.close();&#xA;            }&#xA;        }&#xA;    }&#xA;&#xA;    AVCodecContext *pCodecContext = avcodec_alloc_context3(pCodec);&#xA;    avcodec_parameters_to_context(pCodecContext, pCodecParameters);&#xA;    avcodec_open2(pCodecContext, pCodec, NULL);&#xA;&#xA;    AVFrame *pFrame = av_frame_alloc();&#xA;    AVPacket *pPacket = av_packet_alloc();&#xA;&#xA;    int response = 0;&#xA;    int how_many_packets_to_process = 800;&#xA;&#xA;    int frame_c = 0, counter = 0;&#xA;    while(true)&#xA;    {&#xA;        frame_c = av_read_frame(pFormatContext, pPacket);&#xA;&#xA;        if(frame_c &lt; 0)&#xA;            break;&#xA;&#xA;        if(pPacket->stream_index == video_stream_index)&#xA;        {&#xA;            const char *buffer = reinterpret_cast <const> (pPacket->data);&#xA;            response = decode_packet(pPacket, pCodecContext, pFrame);&#xA;&#xA;            if(response &lt; 0)&#xA;                break;&#xA;&#xA;            counter&#x2B;&#x2B;;&#xA;            if(--how_many_packets_to_process &lt;= 0) break;&#xA;&#xA;            if(counter > 1)&#xA;            {&#xA;                QFile file("frame.txt"); // !!!!!!!!!!!!!!!! storing single frame for browser visualization&#xA;                file.open(QIODevice::WriteOnly);&#xA;                QDataStream out(&amp;file);&#xA;                out.writeRawData(buffer, arr.size());&#xA;                file.flush();&#xA;                file.close();&#xA;                break;&#xA;            }&#xA;        }&#xA;&#xA;        av_packet_unref(pPacket);&#xA;    }&#xA;</const></const>

    &#xA;

    As the result i stored 2 txt files : 1 with extradata of codec and 2 with frame pixel data.&#xA;The next step is to decode this data in browser and display picture.&#xA;Here is how i try to do it :

    &#xA;

    <input type="file" />&#xA;<h3>Contents of the file:</h3>&#xA;<pre></pre>&#xA;&#xA;<input type="file" />&#xA;<h3>Contents of the file:</h3>&#xA;<pre></pre>&#xA;&#xA;<canvas width="720" height="1280">&#xA;Your browser does not support the HTML5 canvas tag.&#xA;</canvas>&#xA;&#xA;<code class="echappe-js">&lt;script&gt;&amp;#xA;&amp;#xA;let pendingFrames = [];&amp;#xA;let extraData = new Uint8Array;&amp;#xA;&amp;#xA;const init = {&amp;#xA;  output: handleFrame,&amp;#xA;  error: (e) =&gt; {&amp;#xA;  console.log(e.message);&amp;#xA;  },&amp;#xA;};&amp;#xA;&amp;#xA;const config = {&amp;#xA;  codec: &quot;avc1.64001E&quot;,&amp;#xA;  codedWidth:  720,&amp;#xA;  codedHeight: 1280,&amp;#xA;  description: extraData.buffer,&amp;#xA;};&amp;#xA;&amp;#xA;function handleFrame(frame) {&amp;#xA;  const canvas = document.getElementById(&quot;myCanvas&quot;);&amp;#xA;  const ctx = canvas.getContext(&quot;2d&quot;);&amp;#xA;  ctx.drawImage(frame, 0, 0);&amp;#xA;  frame.close();&amp;#xA;}&amp;#xA;&amp;#xA;function readSingleFile(e) {&amp;#xA;  var file = e.target.files[0];&amp;#xA;  if (!file) {&amp;#xA;    return;&amp;#xA;  }&amp;#xA;  var reader = new FileReader();&amp;#xA;  reader.onload = function(e) {&amp;#xA;    var contents = e.target.result;&amp;#xA;    displayContents(contents);&amp;#xA;  };&amp;#xA;  reader.readAsText(file);&amp;#xA;} //end&amp;#xA;&amp;#xA;function displayContents(contents) {&amp;#xA;  var element = document.getElementById(&amp;#x27;file-content&amp;#x27;);&amp;#xA;  element.textContent = contents;&amp;#xA;} // end&amp;#xA;&amp;#xA;const readFile = e =&gt; {&amp;#xA;  var file = e.target.files[0];&amp;#xA;  if (!file) {&amp;#xA;    return;&amp;#xA;  }&amp;#xA;&amp;#xA;  let reader = new FileReader();&amp;#xA;&amp;#xA;  reader.onload = function(e) {&amp;#xA;      let arrayBuffer = new Uint8Array(reader.result);&amp;#xA;      console.log(arrayBuffer);&amp;#xA;&amp;#xA;        const decoder = new VideoDecoder(init);&amp;#xA;        decoder.configure(config);&amp;#xA;        &amp;#xA;        const chunk = new EncodedVideoChunk({&amp;#xA;          timestamp: 20,&amp;#xA;          type: &quot;key&quot;,&amp;#xA;          data: arrayBuffer,&amp;#xA;        });&amp;#xA;&amp;#xA;        decoder.decode(chunk);&amp;#xA;  }&amp;#xA;&amp;#xA;  reader.readAsArrayBuffer(file);&amp;#xA;} //end&amp;#xA;&amp;#xA;const readFile2 = e =&gt; {&amp;#xA;  var file = e.target.files[0];&amp;#xA;  if (!file) {&amp;#xA;    return;&amp;#xA;  }&amp;#xA;&amp;#xA;  let reader = new FileReader();&amp;#xA;&amp;#xA;  reader.onload = function(e) {&amp;#xA;      extraData = new Uint8Array(reader.result);&amp;#xA;      console.log(extraData);&amp;#xA;  }&amp;#xA;&amp;#xA;  reader.readAsArrayBuffer(file);&amp;#xA;} //end&amp;#xA;&amp;#xA;document.getElementById(&amp;#x27;file-input&amp;#x27;)&amp;#xA;  .addEventListener(&amp;#x27;change&amp;#x27;, readFile, false);&amp;#xA;&amp;#xA;document.getElementById(&amp;#x27;file-input2&amp;#x27;)&amp;#xA;  .addEventListener(&amp;#x27;change&amp;#x27;, readFile2, false);&amp;#xA;&amp;#xA;&lt;/script&gt;&#xA;

    &#xA;

    file-input2 - is for extradata and file-input - for frame data.

    &#xA;

    After i run this code in browser i got following error message :&#xA;---> Failed to execute 'configure' on 'VideoDecoder' : description is detached.&#xA;Also i had another type of error messages such as something wrong with codec config (codec description)

    &#xA;

    Please help to find what im doing wrong =)&#xA;Thanks in advance.

    &#xA;

  • ffmpeg, download video stream from url

    5 juillet 2021, par samiullah

    I am developing application to save any online webinar(video or audio) given the url using ffmpeg library. Url usually contain other contents like text, images as well. So i have problem, how to separately get video stream from url using ffmpeg(or some other better free library). Url may be for any site, not only for youtube, but as an example, link may be like

    &#xA;

    http://www.youtube.com/watch?v=wnrJJYm7qIw

    &#xA;