Recherche avancée

Médias (2)

Mot : - Tags -/media

Autres articles (106)

  • Gestion des droits de création et d’édition des objets

    8 février 2011, par

    Par défaut, beaucoup de fonctionnalités sont limitées aux administrateurs mais restent configurables indépendamment pour modifier leur statut minimal d’utilisation notamment : la rédaction de contenus sur le site modifiables dans la gestion des templates de formulaires ; l’ajout de notes aux articles ; l’ajout de légendes et d’annotations sur les images ;

  • Dépôt de média et thèmes par FTP

    31 mai 2013, par

    L’outil MédiaSPIP traite aussi les média transférés par la voie FTP. Si vous préférez déposer par cette voie, récupérez les identifiants d’accès vers votre site MédiaSPIP et utilisez votre client FTP favori.
    Vous trouverez dès le départ les dossiers suivants dans votre espace FTP : config/ : dossier de configuration du site IMG/ : dossier des média déjà traités et en ligne sur le site local/ : répertoire cache du site web themes/ : les thèmes ou les feuilles de style personnalisées tmp/ : dossier de travail (...)

  • Qualité du média après traitement

    21 juin 2013, par

    Le bon réglage du logiciel qui traite les média est important pour un équilibre entre les partis ( bande passante de l’hébergeur, qualité du média pour le rédacteur et le visiteur, accessibilité pour le visiteur ). Comment régler la qualité de son média ?
    Plus la qualité du média est importante, plus la bande passante sera utilisée. Le visiteur avec une connexion internet à petit débit devra attendre plus longtemps. Inversement plus, la qualité du média est pauvre et donc le média devient dégradé voire (...)

Sur d’autres sites (11670)

  • How do I set the framerate/FPS in an FFmpeg code (C) ?

    2 juin 2020, par Tobias v. Brevern

    I try to encode single pictures to a .avi video. The goal is to have every picture displayed for a set amount of seconds to create a slide show. I tried my script with 10 pictures and a delay of 1/5 of a second but the output file was not even half a second long (but displayed every picture). For setting the framerate I use the time_base option of the AVCodeContext :

    



    ctx->time_base = (AVRational) {1, 5};

    



    When I use the command ffmpeg -framerate 1/3 -i img%03d.png -codec png output.avi everything works fine and I get the file I want. I use the png codec because it was the only one i tried that is playable with Windows Media Player.

    



    Am I missing anything here ? Is there another option that has impact on the framerate ?

    



    This is my code so far :

    



    Note : I use a couple of self made data structures and methodes from other classes. They are the ones written in Caps Lock. They basicly do what the name suggests but are necessary for my project. The Input Array contains the pictures that i want to encode.

    



    include <libavutil></libavutil>opt.h>&#xA;include <libavutil></libavutil>imgutils.h>&#xA;include <libavutil></libavutil>error.h>&#xA;&#xA;void PixmapsToAVI (ARRAY* arr, String outfile, double secs)&#xA;{&#xA;     if (arr!=nil &amp;&amp; outfile!="" &amp;&amp; secs!=0) {&#xA;         AVCodec* codec = avcodec_find_encoder(AV_CODEC_ID_PNG);&#xA;         if (codec) {&#xA;             int width  = -1;&#xA;             int height = -1;&#xA;             int ret = 0;&#xA;&#xA;             AVCodecContext* ctx = NULL;&#xA;             ctx = avcodec_alloc_context3(codec);&#xA;             AVFrame* frame = av_frame_alloc();&#xA;             AVPacket* pkt  = av_packet_alloc();&#xA;&#xA;             FILE* file = fopen(outfile, "wb");&#xA;&#xA;             ARRAYELEMENT* e;&#xA;             int count = 0;&#xA;             forall (e, *arr) {&#xA;                 BITMAP bitmap (e->value, false);&#xA;                 if (width &lt; 0) {&#xA;                     width  = bitmap.Width();&#xA;                     height = bitmap.Height();&#xA;&#xA;                     ctx->width = width;&#xA;                     ctx->height = height;&#xA;                     ctx->time_base = (AVRational){1, 5};&#xA;                     ctx->framerate = (AVRational){5, 1};&#xA;                     ctx->pix_fmt = AV_PIX_FMT_RGB24;&#xA;                     ret = avcodec_open2(ctx, codec, NULL);&#xA;&#xA;                     frame->width  = width;&#xA;                     frame->height = height;&#xA;                     frame->format = ctx->pix_fmt;&#xA;                     av_opt_set(ctx->priv_data, "preset", "slow", 1);&#xA;&#xA;                 }&#xA;                 ret  = av_frame_get_buffer(frame, 1);&#xA;                 frame->linesize[0] = width*3;&#xA;&#xA;                 bitmap.Convert32();&#xA;                 byte* pixels = bitmap.PixelsRGB();      &#xA;&#xA;//The two methodes above convert the Pixmap into the RGB structure we need&#xA;//They are not needed to get an output file but are needed to get one that makes sense&#xA;&#xA;                     fflush(stdout);&#xA;                     int writeable = av_frame_make_writable(frame);&#xA;                     if (writeable>=0) {&#xA;                         for(int i=0; i&lt;(height*width*3); i&#x2B;&#x2B;){&#xA;                             frame->data[0][i] = pixels[i];&#xA;                         }&#xA;                     }&#xA;                     ret = avcodec_send_frame(ctx, frame);&#xA;                     for(int i=0; i= 0) {&#xA;                       ret = avcodec_receive_packet(ctx, pkt);&#xA;                     }&#xA;                     count&#x2B;&#x2B;;&#xA;                 avcodec_receive_packet(ctx, pkt);&#xA;                 fwrite(pkt->data, 1, pkt->size, file);&#xA;                 fflush(stdout);&#xA;                 av_packet_unref(pkt);&#xA;             }&#xA;             fclose(file);&#xA;             avcodec_free_context(&amp;ctx);&#xA;             av_frame_free(&amp;frame);&#xA;             av_packet_free(&amp;pkt);&#xA;&#xA;         }&#xA;     }&#xA;} &#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;

    &#xA;

  • How to explain the given ffplay C code snippet ?

    20 juillet 2015, par Jerikc XIONG

    The following code snippet is from ffplay :

    static int decoder_decode_frame(Decoder *d, AVFrame *frame, AVSubtitle *sub) {
       int got_frame = 0;

       do {
           int ret = -1;

           if (d->queue->abort_request)
               return -1;

           if (!d->packet_pending || d->queue->serial != d->pkt_serial) {
               AVPacket pkt;
               do {
                   if (d->queue->nb_packets == 0)
                       SDL_CondSignal(d->empty_queue_cond);
                   if (packet_queue_get(d->queue, &amp;pkt, 1, &amp;d->pkt_serial) &lt; 0)
                       return -1;
                   if (pkt.data == flush_pkt.data) {
                       avcodec_flush_buffers(d->avctx);
                       d->finished = 0;
                       d->next_pts = d->start_pts;
                       d->next_pts_tb = d->start_pts_tb;
                   }
               } while (pkt.data == flush_pkt.data || d->queue->serial != d->pkt_serial);
               av_free_packet(&amp;d->pkt);
               d->pkt_temp = d->pkt = pkt;
               d->packet_pending = 1;
           }

           switch (d->avctx->codec_type) {
               case AVMEDIA_TYPE_VIDEO:
                   ret = avcodec_decode_video2(d->avctx, frame, &amp;got_frame, &amp;d->pkt_temp);
                   if (got_frame) {
                       if (decoder_reorder_pts == -1) {
                           frame->pts = av_frame_get_best_effort_timestamp(frame);
                       } else if (decoder_reorder_pts) {
                           frame->pts = frame->pkt_pts;
                       } else {
                           frame->pts = frame->pkt_dts;
                       }
                   }
                   break;
               case AVMEDIA_TYPE_AUDIO:
                   ret = avcodec_decode_audio4(d->avctx, frame, &amp;got_frame, &amp;d->pkt_temp);
                   if (got_frame) {
                       AVRational tb = (AVRational){1, frame->sample_rate};
                       if (frame->pts != AV_NOPTS_VALUE)
                           frame->pts = av_rescale_q(frame->pts, d->avctx->time_base, tb);
                       else if (frame->pkt_pts != AV_NOPTS_VALUE)
                           frame->pts = av_rescale_q(frame->pkt_pts, av_codec_get_pkt_timebase(d->avctx), tb);
                       else if (d->next_pts != AV_NOPTS_VALUE)
                           frame->pts = av_rescale_q(d->next_pts, d->next_pts_tb, tb);
                       if (frame->pts != AV_NOPTS_VALUE) {
                           d->next_pts = frame->pts + frame->nb_samples;
                           d->next_pts_tb = tb;
                       }
                   }
                   break;
               case AVMEDIA_TYPE_SUBTITLE:
                   ret = avcodec_decode_subtitle2(d->avctx, sub, &amp;got_frame, &amp;d->pkt_temp);
                   break;
           }

           if (ret &lt; 0) {
               d->packet_pending = 0;
           } else {
               d->pkt_temp.dts =
               d->pkt_temp.pts = AV_NOPTS_VALUE;
               if (d->pkt_temp.data) {
                   if (d->avctx->codec_type != AVMEDIA_TYPE_AUDIO)
                       ret = d->pkt_temp.size;
                   d->pkt_temp.data += ret;
                   d->pkt_temp.size -= ret;
                   if (d->pkt_temp.size &lt;= 0)
                       d->packet_pending = 0;
               } else {
                   if (!got_frame) {
                       d->packet_pending = 0;
                       d->finished = d->pkt_serial; // FLAG
                   }
               }
           }
       } while (!got_frame &amp;&amp; !d->finished);

       return got_frame;
    }

    It’s difficult for me to understand the following code :

    d->finished = d->pkt_serial; // FLAG

    Can anyone help me ?

    Thanks.

  • avformat/udp : redesign threaded udp tx code

    25 mai 2016, par Michael Niedermayer
    avformat/udp : redesign threaded udp tx code
    

    This fixes partially completed send()
    Avoids holding the mutex during send()
    fixes race conditions in error handling
    removes copied non thread specific blocking code
    Fixes deadlocks on closure
    Fixes data loss on closure

    Signed-off-by : Michael Niedermayer <michael@niedermayer.cc>

    • [DH] libavformat/udp.c