Recherche avancée

Médias (2)

Mot : - Tags -/documentation

Autres articles (70)

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

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

  • Creating farms of unique websites

    13 avril 2011, par

    MediaSPIP platforms can be installed as a farm, with a single "core" hosted on a dedicated server and used by multiple websites.
    This allows (among other things) : implementation costs to be shared between several different projects / individuals rapid deployment of multiple unique sites creation of groups of like-minded sites, making it possible to browse media in a more controlled and selective environment than the major "open" (...)

Sur d’autres sites (12583)

  • Colors are not correct for FFMPEG videos

    23 août 2016, par Mohammad Abu Musa

    I am writing a screen recorder, I managed to record the videos and export them as webm but I have a color and timing issue(which I am working on).

    For coloring the video frames I get are formatted with FORMAT_I420 which I transfer them to YUV sources and encode them as the following code

    void EncoderInstance::OnGetFrame(int32_t result, pp::VideoFrame frame) {
       if (result != PP_OK)
           return;

       //const uint8_t* data = static_cast<const>(frame.GetDataBuffer());
       unsigned char* data = static_cast<unsigned>(frame.GetDataBuffer());
       pp::Size size;
       frame.GetSize(&amp;size);
       uint32_t buffersize = frame.GetDataBufferSize();
       //frame.GetFormat() == PP_VIDEOFRAME_FORMAT_BGRA);
       //Logger::Log("Format is :%d", frame.GetFormat());
       //PP_VIDEOFRAME_FORMAT_I420



       Logger::Log("stream received is: %02X", data);

       if (is_recording_) {
           vpx_codec_iter_t iter = NULL;
           const vpx_codec_cx_pkt_t *pkt;


           int iSizeY = out_width * out_height;
           int iSizeUV = (out_width * out_height)/4;
           unsigned char* pY = data;
           unsigned char* pU = data + iSizeY; // there are width * height Y components
           unsigned char* pV = data + iSizeUV;    // skip the U components

           Logger::Log("pY: %02X", pY);
           Logger::Log("pU: %02X", pU);
           Logger::Log("pV: %02X", pV);


           // copy the pixels into our "raw input" container.
           int bytes_filled = avpicture_fill(&amp;pic_raw, NULL, AV_PIX_FMT_YUV420P, out_width, out_height);
           pic_raw.data[0] = pY;
           pic_raw.data[1] = pU;
           pic_raw.data[2] = pU;

           Logger::Log("bytes filled: %d", bytes_filled);

           if(!bytes_filled) {
               Logger::Log("Cannot fill the raw input buffer");
               return;
           }

           // convert to i420 for vp8
           int h = sws_scale(sws, pic_raw.data, pic_raw.linesize, 0, out_height, raw.planes, raw.stride);

           if(h != out_height) {
               Logger::Log("scale failed: %d", h);
               return;
           }



           Logger::Log("Picture Raw data is: %d", pic_raw.data);

           if(vpx_codec_encode(&amp;codec, &amp;raw, frame_cnt, 1, flags, VPX_DL_REALTIME))
                 die_codec(&amp;codec, "Failed to encode frame");

           while( (pkt = vpx_codec_get_cx_data(&amp;codec, &amp;iter)) ) {
               switch(pkt->kind) {
                   case VPX_CODEC_CX_FRAME_PKT:
                       Logger::Log("Compressed buffer is %02X:",pkt->data.frame.buf);
                       Logger::Log("Compressed buffer size %02X:",pkt->data.frame.sz);

                       glb_app_thread.message_loop().PostWork(callback_factory_.NewCallback(&amp;EncoderInstance::write_ivf_frame_header, pkt));
                       glb_app_thread.message_loop().PostWork(callback_factory_.NewCallback(&amp;EncoderInstance::WriteFile, pkt));
                       break;
                   default:break;
               }
           }

           frame_cnt++;
       }

       video_track_.RecycleFrame(frame);
       if (need_config_) {
           ConfigureTrack();
           need_config_ = false;
       } else {
           video_track_.GetFrame(
                   callback_factory_.NewCallbackWithOutput(
                           &amp;EncoderInstance::OnGetFrame));
       }
    }
    </unsigned></const>

    Here is a screenshot of an image I got from the video generated Colors are not correct, this is what I want to fix

  • lavu/timestamp : Avoid C++-unfriendly code in user header

    31 août 2016, par Mark Thompson
    lavu/timestamp : Avoid C++-unfriendly code in user header
    

    Including this header in a C++11 program (inside extern "C") will
    throw an error because it looks like a user-defined literal. Add a
    space between the two tokens to avoid the problem.

    • [DH] libavutil/timestamp.h
  • cuvid : Pass bit depth information to decoder

    3 septembre 2016, par Philip Langdale
    cuvid : Pass bit depth information to decoder
    

    Although cuvid can only output 8bit, it can consume HEVC Main10 if
    the bit depth is set properly. In cases where >8bit is not supported,
    this change is still beneficial as the decoder will fail to be
    created instead of plowing throw and decoding as 8bit.

    • [DH] libavcodec/cuvid.c