Recherche avancée

Médias (1)

Mot : - Tags -/bug

Autres articles (53)

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

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
    Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

Sur d’autres sites (9371)

  • What's the reason of failed to read from input stream while playing in ffmpeg

    5 février 2016, par Long Bai

    I’m using ffmpeg library in qt compiled with mingw.
    I’m going to read from rtmp stream, process video frame and write to another rtmp stream.
    I refered ffmpeg examples and developed it.
    It works well with local video stream.
    But on the internet stream, it is failed to read from input stream after a few seconds playing.
    What’s the reason of this problem ?
    Thanks for your answer.

    Here is my code.
    as you can see the following, on the line "ret=av_read_frame(m_pInContext,&inPacket)" return negative value.

    while (!m_bAborted)

    // read stream.
    int64_t tstart = av_gettime_relative() ;
    ret = av_read_frame(m_pInContext, &inPacket) ;
    if (ret < 0)
    SetError("Failed to read input stream.") ;
    break ;
    //continue ;

       if (inPacket.stream_index == m_nVideoStreamIdx)
       {
           do
           {
               // decode frame.
               int decodedLen = DecodePacket(m_pInFrame, &amp;inPacket, &amp;got_frame, 1);
               if (decodedLen &lt; 0)
                   break;

               if (got_frame)
               {
                   // convert frame from yuv420 to rgb24.
                   if (sws_ctx1)
                   {
                       sws_scale(sws_ctx1, m_pInFrame->data, m_pInFrame->linesize, 0, m_nHeight, pRawData, arrRawDataLineSize);
                   }

                   // image processing to remove the code and ads on video.
                   if (m_pListener)
                       m_pListener->OnFrame(pRawData[0], m_nWidth, m_nHeight, arrRawDataLineSize[0], AV_PIX_FMT_RGB24, 24);

                   // convert from rgb24 to yuv420 to write to the output stream.
                   if (sws_ctx2)
                   {
                       sws_scale(sws_ctx2, pRawData, arrRawDataLineSize, 0, m_nHeight, m_dst_picture.data, m_dst_picture.linesize);
                   }

                   // increase frame number.
                   frameCount ++;

                   // write to the output stream.
                   ret = WriteVideoFrame(m_pOutContext, m_pOutVideoStream, &amp;frameCount);
                   if (ret &lt; 0) {
                       if (sws_ctx2)
                           sws_freeContext(sws_ctx2);
                       sws_ctx2 = NULL;
                       CloseOutputStream();

                       SetError("Failed to write video stream.");
                   }

                   // estimate frame time and sleep.
                   //clock_t tend = clock();
                   int64_t tend = av_gettime_relative();
                   frameDuration = tend-tstart;//(long)(1000 * (tend - tstart) / CLOCKS_PER_SEC);
                   if (1000*frameTime - frameDuration > 0)
                       av_usleep(1000*frameTime - frameDuration);
                       //QThread::msleep(frameTime - frameDuration);
                   tstart = tend;
               }

               // if there is another frame in the packet, then loop.
               inPacket.size -= decodedLen;
               inPacket.data += decodedLen;
           }while(inPacket.size > 0);
       }

       else if (m_pOutContext)
       {

       }

       av_packet_unref(&amp;inPacket);
    }
  • lavf/segment : add new option segment_clocktime_wrap_duration

    18 janvier 2016, par Marton Balint
    lavf/segment : add new option segment_clocktime_wrap_duration
    

    This option can force the segmenter to only start a new segment if a packet
    reaches the muxer within the specified duration after the segmenting clock
    time, which makes it more resilient to backward local time jumps, such as leap
    seconds or transition to standard time from daylight savings time.

    Reviewed-by : Stefano Sabatini <stefasab@gmail.com>
    Signed-off-by : Marton Balint <cus@passwd.hu>

    • [DH] doc/muxers.texi
    • [DH] libavformat/segment.c
  • x86 : Avoid some bypass delays and false dependencies

    11 octobre 2015, par Henrik Gramner
    x86 : Avoid some bypass delays and false dependencies
    

    A bypass delay of 1-3 clock cycles may occur on some CPUs when transitioning
    between int and float domains, so try to avoid that if possible.

    • [DH] common/x86/deblock-a.asm
    • [DH] common/x86/mc-a.asm
    • [DH] common/x86/pixel-a.asm
    • [DH] common/x86/predict-a.asm
    • [DH] common/x86/sad-a.asm
    • [DH] common/x86/x86util.asm