Recherche avancée

Médias (91)

Autres articles (69)

  • Gestion générale des documents

    13 mai 2011, par

    MédiaSPIP ne modifie jamais le document original mis en ligne.
    Pour chaque document mis en ligne il effectue deux opérations successives : la création d’une version supplémentaire qui peut être facilement consultée en ligne tout en laissant l’original téléchargeable dans le cas où le document original ne peut être lu dans un navigateur Internet ; la récupération des métadonnées du document original pour illustrer textuellement le fichier ;
    Les tableaux ci-dessous expliquent ce que peut faire MédiaSPIP (...)

  • 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 (...)

  • 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 (...)

Sur d’autres sites (11117)

  • FFMPEG Recovery Reading From Remote File

    17 octobre 2020, par Devin Dixon

    I am currently using FFMPEG to stream video, and the source is a remote input file as such :

    


    ffmpeg -re -i https://somebucket.s3.com/file.mp4 -maxrate 2M -crf 24 -bufsize 6000k -c:v libx264 -preset superfast -tune zerolatency -strict -2 -c:a aac -ar 44100 -attempt_recovery 1 -max_recovery_attempts 5 -drop_pkts_on_overflow 1 -f flv http://live.example.com/stream/123443

    


    Sometimes there is an issue reading from the remote file and the stream abruptly stops. Is there a way where ffmpeg can automatically recover from connection issues reading from remote files ?

    


  • Is there any control property to fix video playback speed problem when using ffmpeg to decode in Qt platform ?

    16 février 2019, par SoloWang

    I want to play local video file in Qt platform using ffmpeg to decode.Everything is OK except that play speed is as twice as normal.
    The first thing I think about is that there must be a sampling frequency involved.But to be a new to ffmpeg,I don’t know how to fix this problem.
    Above is my code to read frame,is anyone can tell me what’s wrong with the code ?

    void VideoThread::run()
    {
       m_pInFmtCtx = avformat_alloc_context(); //ini struct
       char path[] = "d:/test.mp4";
       // open specific file
       if(avformat_open_input(&m_pInFmtCtx, *path, NULL, NULL)){
       {
           qDebug()<<"get rtsp failed";
           return;
       }
       else
       {
           qDebug()<<"get rtsp success";
       }


       if(avformat_find_stream_info(m_pInFmtCtx, NULL) < 0)
       {
           qDebug()<<"could not find stream information";
           return;
       }
       int nVideoIndex = -1;
       for(int i = 0; i < m_pInFmtCtx->nb_streams; i++)
       {
           if(m_pInFmtCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO)
           {
               nVideoIndex = i;
               break;
           }
       }
       if(nVideoIndex == -1)
       {
           qDebug()<<"could not find video stream";
           return;
       }

       qDebug("---------------- File Information ---------------");
       m_pCodecCtx = m_pInFmtCtx->streams[nVideoIndex]->codec;
       m_pCodec = avcodec_find_decoder(m_pCodecCtx->codec_id);
       if(!m_pCodec)
       {
           qDebug()<<"could not find codec";
           return;
       }
       //start Decoder
       if (avcodec_open2(m_pCodecCtx, m_pCodec, NULL) < 0) {
           qDebug("Could not open codec.\n");
           return;
       }


       //malloc space for stroring frame
       m_pFrame     = av_frame_alloc();
       m_pFrameRGB  = av_frame_alloc();
       m_pOutBuf = (uint8_t*)av_malloc(avpicture_get_size(AV_PIX_FMT_RGB32, m_pCodecCtx->width, m_pCodecCtx->height));
       avpicture_fill((AVPicture*)m_pFrameRGB, m_pOutBuf, AV_PIX_FMT_RGB32, m_pCodecCtx->width, m_pCodecCtx->height);

       //for color switch,from YUV to RGB
       struct SwsContext *pImgCtx = sws_getContext(m_pCodecCtx->width, m_pCodecCtx->height, m_pCodecCtx->pix_fmt,
                                                   m_pCodecCtx->width, m_pCodecCtx->height, AV_PIX_FMT_RGB32, SWS_BICUBIC, NULL, NULL, NULL);


       int nSize = m_pCodecCtx->width * m_pCodecCtx->height;
       m_pPacket = (AVPacket *)av_malloc(sizeof(AVPacket));
       if(av_new_packet(m_pPacket, nSize) != 0)
       {
           qDebug()<<"new packet failed";
       }

       //isInterruptionRequested is a flag,determine whether the thread is over
       // read each frame from specific video file
       while (!isInterruptionRequested())
       {
           int nGotPic = 0;
           if(av_read_frame(m_pInFmtCtx, m_pPacket) >= 0)
           {
               if(m_pPacket->stream_index == nVideoIndex)
               {
                   //avcodec_decode_video2()transform from packet to frame
                   if(avcodec_decode_video2(m_pCodecCtx, m_pFrame, &nGotPic, m_pPacket) < 0)
                   {
                       qDebug()<<"decode failed";
                       return;
                   }
                   if(nGotPic)
                   {   // transform to RGB color
                       sws_scale(pImgCtx, (const uint8_t* const*)m_pFrame->data,
                                 m_pFrame->linesize, 0, m_pCodecCtx->height, m_pFrameRGB->data,
                                 m_pFrameRGB->linesize);
                       // save to QImage,for later use
                       QImage *pImage = new QImage((uchar*)m_pOutBuf, m_pCodecCtx->width, m_pCodecCtx->height, QImage::Format_RGB32);
                   }

               }
           }

           av_free_packet(m_pPacket);
           msleep(5);
       }
       exec();
    }
  • pngdec : set correct range

    7 mai 2015, par wm4
    pngdec : set correct range
    

    AV_PIX_FMT_GRAY8/16 are considered YUV formats, and the color_range is
    not set - so the API user will have to assume limitted range. (Unless
    the API user adds a special-case for the PNG decoder.)

    Just export the correct range - full range.

    Signed-off-by : Michael Niedermayer <michaelni@gmx.at>

    • [DH] libavcodec/pngdec.c
    • [DH] tests/ref/fate/png-ya16
    • [DH] tests/ref/fate/png-ya8