Recherche avancée

Médias (91)

Autres articles (42)

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

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

  • Other interesting software

    13 avril 2011, par

    We don’t claim to be the only ones doing what we do ... and especially not to assert claims to be the best either ... What we do, we just try to do it well and getting better ...
    The following list represents softwares that tend to be more or less as MediaSPIP or that MediaSPIP tries more or less to do the same, whatever ...
    We don’t know them, we didn’t try them, but you can take a peek.
    Videopress
    Website : http://videopress.com/
    License : GNU/GPL v2
    Source code : (...)

Sur d’autres sites (6597)

  • Encoding with ffmpeg : video quality drops

    21 mai 2014, par Adi Ulici

    I’m trying to encode a set of pictures into a video with ffmpeg. I’m new to this stuff, but I managed to get it work. I have only one problem : the first second or two of video look good but as the time goes the video quality keeps dropping and dropping. At the end (it’s a video of about 16 seconds) the quality is really bad and I can’t understand why.

    I’m using AV_CODEC_ID_MPEG1VIDEO as video codec (frankly, it’s the only one I could make work) and here is a sample of my code :

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

    c->bit_rate = 400000;
    c->width = width;
    c->height = height;
    struct AVRational time_base = {1, 25};
    c->time_base = time_base;
    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 the codec
    if (avcodec_open2(c, codec, NULL) < 0) {
       fprintf(stderr, "Could not open codec\n");
       exit(1);
    }

    fopen_s(&f, 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;

    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);
    }

    struct SwsContext *frameConvertContext = sws_getContext(width, height,
         PIX_FMT_RGB24,
         c->width, c->height,
         c->pix_fmt,
         SWS_LANCZOS | SWS_ACCURATE_RND, NULL, NULL, NULL);

    for (i = 0; i < framesNr; i++) {
       // Read an image
       std::stringstream filename;
       filename << "input/image-" << (i+1) << ".jpg";
       Image* img;
       img = Image::fromJpeg((char*) filename.str().c_str());
       int srcSliceY[1] = { img->getWidth() * 3 };
       const uint8_t* imgbuf[1] = { (uint8_t*) img->getData(sizeof(uint8_t)) };

       av_init_packet(&pkt);
       pkt.data = NULL;
       pkt.size = 0;

       fflush(stdout);
       frameConvertContext = sws_getCachedContext(frameConvertContext, width, height,
         PIX_FMT_RGB24,
         c->width, c->height,
         c->pix_fmt,
         SWS_LANCZOS | SWS_ACCURATE_RND, NULL, NULL, NULL);

       sws_scale(frameConvertContext, imgbuf, srcSliceY, 0, img->getHeight(), frame->data, frame->linesize);

       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) {
           printf(".");
           fwrite(pkt.data, 1, pkt.size, f);
           av_free_packet(&pkt);
       }

       // Free the memory
       delete img;
    }

    Any tips ? Thanks a lot !

  • ffmpeg seeking drops consistently two frames from the start of segments

    27 janvier 2018, par Fernando D'Andrea

    I’m trying to script-cut a 24 fps video and it gets close to the right thing, except for two missing frames at the beginning of every segment I cut with seeking.

    I’ve found out that index-frames (keyframes) could become an issue for seeking, so I first create an intermediate file with every frame as a index frame using this line :

    ffmpeg -i input.mov -c:v libx264 -g 1 -c:a copy intermediate.mp4

    Then I proceed to make a cut with this line. Notice I’m drawing some text on top of it :

    ffmpeg -hide_banner -y -i intermediate.mp4 -ss 00:00:02.083333333333 -to 00:00:02.875000000000 -vf drawtext=fontfile=DroidSans.ttf:fontsize=48:text="segment2":fontcolor=yellow:box=1:boxborderw=16:boxcolor=black@0.5:x=w/32:y=h/18 output.mp4

    No matter the length of the segment, the first two frames get dropped.

    I’m using python do control ffmpeg.

    Any ideas ?


    Edit :

    Running ffprobe on one of the generated segments with ffprobe -hide_banner Nixing_0010_0010.mp4 says the following :

    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Nixing_0010_0010.mp4':

    Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf57.82.101
     Duration: 00:00:02.11, start: 0.000000, bitrate: 4717 kb/s
       Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 4751 kb/s, 24 fps, 24 tbr, 12288 tbn, 48 tbc (default)
       Metadata:
         handler_name    : VideoHandler
         timecode        : 00:00:00:00
       Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 2 kb/s (default)
       Metadata:
         handler_name    : SoundHandler
       Stream #0:2(eng): Data: none (tmcd / 0x64636D74), 0 kb/s
       Metadata:
         handler_name    : TimeCodeHandler
         timecode        : 00:00:00:00
  • lavu/adler32 : Fix doxy group definition, take two

    16 juin 2013, par James Almer
    lavu/adler32 : Fix doxy group definition, take two
    

    The description if for the function, not the group.

    Signed-off-by : James Almer <jamrial@gmail.com>
    Signed-off-by : Michael Niedermayer <michaelni@gmx.at>

    • [DH] libavutil/adler32.h