Recherche avancée

Médias (0)

Mot : - Tags -/signalement

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (103)

  • MediaSPIP version 0.1 Beta

    16 avril 2011, par

    MediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Pour avoir une installation fonctionnelle, 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 (...)

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

  • Amélioration de la version de base

    13 septembre 2013

    Jolie sélection multiple
    Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
    Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...)

Sur d’autres sites (10640)

  • Encode video with FFmpeg fps have been wrong

    7 novembre 2016, par Burak Hamuryen

    I’m trying to encod a video with FFmpeg but i have a problem about fps.
    So i build the sample code as follows

    AVCodec *codec;
    AVCodecContext *c = NULL;
    int i, ret, x, y, got_output;
    FILE *f;
    AVFrame *frame;
    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((AVCodecID)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.num = 1;
    c->time_base.den = 5; //changed

    /* 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 5 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) {
           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");

    and I changed the following parts from the original

    c->time_base.num = 1;
    c->time_base.den = 5;

    after these changes, i expect a video to be composed of 5 seconds and 5 fps.
    But when i play the output video file, the video ends in 1 2 seconds.
    The ffprob output of output video is as follows.

    Edit :
    ffprobe output added as a text

    ffprobe version 2.0.1 Copyright (c) 2007-2013 the FFmpeg developers
     built on Sep 26 2013 02:00:03 with gcc 4.8.1 (GCC)
     configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
     libavutil      52. 38.100 / 52. 38.100
     libavcodec     55. 18.102 / 55. 18.102
     libavformat    55. 12.100 / 55. 12.100
     libavdevice    55.  3.100 / 55.  3.100
     libavfilter     3. 79.101 /  3. 79.101
     libswscale      2.  3.100 /  2.  3.100
     libswresample   0. 17.102 /  0. 17.102
     libpostproc    52.  3.100 / 52.  3.100
    Input #0, h264, from 'C:\Users\bhamuryen\Desktop\Dev\Test\ffmpeg_test\ffmpeg_test\test.h264':
     Duration: N/A, bitrate: N/A
       Stream #0:0: Video: h264 (High), yuv420p, 352x288, 5 fps, 5 tbr, 1200k tbn, 10 tbc
    [STREAM]
    index=0
    codec_name=h264
    codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
    profile=High
    codec_type=video
    codec_time_base=1/10
    codec_tag_string=[0][0][0][0]
    codec_tag=0x0000
    width=352
    height=288
    has_b_frames=1
    sample_aspect_ratio=0:1
    display_aspect_ratio=0:1
    pix_fmt=yuv420p
    level=13
    timecode=N/A
    id=N/A
    r_frame_rate=10/2
    avg_frame_rate=5/1
    time_base=1/1200000
    start_pts=N/A
    start_time=N/A
    duration_ts=N/A
    duration=N/A
    bit_rate=N/A
    nb_frames=N/A
    nb_read_frames=N/A
    nb_read_packets=N/A
    DISPOSITION:default=0
    DISPOSITION:dub=0
    DISPOSITION:original=0
    DISPOSITION:comment=0
    DISPOSITION:lyrics=0
    DISPOSITION:karaoke=0
    DISPOSITION:forced=0
    DISPOSITION:hearing_impaired=0
    DISPOSITION:visual_impaired=0
    DISPOSITION:clean_effects=0
    DISPOSITION:attached_pic=0

    The output video file played with VLC and VLC statistic is as follows.

    vlc output

    As shown, i setted fps 5 but vlc read it like 10 fps also ffprobe say to us

    Stream #0:0 : Video : h264 (High), yuv420p, 352x288, 5 fps, 5 tbr, 1200k tbn, 10 tbc

    and

    codec_time_base=1/10

    i think the important thing is codec_time_base=1/10 and 10 tbc.
    What is wrong in this code ? i don’t know exactly the reason for the problem.
    How can i create a video(5 fps -10 fps or custom fps) and play correctly the created video ?

    Thanks for your help.

  • How to detect video bitrate from HLS/M3U8 file using ffprobe

    23 août 2016, par Guillermo

    We need to detect the video bitrate of a HLS stream with ffprobe by using the m3u8 file of the .ts.

    If I use the m3u8, I can get the duration, dimensions, codecs used, audio bitrate, but no video bitrate is available in the response provided by ffprobe.

    ffprobe -print_format json -show_format -show_streams -show_error http://gfrmedia-video-platform.s3.amazonaws.com/bumbia/2014/06/06/158217_20160126214307_bumbia-hls/hls1056k/158217_640x360-with-mp4-hls_bumbia-hls.m3u8

    ffprobe version 2.8.3 Copyright (c) 2007-2015 the FFmpeg developers
     built with Apple LLVM version 7.0.0 (clang-700.1.76)
     configuration: --prefix=/usr/local/Cellar/ffmpeg/2.8.3 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-opencl --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda
     libavutil      54. 31.100 / 54. 31.100
     libavcodec     56. 60.100 / 56. 60.100
     libavformat    56. 40.101 / 56. 40.101
     libavdevice    56.  4.100 / 56.  4.100
     libavfilter     5. 40.101 /  5. 40.101
     libavresample   2.  1.  0 /  2.  1.  0
     libswscale      3.  1.101 /  3.  1.101
     libswresample   1.  2.101 /  1.  2.101
     libpostproc    53.  3.100 / 53.  3.100
    {
    [http @ 0x7fcf09e19420] No trailing CRLF found in HTTP header.
    Input #0, hls,applehttp, from 'http://gfrmedia-video-platform.s3.amazonaws.com/bumbia/2014/06/06/158217_20160126214307_bumbia-hls/hls1056k/158217_640x360-with-mp4-hls_bumbia-hls.m3u8':
     Duration: 00:00:11.00, start: 9.940500, bitrate: 0 kb/s
     Program 0
       Metadata:
         variant_bitrate : 0
       Stream #0:0: Video: h264 (Constrained Baseline) ([27][0][0][0] / 0x001B), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
       Stream #0:1: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp, 79 kb/s
       "streams": [
           {
               "index": 0,
               "codec_name": "h264",
               "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
               "profile": "Constrained Baseline",
               "codec_type": "video",
               "codec_time_base": "1001/60000",
               "codec_tag_string": "[27][0][0][0]",
               "codec_tag": "0x001b",
               "width": 640,
               "height": 360,
               "coded_width": 640,
               "coded_height": 368,
               "has_b_frames": 0,
               "sample_aspect_ratio": "1:1",
               "display_aspect_ratio": "16:9",
               "pix_fmt": "yuv420p",
               "level": 30,
               "chroma_location": "left",
               "refs": 1,
               "is_avc": "0",
               "nal_length_size": "0",
               "r_frame_rate": "30000/1001",
               "avg_frame_rate": "30000/1001",
               "time_base": "1/90000",
               "start_pts": 900000,
               "start_time": "10.000000",
               "bits_per_raw_sample": "8",
               "disposition": {
                   "default": 0,
                   "dub": 0,
                   "original": 0,
                   "comment": 0,
                   "lyrics": 0,
                   "karaoke": 0,
                   "forced": 0,
                   "hearing_impaired": 0,
                   "visual_impaired": 0,
                   "clean_effects": 0,
                   "attached_pic": 0
               }
           },
           {
               "index": 1,
               "codec_name": "aac",
               "codec_long_name": "AAC (Advanced Audio Coding)",
               "profile": "LC",
               "codec_type": "audio",
               "codec_time_base": "1/44100",
               "codec_tag_string": "[15][0][0][0]",
               "codec_tag": "0x000f",
               "sample_fmt": "fltp",
               "sample_rate": "44100",
               "channels": 2,
               "channel_layout": "stereo",
               "bits_per_sample": 0,
               "r_frame_rate": "0/0",
               "avg_frame_rate": "0/0",
               "time_base": "1/90000",
               "start_pts": 894645,
               "start_time": "9.940500",
               "bit_rate": "79931",
               "disposition": {
                   "default": 0,
                   "dub": 0,
                   "original": 0,
                   "comment": 0,
                   "lyrics": 0,
                   "karaoke": 0,
                   "forced": 0,
                   "hearing_impaired": 0,
                   "visual_impaired": 0,
                   "clean_effects": 0,
                   "attached_pic": 0
               }
           }
       ],
       "format": {
           "filename": "http://gfrmedia-video-platform.s3.amazonaws.com/bumbia/2014/06/06/158217_20160126214307_bumbia-hls/hls1056k/158217_640x360-with-mp4-hls_bumbia-hls.m3u8",
           "nb_streams": 2,
           "nb_programs": 1,
           "format_name": "hls,applehttp",
           "format_long_name": "Apple HTTP Live Streaming",
           "start_time": "9.940500",
           "duration": "11.000000",
           "size": "281",
           "bit_rate": "204",
           "probe_score": 100
       }
    }

    In this sample above, I know that video is around 520Kbps, but need to find a way to read that programatically with either ffprobe or any other way. With what I currently have I can get most of the information needed, but I’m missing one important value that is the video bitrate.

    What other options could I try ?

    Thanks !

  • How does ffprobe determine duration ?

    26 octobre 2015, par jasongullickson

    I’m using ffprobe to analyze media files stored on a remote server. This seems to work well, but for some files the duration is missing or incorrect (usually longer than it should be). Other times it returns this information accurately, and it doesn’t seem to be related to the media type (codec, etc.).

    Here’s an example of a command that works :

    ffprobe -v quiet -print_format json -show_streams -show_format http://host.com/file.aiff

    {
    "streams": [
       {
           "index": 0,
           "codec_name": "pcm_s16be",
           "codec_long_name": "PCM signed 16-bit big-endian",
           "codec_type": "audio",
           "codec_time_base": "1/44100",
           "codec_tag_string": "[0][0][0][0]",
           "codec_tag": "0x0000",
           "sample_fmt": "s16",
           "sample_rate": "44100",
           "channels": 2,
           "bits_per_sample": 16,
           "r_frame_rate": "0/0",
           "avg_frame_rate": "0/0",
           "time_base": "1/44100",
           "start_pts": 0,
           "start_time": "0.000000",
           "duration_ts": 8494248,
           "duration": "192.613333",
           "bit_rate": "1411200",
           "nb_frames": "8494248",
           "disposition": {
               "default": 0,
               "dub": 0,
               "original": 0,
               "comment": 0,
               "lyrics": 0,
               "karaoke": 0,
               "forced": 0,
               "hearing_impaired": 0,
               "visual_impaired": 0,
               "clean_effects": 0,
               "attached_pic": 0
           }
       }
    ],
    "format": {
       "filename": "http://host.com/file.aiff",
       "nb_streams": 1,
       "nb_programs": 0,
       "format_name": "aiff",
       "format_long_name": "Audio IFF",
       "start_time": "0.000000",
       "duration": "192.613333",
       "probe_score": 100
    }
    }

    Here’s an example of one that doesn’t :

    ffprobe -v quiet -print_format json -show_streams -show_format "http://host.com/file.wav"

    Which generates this result :

    {
    "streams": [
       {
           "index": 0,
           "codec_name": "pcm_s16le",
           "codec_long_name": "PCM signed 16-bit little-endian",
           "codec_type": "audio",
           "codec_time_base": "1/44100",
           "codec_tag_string": "[1][0][0][0]",
           "codec_tag": "0x0001",
           "sample_fmt": "s16",
           "sample_rate": "44100",
           "channels": 2,
           "bits_per_sample": 16,
           "r_frame_rate": "0/0",
           "avg_frame_rate": "0/0",
           "time_base": "1/44100",
           "bit_rate": "1411200",
           "disposition": {
               "default": 0,
               "dub": 0,
               "original": 0,
               "comment": 0,
               "lyrics": 0,
               "karaoke": 0,
               "forced": 0,
               "hearing_impaired": 0,
               "visual_impaired": 0,
               "clean_effects": 0,
               "attached_pic": 0
           }
       }
    ],
    "format": {
       "filename": "http://host.com/file.wav",
       "nb_streams": 1,
       "nb_programs": 0,
       "format_name": "wav",
       "format_long_name": "WAV / WAVE (Waveform Audio)",
       "bit_rate": "1411200",
       "probe_score": 99
    }
    }

    These two examples are different formats, but I’ve seen it work and not work when the format is the same, I just don’t have an example handy.

    What I’d like to know is if there is something I can change about the parameters I’m using with ffprobe to allow the duration to be determined consistently and accurate, or any information I can find as to how ffprobe works so I figure out how I might change the input files, etc. so they work correctly.

    Alternatively, if there is a different tool that works more reliably (it would need to be an open-source Linux tool) any suggestions or recommendations are welcome.