Recherche avancée

Médias (1)

Mot : - Tags -/MediaSPIP

Autres articles (67)

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

  • AVFormatContext Transcode : Input or Output ?

    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 & 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.

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

  • read videos from a .m3u8 file with HTML5

    6 septembre 2016, par LeCintas

    I am looking for use a .m3u8 file to play a video playlist on my local HTML page but nothing happened when i run the page.

    Here is my HTML code :

       
           
           
       
       
           <video height="360" controls="controls" autoplay="autoplay">
               <source src="testlist.m3u8" type="application/x-mpegURL"></source>
           </video>
       

    testlist.m3u8 is in the same folder as the html file and .mp4 files.

    here is the command that i used to create the .m3u8 file and the sliced .mp4 files.

    ffmpeg -i "video.mp4" -vcodec libx264 -acodec copy -flags -global_header -map 0:0 -map 0:1 -f segment -segment_time 4 -segment_list_size 0 -segment_list testlist.m3u8 -segment_format mpegts stream%d.mp4