Recherche avancée

Médias (1)

Mot : - Tags -/copyleft

Autres articles (111)

  • Les tâches Cron régulières de la ferme

    1er décembre 2010, par

    La gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
    Le super Cron (gestion_mutu_super_cron)
    Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

  • Script d’installation automatique de MediaSPIP

    25 avril 2011, par

    Afin de palier aux difficultés d’installation dues principalement aux dépendances logicielles coté serveur, un script d’installation "tout en un" en bash a été créé afin de faciliter cette étape sur un serveur doté d’une distribution Linux compatible.
    Vous devez bénéficier d’un accès SSH à votre serveur et d’un compte "root" afin de l’utiliser, ce qui permettra d’installer les dépendances. Contactez votre hébergeur si vous ne disposez pas de cela.
    La documentation de l’utilisation du script d’installation (...)

Sur d’autres sites (10673)

  • Using ffmpeg avcodec_decode_video2 got_picture_ptr returns 0

    3 septembre 2014, par kaiken

    I’m trying to playback the gopro live feed which consists of a series of very short .ts files encoded using H264. I tested it on videos with different containers (mkv,avi,mp4) and different codecs (MPEG4, H264, MSVIDEO1). However, the files from the gopro always returns got_picture_ptr as 0 from avcodec_decode_video2 while the function returns the packet’s size. If I use ffplay or vlc it play the file without problem. I’m not sure what I’m doing wrong. I’m not very experienced with ffmpeg or video in general.

    Here is my test code. I based it off of this tutorial which is out of date but I was able to update the depreciated functions.

    AVFormatContext *pFormatCtx = NULL;
    AVCodecContext *pCodecCtx;
    AVStream *pStream = NULL;
    int videoStream;
    AVCodec *pCodec;
    AVFrame *pFrame=NULL, *pFrameRGB=NULL;
    HBITMAP membmp;
    int widht,height;
    BYTE *membits;
    int frameFinished;
    AVPacket packet;
    img_convert_ctx = NULL;
    uint8_t *buffer;
    int numBytes;

    // Open video file
    if(avformat_open_input(&pFormatCtx,params->fname,NULL,NULL)!=0)
      return -1;
    // Retrieve stream information
    if(avformat_find_stream_info(pFormatCtx,NULL)<0)
      return -1;
    //av_dump_format(pFormatCtx, 0, path, 0);

    // Find the first video stream
    for(int i=0; inb_streams; i++)
      if(pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO)
      {
         pStream=pFormatCtx->streams[i];
         videoStream = i;
         break;
      }
    if(pStream==NULL)
      return -1; // Didn't find a video stream

    // Get a pointer to the codec context for the video stream
    pCodecCtx=pStream->codec;

    // Find the decoder for the video stream
    pCodec=avcodec_find_decoder(pCodecCtx->codec_id);
    if(pCodec==NULL) {
      fprintf(stderr, "Unsupported codec!\n");
      return -1; // Codec not found
    }

    // Open codec
    if(avcodec_open2(pCodecCtx, pCodec, NULL)<0)
      return -1;

    // Allocate an AVFrame structure
    pFrame=avcodec_alloc_frame();
    pFrameRGB=avcodec_alloc_frame();
    if(pFrameRGB==NULL)
      return -1;

    MakeBitmap(*params->memdc,membmp,(void**)&membits,pCodecCtx->width,pCodecCtx->height);
    // Assign appropriate parts of buffer to image planes in pFrameRGB
    // Note that pFrameRGB is an AVFrame, but AVFrame is a superset
    // of AVPicture
    avpicture_fill((AVPicture *)pFrameRGB, membits, PIX_FMT_RGB24,
                  pCodecCtx->width, pCodecCtx->height);

    while (av_read_frame(pFormatCtx, &packet) >= 0)
    {
       // Is this a packet from the video stream?
       if (packet.stream_index == videoStream)
       {
           // Decode video frame
           int bytesUsed = avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished, &packet);
           // Did we get a video frame?
           if(frameFinished)
           {
              //Do stuff with frame
           }
       }
       // Free the packet that was allocated by av_read_frame
       av_free_packet(&packet);
       //if(i++>500)
       //   break;
    }
    DeleteObject(membmp);


    // Free the frames
    av_free(pFrameRGB);
    av_free(pFrame);
    // Close the codec
    avcodec_close(pCodecCtx);
    // Close the video file
    avformat_close_input(&pFormatCtx);

    return  -1;

    For reference I’m doing this on Windows with the versions of the dlls :

    • avcodec-56.dll
    • avdevice-56.dll
    • avfilter-5.dll
    • avformat-56.dll
    • avutil-54.dll
    • postproc-53.dll
    • swresample-1.dll
    • swscale-3.dll

    and sample video file https://www.dropbox.com/s/htlinnv3qk5dfiu/amba_hls-2.ts?dl=0

  • lavd/v4l2 : do not fail when VIDIOC_ENUMSTD returns ENODATA

    18 août 2014, par Andre Wolokita
    lavd/v4l2 : do not fail when VIDIOC_ENUMSTD returns ENODATA
    

    As of September 14 2012, v4l_enumstd() will return ENODATA
    when a device’s std field is set to 0. That is, the device
    does not have a standard format. In order to properly
    handle this case, v4l2_set_parameters should catch the
    ENODATA code and break instead of failing.

    Below is the v4l2-core commit describing this change.

    >>commit a5338190efc7cfa8c99a6856342a77d21c9a05cf
    >>Author : Hans Verkuil <hans.verkuil@cisco.com>
    >>Date : Fri Sep 14 06:45:43 2012 -0300
    >>
    >> [media] v4l2-core : tvnorms may be 0 for a given input, handle that case
    >>
    >> Currently the core code looks at tvnorms to see whether ENUMSTD
    >> or G_PARM should be enabled. This is not a good check for drivers
    >> that support the STD API on one input and the DV Timings API on another.
    >> In that case tvnorms may be 0.
    >> Instead check whether s_std is present (for ENUMSTD) or whether g_std or
    >> current_norm is present for g_parm.
    >> Also, in the enumstd core function return ENODATA if tvnorms is 0,
    >> because in that case the current input does not support the STD API
    >> and ENUMSTD should return ENODATA for that.
    >>
    >> Signed-off-by : Hans Verkuil <hans.verkuil@cisco.com>
    >> Reviewed-by : Sakari Ailus <sakari.ailus@iki.fi>
    >> Signed-off-by : Mauro Carvalho Chehab <mchehab@redhat.com>

    • [DH] libavdevice/v4l2.c
  • avcodec_decode_video2 returns positive number when got_picture_ptr is 0

    22 août 2017, par dafnahaktana

    According to the documentation : here, avcodec_decode_video2 should return 0 if no frame could be decompressed. The got_picture_ptr should also be set to zero if no frame could be decompressed.

    I ran this function on a h264 video and I got positive return value while the got_picture_ptr was set to 0. Maybe that the documentation is not updated ?