Recherche avancée

Médias (1)

Mot : - Tags -/livre électronique

Autres articles (47)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

  • Support audio et vidéo HTML5

    10 avril 2011

    MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
    Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
    Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
    Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)

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

  • FFMPEG avformat_write_header changing my stream time_base

    24 avril 2015, par cesarpachon

    I am muxing video using ffmpeg 2.1.3 with libavcodec 55.39.101 (forced to that version because is the one available in google-chrome PNACL port project). all my frames seems to have bad the time. they try to be rendered all at once at the beggining of the video when playing it.

    I am setting the stream time base to 1/25, but just after calling avformat_write_header, it has the value of -18082736/1.
    in each frame, when I print the stream time_base it says 1/12800, while the time_base of codec is always ok (1/25).

    console log before and after av_format_write_header :

    before avformat_write_header stream time_base: 1/25
    after avformat_write_header ret 0 stream time_base: -18082736/1

    the code (abreviated to keep the post short, all calls in the original version had error checking) :

    AVCodecContext *codecContext;
    AVCodec * codec = avcodec_find_encoder(codec_id);  
    myOutputStream->stream = avformat_new_stream(outputFormatContext, *codec);
    myOutputStream->stream->id = outputFormatContext->nb_streams-1;
    codecContext = myOutputStream->stream->codec;
    codecContext->codec_id = codec_id;
    codecContext->bit_rate = 400000;
    codecContext->width    = width;
    codecContext->height   = height;
    myOutputStream->stream->time_base = (AVRational){ 1, 25 };
    codecContext->time_base       = myOutputStream->stream->time_base;
    codecContext->gop_size      = 12;
    codecContext->pix_fmt       = AV_PIX_FMT_YUV420P;
    AVDictionary *opt = NULL;
    av_dict_copy(&opt, opt_arg, 0);
    ret = avcodec_open2(codecContext, codec, &opt);
    av_dict_free(&opt);
    myOutputStream->frame = alloc_picture(codecContext->pix_fmt, codecContext->width, codecContext->height);
     myOutputStream->tmp_frame = alloc_picture(AV_PIX_FMT_YUV420P, codecContext->width, codecContext->height);

    //before: printing g_outputContext->stream time_base here
    ret = avformat_write_header(g_outputContext, &opt);
    //after: printing g_outputContext->stream time_base here

    If I run ffmpeg -i on the final video, I got this (why duration is zero ?) :

    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test4.mp4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2mp41
       encoder         : Lavf55.19.104
     Duration: 00:00:00.05, start: 0.000000, bitrate: 99549 kb/s
       Stream #0:0(und): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 800x600 [SAR 1:1 DAR 4:3], 463106 kb/s, 12800 fps, 12800 tbr, 12800 tbn, 25 tbc (default)
       Metadata:
         handler_name    : VideoHandler
  • Decoding then re-encoding frames in reverse order with ffmpeg

    21 août 2014, par user3875919

    I am pretty new to ffmpeg, and now I want to decode the frames and encode it back in reverse order. I have used this tutorial for decoding the video and this example to encode it back. I can decode the frames properly, but when I re-encode it, I get a dummy image rather than clear video. How can I get the actual reversed video ?

    static void video_encode_example(const char *filename, int codec_id)
    {
       AVCodec *codec;
       AVCodecContext *c= NULL;
       int i, ret, x, y, got_output;
       FILE *f;
       struct SwsContext *sws_ctx = NULL;
       AVFrame *frame;
       AVFrame *frameRGB = NULL;
       AVPacket pkt;
       uint8_t endcode[] = { 0, 0, 1, 0xb7 };

       printf("Encode video file %s\n", filename);

       /* find the mpeg1 video encoder */
       codec = avcodec_find_encoder(codec_id);
       if (!codec) {
           fprintf(stderr, "Codec not found\n");
           exit(1);
       }

       c = avcodec_alloc_context3(codec);
       if (!c) {
           fprintf(stderr, "Could not allocate video codec context\n");
           exit(1);
       }

       /* put sample parameters */
       c->bit_rate = 400000;
       /* resolution must be a multiple of two */
       c->width = 352;
       c->height = 288;
       /* frames per second */
       c->time_base = (AVRational){1,25};
       /* emit one intra frame every ten frames
        * check frame pict_type before passing frame
        * to encoder, if frame->pict_type is AV_PICTURE_TYPE_I
        * then gop_size is ignored and the output of encoder
        * will always be I frame irrespective to gop_size
        */
       c->gop_size = 10;
       c->max_b_frames = 1;
       c->pix_fmt = AV_PIX_FMT_YUV420P;

       if (codec_id == AV_CODEC_ID_H264)
           av_opt_set(c->priv_data, "preset", "slow", 0);

       /* open it */
       if (avcodec_open2(c, codec, NULL) < 0) {
           fprintf(stderr, "Could not open codec\n");
           exit(1);
       }

       f = fopen(filename, "wb");
       if (!f) {
           fprintf(stderr, "Could not open %s\n", filename);
           exit(1);
       }

       frame = av_frame_alloc();
       if (!frame) {
           fprintf(stderr, "Could not allocate video frame\n");
           exit(1);
       }
       frame->format = c->pix_fmt;
       frame->width  = c->width;
       frame->height = c->height;

       /* the image can be allocated by any means and av_image_alloc() is
        * just the most convenient way if av_malloc() is to be used */
       ret = av_image_alloc(frame->data, frame->linesize, c->width, c->height,
                            c->pix_fmt, 32);
       if (ret < 0) {
           fprintf(stderr, "Could not allocate raw picture buffer\n");
           exit(1);
       }

       /* encode 1 second of video */
       for (i = 0; i < 25; i++) {
           av_init_packet(&pkt);
           pkt.data = NULL;    // packet data will be allocated by the encoder
           pkt.size = 0;

           fflush(stdout);
           /* prepare a dummy image */
           /* Y */
           for (y = 0; y < c->height; y++) {
               for (x = 0; x < c->width; x++) {
                   frame->data[0][y * frame->linesize[0] + x] = x + y + i * 3;
               }
           }

           /* Cb and Cr */
           for (y = 0; y < c->height/2; y++) {
               for (x = 0; x < c->width/2; x++) {
                   frame->data[1][y * frame->linesize[1] + x] = 128 + y + i * 2;
                   frame->data[2][y * frame->linesize[2] + x] = 64 + x + i * 5;
               }
           }

           frame->pts = i;

           /* encode the image */
           ret = avcodec_encode_video2(c, &pkt, frame, &got_output);
           if (ret < 0) {
               fprintf(stderr, "Error encoding frame\n");
               exit(1);
           }

           if (got_output) {
               // Convert the image from its native format to RGB
               sws_scale
               (
                   sws_ctx,
                   (uint8_t const * const *)frame->data,
                   frame->linesize,
                   0,
                   c->height,
                   frameRGB->data,
                   frameRGB->linesize
               );
               printf("Write frame %3d (size=%5d)\n", i, pkt.size);
               fwrite(pkt.data, 1, pkt.size, f);
               av_free_packet(&pkt);
           }
       }

       /* get the delayed frames */
       for (got_output = 1; got_output; i++) {
           fflush(stdout);

           ret = avcodec_encode_video2(c, &pkt, NULL, &got_output);
           if (ret < 0) {
               fprintf(stderr, "Error encoding frame\n");
               exit(1);
           }

           if (got_output) {
               printf("Write frame %3d (size=%5d)\n", i, pkt.size);
               fwrite(pkt.data, 1, pkt.size, f);
               av_free_packet(&pkt);
           }
       }

       /* add sequence end code to have a real mpeg file */
       fwrite(endcode, 1, sizeof(endcode), f);
       fclose(f);

       avcodec_close(c);
       av_free(c);
       av_freep(&frame->data[0]);
       av_frame_free(&frame);
       printf("\n");
    }
  • capture my webcam and encode to mp4 with ffmpeg, but the x264 works bad

    17 septembre 2015, par zhangxm1991

    here is my version :
    ffmpeg version : 2.3.3
    libx264 version:142.x

    I wat to capture my video and use ffmpeg and x264 to a mp4 file. the solution is 320x240.
    But i found that the video file is so big. Then i found that the P frame and B frame is very big, even nearly equal to the I frame.I do not know why.

    here is my code :

       c->codec_id = codec_id;
       c->bit_rate = 400000;
       c->width    = 320;
       c->height   = 240;
       c->time_base.den = 10;
       c->time_base.num = 1;
       c->pix_fmt       = AV_PIX_FMT_YUV420P;

    Here is my program output :

    [libx264 @ 0xb6200fc0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX

    [libx264 @ 0xb6200fc0] profile High, level 1.3

    [libx264 @ 0xb6200fc0] 264 - core 142 - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=10 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=400 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00

    Output #0, mp4, to '/home/2014_09_12/0002b6429579/5/2014_09_12_18_39_12_600.mp4':

       Stream #0:0: Video: h264 (libx264), yuv420p, 320x240, q=-1--1, 400 kb/s, 10 tbc

       Stream #0:1: Audio: aac, 8000 Hz, mono, fltp, 32 kb/s

    [mp4 @ 0xb62005e0] Using AVStream.codec.time_base as a timebase hint to the muxer is deprecated. Set AVStream.time_base instead.

    [mp4 @ 0xb62005e0] Using AVStream.codec.time_base as a timebase hint to the muxer is deprecated. Set AVStream.time_base instead.

    [mp4 @ 0xb62005e0] Encoder did not produce proper pts, making some up.

    [libx264 @ 0xb6200fc0] frame I:3     Avg QP: 2.79  size: 72996

    [libx264 @ 0xb6200fc0] frame P:383   Avg QP: 0.14  size: 54075

    [libx264 @ 0xb6200fc0] frame B:216   Avg QP: 1.95  size: 64784

    [libx264 @ 0xb6200fc0] consecutive B-frames: 30.1% 63.2%  6.0%  0.7%

    [libx264 @ 0xb6200fc0] mb I  I16..4: 16.1% 12.7% 71.2%

    [libx264 @ 0xb6200fc0] mb P  I16..4:  3.5%  5.1% 15.9%  P16..4: 20.3% 22.8% 14.0%  0.0%  0.0%    skip:18.3%

    [libx264 @ 0xb6200fc0] mb B  I16..4:  0.4%  2.5%  8.2%  B16..8: 32.6% 19.8% 13.5%  
    direct:22.2%  skip: 0.8%  L0:25.5% L1:12.8% BI:61.6%

    [libx264 @ 0xb6200fc0] final ratefactor: -32.89

    [libx264 @ 0xb6200fc0] 8x8 transform intra:21.0% inter:29.6%

    [libx264 @ 0xb6200fc0] coded y,uvDC,uvAC intra: 100.0% 100.0% 100.0% inter: 83.3% 80.9% 80.9%

    [libx264 @ 0xb6200fc0] i16 v,h,dc,p:  5%  7% 42% 46%

    [libx264 @ 0xb6200fc0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 14% 12% 23%  8%  6%  6%  8%  9% 14%

    [libx264 @ 0xb6200fc0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 12% 11% 19% 10%  8%  8% 10% 10% 12%

    [libx264 @ 0xb6200fc0] i8c dc,h,v,p: 78%  3%  4% 15%

    [libx264 @ 0xb6200fc0] Weighted P-Frames: Y:0.5% UV:0.3%

    [libx264 @ 0xb6200fc0] ref P L0: 43.4% 14.6% 19.0% 22.9%  0.1%

    [libx264 @ 0xb6200fc0] ref B L0: 63.3% 35.7%  1.1%

    [libx264 @ 0xb6200fc0] ref B L1: 97.0%  3.0%

    [libx264 @ 0xb6200fc0] kb/s:4.53

    [aac @ 0xb6201ba0] 2 frames left in the queue on closing