Recherche avancée

Médias (1)

Mot : - Tags -/ogg

Autres articles (45)

  • 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

  • Ajouter notes et légendes aux images

    7 février 2011, par

    Pour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
    Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
    Modification lors de l’ajout d’un média
    Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...)

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

  • avfilter/vsrc_testsrc : add missing alpha plane define

    14 octobre 2024, par James Almer
    avfilter/vsrc_testsrc : add missing alpha plane define
    

    "A" was never being defined if yuvtestsrc was enabled but rgbtestsrc disabled.

    Signed-off-by : James Almer <jamrial@gmail.com>

    • [DH] libavfilter/vsrc_testsrc.c
  • vulkan_ffv1 : remove unused define

    5 avril, par Lynne
    vulkan_ffv1 : remove unused define
    

    Leftover debug macro.

    • [DH] libavcodec/vulkan_ffv1.c
  • ffmpeg : How to define AVFormatContext input to take the output of another AVFormatContext ?

    21 août 2016, par Victor.dMdB

    I have 2 functions running in 2 threads. One is written with opencv to parse images then write them to avformatcontext :

    VideoCapture vidSrc = cv::VideoCapture(vidURL);
    int vidWidth = vidSrc.get(CV_CAP_PROP_FRAME_WIDTH);
    int vidHeight = vidSrc.get(CV_CAP_PROP_FRAME_HEIGHT);
    AVRational vidFPS = {(int) vidSrc.get(CV_CAP_PROP_FPS), 1};
    AVFormatContext* av_fmt_ctx =  avformat_alloc_context();

    av_fmt_ctx->flags = AVFMT_NOFILE;
    cmd_data_ptr->video_data_conf.av_fmt_ctx = av_fmt_ctx;
    av_fmt_ctx->oformat = av_guess_format( NULL, props.vidURL.c_str(), NULL );
    AVCodec* vcodec = avcodec_find_encoder(av_fmt_ctx->oformat->video_codec);
    AVStream* vstrm = avformat_new_stream(av_fmt_ctx, vcodec);

    vstrm->codec = avcodec_alloc_context3(vcodec);
    vstrm->codec->width = vidWidth;
    vstrm->codec->height = vidHeight;
    vstrm->codec->pix_fmt = vcodec->pix_fmts[0];
    vstrm->codec->time_base = vstrm->time_base = av_inv_q(vidFPS);
    vstrm->r_frame_rate = vstrm->avg_frame_rate = vidFPS;
    if (av_fmt_ctx->oformat->flags &amp; AVFMT_GLOBALHEADER)
     vstrm->codec->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
    avcodec_open2(vstrm->codec, vcodec, nullptr);

    int got_pkt = 0;
    AVFrame* frame = av_frame_alloc();
    std::vector framebuf(av_image_get_buffer_size(vstrm->codec->pix_fmt, vidWidth, vidHeight,32));
    avpicture_fill(reinterpret_cast(frame), framebuf.data(), vstrm->codec->pix_fmt, vidWidth, vidHeight);
    frame->width = vidWidth;
    frame->height = vidHeight;
    frame->format = static_cast<int>(vstrm->codec->pix_fmt);
    while(true){
       vidSrc >> in;
       cv::Mat towrite;
       const int stride[] = { static_cast<int>(towrite.step[0]) };
       sws_scale(swsctx, &amp;towrite.data, stride, 0, towrite.rows, frame->data, frame->linesize);
       frame->pts = frame_pts++;
       AVPacket pkt;
       pkt.data = nullptr;
       pkt.size = 0;
       pkt.stream_index = vstrm->id;
       av_init_packet(&amp;pkt);
       avcodec_encode_video2(vstrm->codec, &amp;pkt, end_of_stream ? nullptr : frame, &amp;got_pkt);
       if (got_pkt) {
             pkt.duration = 1;
             av_packet_rescale_ts(&amp;pkt, vstrm->codec->time_base, vstrm->time_base);
             av_write_frame(av_fmt_ctx, &amp;pkt);
        }
        av_packet_unref(&amp;pkt);
    }
    av_frame_free(&amp;frame);
    avcodec_close(vstrm->codec);
    </int></int>

    And another thread reads those frames

    while(1){
       AVPacket packet;
       av_read_frame(av_fmt_ctx, &amp;packet);
       ...
    }

    The first function doesn’t seem to be working properly, as there is a segmentation error on av_write_frame or even withav_dump_format. Is it correct that the first function is created as an output context ? Or should I be setting up as an input context for the other thread ? I’m a bit confused. I’m still trying to wrap my head around ffmpeg.