Recherche avancée

Médias (91)

Autres articles (93)

  • Mise à disposition des fichiers

    14 avril 2011, par

    Par défaut, lors de son initialisation, MediaSPIP ne permet pas aux visiteurs de télécharger les fichiers qu’ils soient originaux ou le résultat de leur transformation ou encodage. Il permet uniquement de les visualiser.
    Cependant, il est possible et facile d’autoriser les visiteurs à avoir accès à ces documents et ce sous différentes formes.
    Tout cela se passe dans la page de configuration du squelette. Il vous faut aller dans l’espace d’administration du canal, et choisir dans la navigation (...)

  • Amélioration de la version de base

    13 septembre 2013

    Jolie sélection multiple
    Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
    Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...)

  • Formulaire personnalisable

    21 juin 2013, par

    Cette page présente les champs disponibles dans le formulaire de publication d’un média et il indique les différents champs qu’on peut ajouter. Formulaire de création d’un Media
    Dans le cas d’un document de type média, les champs proposés par défaut sont : Texte Activer/Désactiver le forum ( on peut désactiver l’invite au commentaire pour chaque article ) Licence Ajout/suppression d’auteurs Tags
    On peut modifier ce formulaire dans la partie :
    Administration > Configuration des masques de formulaire. (...)

Sur d’autres sites (4946)

  • avcodec library not extracting all the frames from a video

    22 novembre 2018, par Guru Govindan

    I have written a library that could be used with python to extract frames from a video in a buffer for some processing. I used the examples from the ffmpeg to build my library using libavcodec.
    This and seems to be working fine for most of the videos. But I see on some videos where my library does not extract all the frames (way less than the FPS).

    It seems like somehow the packets might be out of order and docoder is not able to handle it. I keep getting a lot of the following errors

    pid=100 pes_code=0x1e0

    nal_unit_type : 9, nal_ref_idc : 0

    nal_unit_type : 1, nal_ref_idc : 2

    deblocking_filter_idc 7 out of range

    decode_slice_header error

    no frame !

    I use the following steps to setup the decoder.

       //open input file, allocate context
    if ((ret = avformat_open_input(&format_ctx, in_filename, 0, 0)) < 0) {
       PyErr_SetString(ExtractorError, "Could not open input file!");
       goto end;
    }

    if ((ret = avformat_find_stream_info(format_ctx, 0)) < 0) {
       PyErr_SetString(ExtractorError, "Failed to retrieve input stream information!");
       goto end;
    }

    av_dump_format(format_ctx, 0, in_filename, 0);

    // Get the video index from the stream
    for(int i=0; inb_streams ;i++ )
    {
       if( format_ctx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO )
       {
           video_stream_index = i;
           break;
       }
    }

    /* if video stream not availabe */
    if((video_stream_index) == -1)
    {
       PyErr_SetString(ExtractorError, "video stream to retreive fps is not found!");
       return NULL;
    }

    long duration = format_ctx->duration + (format_ctx->duration <= INT64_MAX - 5000 ? 5000 : 0);

    float duration_in_secs = (float)duration / AV_TIME_BASE;

    stream_mapping_size = format_ctx->nb_streams;
    stream_mapping = av_mallocz_array(stream_mapping_size, sizeof(*stream_mapping));
    if (!stream_mapping) {
       ret = AVERROR(ENOMEM);
       goto end;
    }

    AVCodec *pCodec = NULL;
    AVCodecParameters *in_codecpar = NULL;
    for (i = 0; i < format_ctx->nb_streams; i++) {
       AVStream *in_stream = format_ctx->streams[i];
       in_codecpar = in_stream->codecpar;

       if (in_codecpar->codec_type != AVMEDIA_TYPE_AUDIO &&
           in_codecpar->codec_type != AVMEDIA_TYPE_VIDEO &&
           in_codecpar->codec_type != AVMEDIA_TYPE_SUBTITLE) {
           stream_mapping[i] = -1;
           continue;
       }

       if (in_codecpar->codec_type == AVMEDIA_TYPE_VIDEO){
           pCodec = avcodec_find_decoder(in_codecpar->codec_id);
           stream_mapping[i] = stream_index++;
           break;
       }
    }

    if(!pCodec){
       PyErr_SetString(ExtractorError, "error, no pCodec!");
       return NULL;
    }

    // convert CodecParam to CodecCtx
    AVCodecContext *pCodecCtx = avcodec_alloc_context3(pCodec);
    if (!pCodecCtx) {
       PyErr_SetString(ExtractorError, "Failed to convert codecParam to CodecCtx!");
       return NULL;
    }

    ret = avcodec_parameters_to_context(pCodecCtx, in_codecpar);
    if (ret < 0)
       goto end;

    //open video decoder
    if (avcodec_open2(pCodecCtx, pCodec, NULL) < 0)
    {
       logging("EXTRACTOR: failed to open codec through avcodec_open2\n");
       return NULL;
    }

    In order to test it I used the following command from ffmpeg to extract frames from the same video and it worked fine.

    ffmpeg -i /thuuz/extractor/03000.ts -f image2 -qscale:v 7 ffmpeg-detect—%03d.jpg -hide_banner -v quiet

    Am I not passing the right codec params ? Please let me know some inputs on how to debug this issue.
    Thanks a lot.

  • How to display live video stream from ffmpeg in C#/WPF ?

    9 avril 2019, par Kevin McDaniel

    I am trying to get an output from FFmpeg.exe to display live on my wpf media player. The inputs to FFmpeg are an IP camera and a video file (mp4).

    The WPF media player needs a URI as the input. So, I have tried hosting a Udp server for FFmpeg to post to (which I can log the data coming in on the console). Then I try to get the stream using the media player, but no success.

    My Udp listener :

    UdpClient _udpServer = new UdpClient(5000);
    UdpClient _udpClient = new UdpClient(5001);
    private void UdpListen() {
      while (true)
      {
         IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
         Byte[] receiveBytes = _udpServer.Receive(ref RemoteIpEndPoint);
         if (RemoteIpEndPoint.ToString() != "192.168.1.110:5001")
         {
            IPEndPoint ep = new IPEndPoint(IPAddress.Parse("192.168.1.110"), 5001);
            _udpClient.Send(receiveBytes, receiveBytes.Length, ep);
         }
         Console.WriteLine("receive data from " + RemoteIpEndPoint.ToString() + ": " + receiveBytes.Length);
      }
    }

    The ffmpeg output : ... -f mpegts udp ://192.168.1.110:5000

    I pass this into the media player : udp ://192.168.1.110:5001

    I am expecting to see the video file being displayed as ffmpeg is processing the output. But, I just see ffmpeg do its processing, and the Udp listener writing to the console.
    Let me know where I am going wrong, thanks in advance

  • Anomalie #4214 (Rejeté) : Notices sous easyphp et php 7.3 rc3

    2 novembre 2018, par Franck D

    Sous easyphp avec php 7.3rc3 avec un spip 24140 tout neuf, j’ai donc aussi le commit https://zone.spip.net/trac/spip-zone/changeset/112276/spip-zone (qui n’a sans doute rien avoir avec le problème)
    A savoir que pour les tests, je fais l’ajout d’un fichier mes_options contenant :

    1. <span class="CodeRay"><span class="inline-delimiter">&lt;?php</span>
    2. <span class="predefined">define</span>(<span class="string"><span class="delimiter">'</span><span class="content">_NO_CACHE</span><span class="delimiter">'</span></span>, -<span class="integer">1</span>);
    3. <span class="predefined">define</span>(<span class="string"><span class="delimiter">'</span><span class="content">_INTERDIRE_COMPACTE_HEAD_ECRIRE</span><span class="delimiter">'</span></span>, <span class="predefined-constant">true</span>);
    4. <span class="predefined">error_reporting</span>(<span class="exception">E_ALL</span>^<span class="exception">E_NOTICE</span>);
    5. ini_set (<span class="string"><span class="delimiter">"</span><span class="content">display_errors</span><span class="delimiter">"</span></span>, <span class="string"><span class="delimiter">"</span><span class="content">On</span><span class="delimiter">"</span></span>);
    6. <span class="predefined">define</span>(<span class="string"><span class="delimiter">'</span><span class="content">SPIP_ERREUR_REPORT</span><span class="delimiter">'</span></span>,<span class="exception">E_ALL</span>);
    7. <span class="predefined">$GLOBALS</span>[<span class="string"><span class="delimiter">'</span><span class="content">taille_des_logs</span><span class="delimiter">'</span></span>] = <span class="integer">500</span>;
    8. <span class="predefined">define</span>(<span class="string"><span class="delimiter">'</span><span class="content">_MAX_LOG</span><span class="delimiter">'</span></span>, <span class="integer">500000</span>);
    9. <span class="predefined">define</span>(<span class="string"><span class="delimiter">'</span><span class="content">_LOG_FILELINE</span><span class="delimiter">'</span></span>,<span class="predefined-constant">true</span>);
    10. <span class="predefined">define</span>(<span class="string"><span class="delimiter">'</span><span class="content">_LOG_FILTRE_GRAVITE</span><span class="delimiter">'</span></span>,<span class="integer">8</span>);
    11. <span class="predefined">define</span>(<span class="string"><span class="delimiter">'</span><span class="content">_DEBUG_SLOW_QUERIES</span><span class="delimiter">'</span></span>, <span class="predefined-constant">true</span>);
    12. <span class="predefined">define</span>(<span class="string"><span class="delimiter">'</span><span class="content">_BOUCLE_PROFILER</span><span class="delimiter">'</span></span>, <span class="integer">5000</span>);
    13. </span>

    Télécharger

    J’ai un warning qui s’affiche, mais pour le voir, j’ai installer manuellement le plugin https://plugins.spip.net/simplog.html dans le dossier "plugins"
    Puis après avoir fait l’ajout du dépôt de la zone, je vais à la page /ecrire/ ?exec=charger_plugin et je clique sur le bouton "Rechercher" de la boite "Rechercher et ajouter des plugins"

    Pour info, sinon, cela semble quand même fonctionner normalement :-)