Recherche avancée

Médias (91)

Autres articles (80)

  • Le profil des utilisateurs

    12 avril 2011, par

    Chaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
    L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...)

  • Configurer la prise en compte des langues

    15 novembre 2010, par

    Accéder à la configuration et ajouter des langues prises en compte
    Afin de configurer la prise en compte de nouvelles langues, il est nécessaire de se rendre dans la partie "Administrer" du site.
    De là, dans le menu de navigation, vous pouvez accéder à une partie "Gestion des langues" permettant d’activer la prise en compte de nouvelles langues.
    Chaque nouvelle langue ajoutée reste désactivable tant qu’aucun objet n’est créé dans cette langue. Dans ce cas, elle devient grisée dans la configuration et (...)

  • 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

Sur d’autres sites (12048)

  • Stuttering rendering using ffmpeg and sdl2

    22 décembre 2020, par Wiesen_Walle

    With the following Code I get a stuttering rendering of the movie file. Interesstingly, when dumping information with ffmpeg it says it has 25 fps and a duration of 00:01:32.90 ; however when counting the frames and time it runs by myself it gives a time of about 252 seconds, I guess the code receiving the frames and sending the package (int cap(vid v)) draws the same frame multiple of times. But I cannot see what's wrong ?

    


    //PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/:/usr/lib64/pkgconfig/   --> add path to PKF_Config search path&#xA;//export PKG_CONFIG_PATH --> export PKG_Config search path to become visible for gcc&#xA;//gcc ffmpeg_capture_fl.c -Wall -pedantic -fPIC `pkg-config --cflags --libs libavdevice libavformat libavcodec libavutil libavdevice libavfilter libswscale libswresample sdl2`&#xA;&#xA;&#xA;#include <libavdevice></libavdevice>avdevice.h>&#xA;#include <libavutil></libavutil>opt.h>&#xA;#include <libavformat></libavformat>avformat.h>&#xA;#include <libavcodec></libavcodec>avcodec.h>&#xA;#include <libswscale></libswscale>swscale.h>&#xA;#include <libavutil></libavutil>imgutils.h>&#xA;#include &#xA;#include &#xA;#include <libavutil></libavutil>rational.h>&#xA;#include <sys></sys>time.h>&#xA;#include &#xA;&#xA;&#xA;typedef struct vid{&#xA;AVFormatContext *inc;&#xA;AVInputFormat *iformat;&#xA;AVCodecContext  *pCodecCtx;&#xA;AVCodec         *pCodec;&#xA;AVFrame         *pFrame;&#xA;int videoStream;} vid;&#xA;&#xA;typedef struct sws{&#xA;struct SwsContext *ctx;&#xA;uint8_t **buffer;&#xA;int *linesize;&#xA;} sws;&#xA;&#xA;&#xA;vid cap_init_fl(char *fl);&#xA;int cap(vid v);&#xA;void cap_close(vid v);&#xA;&#xA;sws init_swsctx(int width, int height, enum AVPixelFormat pix_fmt, int new_width, int new_height, enum AVPixelFormat new_pxf);&#xA;void conv_pxlformat(sws scale, uint8_t **src_data, int *src_linesize, int height);&#xA;void free_sws(sws inp);&#xA;&#xA;#include <sdl2></sdl2>SDL.h>&#xA;&#xA;typedef struct sdl_window{&#xA;    SDL_Window *window;&#xA;    SDL_Renderer *renderer;&#xA;    SDL_Texture *texture;&#xA;    SDL_Event *event;&#xA;    int width;&#xA;    int height;&#xA;    int pitch;&#xA;    uint32_t sdl_pxl_frmt;&#xA;    }sdl_window;&#xA;&#xA;sdl_window init_windowBGR24_ffmpg(int width, int height);&#xA;int render_on_texture_update(sdl_window wow, uint8_t *data);&#xA;void close_window(sdl_window wow);&#xA;&#xA;&#xA;vid cap_init_fl(char *fl){&#xA;    vid v = {NULL, NULL, NULL, NULL, NULL, -1};&#xA;    int i;&#xA;    &#xA;    av_register_all();&#xA;    avdevice_register_all();&#xA;&#xA;    if( 0 > avformat_open_input( &amp;(v.inc), fl , v.iformat, NULL)) {&#xA;        printf("Input device could not been opened\n");&#xA;        cap_close(v);&#xA;        exit(1);&#xA;        }&#xA;&#xA;    if(avformat_find_stream_info(v.inc, NULL)&lt;0){&#xA;        printf("Stream information could not been found.\n");&#xA;        cap_close(v);&#xA;        exit(2);&#xA;    }&#xA;&#xA;    // Dump information about file onto standard error&#xA;    av_dump_format(v.inc, 0, fl, 0);&#xA;&#xA;    // Find the first video stream&#xA;    v.videoStream=-1;&#xA;    for(i=0; inb_streams; i&#x2B;&#x2B;){&#xA;      if(v.inc->streams[i]->codecpar->codec_type==AVMEDIA_TYPE_VIDEO) {&#xA;        v.videoStream=i;&#xA;        break;&#xA;      }}&#xA;&#xA;    if(v.videoStream==-1){&#xA;        printf("Could not find video stream.\n");&#xA;        cap_close(v);&#xA;        exit(3);&#xA;        }&#xA;&#xA;    // Find the decoder for the video stream&#xA;    v.pCodec=avcodec_find_decoder(v.inc->streams[v.videoStream]->codecpar->codec_id);&#xA;        if(v.pCodec==NULL) {&#xA;          printf("Unsupported codec!\n");&#xA;        cap_close(v);&#xA;        exit(4);&#xA;           // Codec not found&#xA;        }&#xA;&#xA;    &#xA;&#xA;    // Get a pointer to the codec context for the video stream&#xA;    &#xA;    if((v.pCodecCtx=avcodec_alloc_context3(NULL)) == NULL){&#xA;        printf("Could not allocate codec context\n");&#xA;        cap_close(v);&#xA;        exit(10);}&#xA;&#xA;    avcodec_parameters_to_context (v.pCodecCtx, v.inc->streams[v.videoStream]->codecpar);       &#xA;    &#xA;    // Open codec&#xA;    if(avcodec_open2(v.pCodecCtx, v.pCodec, NULL)&lt;0){&#xA;        printf("Could not open codec");&#xA;        cap_close(v);&#xA;        exit(5);&#xA;        }&#xA;        &#xA;    &#xA;    // Allocate video frame&#xA;    v.pFrame=av_frame_alloc();&#xA;    if(v.pFrame==NULL){&#xA;        printf("Could not allocate AVframe");&#xA;        cap_close(v);&#xA;        exit(6);}&#xA;&#xA;    &#xA;    return v;&#xA;}&#xA;&#xA;&#xA;&#xA;int cap(vid v){&#xA;    int errorCodeRF, errorCodeSP, errorCodeRecFR;&#xA;    AVPacket pkt;&#xA;        &#xA;    if((errorCodeRF = av_read_frame(v.inc, &amp;pkt))  >= 0){&#xA;        &#xA;        if (pkt.stream_index == v.videoStream) {&#xA;            &#xA;            errorCodeSP = avcodec_send_packet(v.pCodecCtx, &amp;pkt);&#xA;            &#xA;            if (errorCodeSP >= 0 || errorCodeSP == AVERROR(EAGAIN)){&#xA;                &#xA;                errorCodeRecFR = avcodec_receive_frame(v.pCodecCtx, v.pFrame);&#xA;                &#xA;                if (errorCodeRecFR &lt; 0){ &#xA;                    av_packet_unref(&amp;pkt);&#xA;                    return errorCodeRecFR;&#xA;                    }&#xA;                else{&#xA;                    av_packet_unref(&amp;pkt);&#xA;                    return 0;&#xA;                    }&#xA;                &#xA;                }&#xA;            else{&#xA;                 av_packet_unref(&amp;pkt);&#xA;                 return errorCodeSP;}&#xA;                &#xA;        }}&#xA;                &#xA;    else{&#xA;        return errorCodeRF;}&#xA;        return 1;&#xA;        }&#xA;    &#xA;    &#xA;&#xA;void cap_close(vid v){&#xA;    if(v.pFrame != NULL) av_free(v.pFrame);&#xA;    avcodec_close(v.pCodecCtx);&#xA;    avformat_close_input(&amp;(v.inc));&#xA;    if(v.inc != NULL) avformat_free_context(v.inc);&#xA;    &#xA;    v.inc = NULL;&#xA;    v.iformat = NULL;&#xA;    v.pCodecCtx = NULL;&#xA;    v.pCodec = NULL;&#xA;    v.pFrame = NULL;&#xA;    v.videoStream=-1;}&#xA;&#xA;&#xA;&#xA;sws init_swsctx(int width, int height, enum AVPixelFormat pix_fmt, int new_width, int new_height, enum AVPixelFormat new_pxf){&#xA;&#xA;int nwidth, nheight;&#xA;sws scale;&#xA;&#xA;scale.buffer = (uint8_t **) malloc(4 * sizeof(uint8_t *));&#xA;scale.linesize = (int *) malloc(4 * sizeof(int));&#xA;&#xA;&#xA;nwidth = (new_width &lt;= 0) ?  width : new_width;&#xA;nheight = (new_height &lt;= 0) ?  height : new_height;&#xA;&#xA;av_image_alloc(scale.buffer, scale.linesize, nwidth, nheight, new_pxf, 1);&#xA;scale.ctx = sws_getContext(width, height, pix_fmt, nwidth, nheight, new_pxf, SWS_BILINEAR, NULL, NULL, NULL);&#xA;&#xA;if(scale.ctx==NULL){&#xA;    printf("Could not allocate SWS-Context\n");&#xA;    av_freep(&amp;(scale.buffer)[0]);&#xA;    free(scale.buffer);&#xA;    free(scale.linesize);&#xA;    exit(12);&#xA;    }&#xA;            &#xA;return scale;}&#xA;&#xA;&#xA;void conv_pxlformat(sws scale, uint8_t **src_data, int *src_linesize, int height){  &#xA;    sws_scale(scale.ctx, (const uint8_t **) src_data, src_linesize, 0, height, scale.buffer, scale.linesize);&#xA;    }&#xA;&#xA;&#xA;void free_sws(sws inp){&#xA;    av_freep(&amp;(inp.buffer)[0]);&#xA;    free(inp.buffer);&#xA;    free(inp.linesize); &#xA;}&#xA;&#xA;&#xA;sdl_window init_windowBGR24_ffmpg(int width, int height){&#xA;&#xA; sdl_window wow;&#xA;    &#xA; if (SDL_Init(SDL_INIT_VIDEO) &lt; 0) {&#xA;    printf("Couldn&#x27;t initialize SDL in function: create_sdl_window(...)\n");&#xA;    exit(7);}&#xA;    &#xA; wow.window = SDL_CreateWindow("SDL_CreateTexture",&#xA;                        SDL_WINDOWPOS_UNDEFINED,&#xA;                        SDL_WINDOWPOS_UNDEFINED,&#xA;                        width, height,&#xA;                        SDL_WINDOW_RESIZABLE);&#xA;&#xA; wow.renderer = SDL_CreateRenderer(wow.window, -1, SDL_RENDERER_ACCELERATED);&#xA; wow.texture = SDL_CreateTexture(wow.renderer, SDL_PIXELFORMAT_BGR24, SDL_TEXTUREACCESS_STREAMING, width, height);&#xA; wow.width = width;&#xA; wow.height = height;&#xA; wow.pitch = width * 3;  //only true for 3 byte / 24bit packed formats like bgr24&#xA; wow.sdl_pxl_frmt = SDL_PIXELFORMAT_BGR24;&#xA; SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear"); &#xA; SDL_SetHint(SDL_HINT_RENDER_VSYNC, "enable"); &#xA; SDL_RenderSetLogicalSize(wow.renderer, wow.width, wow.height);&#xA; return wow;&#xA;}&#xA;&#xA;&#xA;int render_on_texture_update(sdl_window wow, uint8_t *data){&#xA;    &#xA;    if (SDL_UpdateTexture(wow.texture, NULL, data, wow.pitch)&lt; 0){&#xA;        printf("SDL_render_on_texture_update_failed: %s\n", SDL_GetError());&#xA;        return -1;&#xA;        }&#xA;    SDL_RenderClear(wow.renderer);&#xA;    SDL_RenderCopy(wow.renderer, wow.texture, NULL, NULL);&#xA;    SDL_RenderPresent(wow.renderer);&#xA;&#xA;    return 0; &#xA;}&#xA;&#xA;&#xA;void close_window(sdl_window wow){&#xA;    SDL_DestroyRenderer(wow.renderer);&#xA;    SDL_Quit();&#xA;}&#xA;&#xA;&#xA;&#xA;&#xA;int main(){&#xA;    int n, vid_error;&#xA;    long int time_per_frame_usec, duration_usec;&#xA;    vid v;&#xA;    sdl_window wow;&#xA;    struct timeval tval_start, tval_start1, tval_end, tval_duration;&#xA;    sws scale;&#xA;    SDL_Event event;&#xA;   &#xA;    vid_error = AVERROR(EAGAIN);&#xA;    v = cap_init_fl("mw_maze_test.mp4"); &#xA;    &#xA;    while(vid_error == AVERROR(EAGAIN)){&#xA;        vid_error =cap(v);}&#xA;        &#xA;    if(vid_error &lt; 0){&#xA;        printf("Could not read from Capture\n");&#xA;        cap_close(v);&#xA;        return 0;&#xA;        }&#xA;&#xA;    wow = init_windowBGR24_ffmpg((v.pCodecCtx)->width, (v.pCodecCtx)->height);&#xA;    scale = init_swsctx((v.pCodecCtx)->width, (v.pCodecCtx)->height, (v.pCodecCtx)->pix_fmt, 0, 0, AV_PIX_FMT_BGR24);&#xA;        &#xA;    time_per_frame_usec =  ((long int)((v.inc)->streams[v.videoStream]->avg_frame_rate.den) *  1000000 / (long int) ((v.inc)->streams[v.videoStream]->avg_frame_rate.num));&#xA;    &#xA;    printf("Time per frame: %ld\n", time_per_frame_usec);&#xA;    n = 0;&#xA;    &#xA;    gettimeofday(&amp;tval_start, NULL);&#xA;    gettimeofday(&amp;tval_start1, NULL);&#xA;    &#xA;    while ((vid_error =cap(v)) >= 0) {&#xA;                &#xA;                if (SDL_PollEvent(&amp;event) != 0) {&#xA;                        if (event.type == SDL_QUIT)&#xA;                        break;}&#xA;                    &#xA;                conv_pxlformat(scale, (v.pFrame)->data, (v.pFrame)->linesize, (v.pCodecCtx)->height);&#xA;                gettimeofday(&amp;tval_end, NULL);&#xA;                timersub(&amp;tval_end, &amp;tval_start, &amp;tval_duration);&#xA;                duration_usec = (long int)tval_duration.tv_sec * 1000000 &#x2B; (long int)tval_duration.tv_usec;&#xA;                &#xA;                while(duration_usec &lt; time_per_frame_usec) {&#xA;                gettimeofday(&amp;tval_end, NULL);&#xA;                timersub(&amp;tval_end, &amp;tval_start, &amp;tval_duration);&#xA;                duration_usec = (long int)tval_duration.tv_sec * 1000000 &#x2B; (long int)tval_duration.tv_usec;&#xA;                    }&#xA;                &#xA;                gettimeofday(&amp;tval_start, NULL);&#xA;                render_on_texture_update(wow, *(scale.buffer)); &#xA;                n&#x2B;&#x2B;;&#xA;        }&#xA;  &#xA;    gettimeofday(&amp;tval_end, NULL);&#xA;    timersub(&amp;tval_end, &amp;tval_start1, &amp;tval_duration);&#xA;    duration_usec = (long int)tval_duration.tv_sec * 1000000 &#x2B; (long int)tval_duration.tv_usec;&#xA;    &#xA;    printf("Total time and frames; %ld %i\n", duration_usec, n);&#xA;    &#xA;    if(vid_error == AVERROR(EAGAIN)){&#xA;                    printf("AVERROR(EAGAIN) occured\n)");&#xA;                    }   &#xA;                &#xA;    &#xA;    sws_freeContext(scale.ctx);&#xA;    free_sws(scale);&#xA;    close_window(wow);&#xA;    cap_close(v); &#xA;    return 0;   &#xA;}&#xA;&#xA;

    &#xA;

    the output is:&#xA;&#xA;Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;mw_maze_test.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : mp42&#xA;    minor_version   : 0&#xA;    compatible_brands: isommp42&#xA;    creation_time   : 2014-02-14T21:09:52.000000Z&#xA;  Duration: 00:01:32.90, start: 0.000000, bitrate: 347 kb/s&#xA;    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 384x288 [SAR 1:1 DAR 4:3], 249 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc (default)&#xA;    Metadata:&#xA;      handler_name    : VideoHandler&#xA;    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 96 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2014-02-14T21:09:53.000000Z&#xA;      handler_name    : IsoMedia File Produced by Google, 5-11-2011&#xA;Time per frame: 40000&#xA;Total time and frames; 252881576 6322&#xA;&#xA;&#xA;

    &#xA;

  • How to take screenshots of streamers using the Twitch API

    10 décembre 2020, par oo92

    My goal is to create a dataset of gameplays on Twitch using the API. How I want to do it is this :

    &#xA;

      &#xA;
    1. Get a list of live streams using the API.
    2. &#xA;

    3. Use streamlink and ffmpeg on Python to take the screenshots through the Stream source
    4. &#xA;

    &#xA;

    To get the streams, I have the following code thanks to a SO user :

    &#xA;

    from twitch import TwitchClient&#xA;&#xA;client = TwitchClient(client_id=&#x27;<my client="client">&#x27;)&#xA;streams = client.streams.get_live_streams(limit=100)&#xA;&#xA;print(streams)&#xA;</my>

    &#xA;

    The output is this. Its a lot larger, I just made it shorter... :

    &#xA;

    [{&#x27;id&#x27;: 40889579422, &#x27;game&#x27;: &#x27;Among Us&#x27;, &#x27;broadcast_platform&#x27;: &#x27;live&#x27;, &#x27;community_id&#x27;: &#x27;&#x27;, &#x27;community_ids&#x27;: [], &#x27;viewers&#x27;: 74594, &#x27;video_height&#x27;: 1080, &#x27;average_fps&#x27;: 60, &#x27;delay&#x27;: 0, &#x27;created_at&#x27;: datetime.datetime(2020, 12, 9, 23, 53, 34), &#x27;is_playlist&#x27;: False, &#x27;stream_type&#x27;: &#x27;live&#x27;, &#x27;preview&#x27;: {&#x27;small&#x27;: &#x27;https://static-cdn.jtvnw.net/previews-ttv/live_user_sykkuno-80x45.jpg&#x27;, &#x27;medium&#x27;: &#x27;https://static-cdn.jtvnw.net/previews-ttv/live_user_sykkuno-320x180.jpg&#x27;, &#x27;large&#x27;: &#x27;https://static-cdn.jtvnw.net/previews-ttv/live_user_sykkuno-640x360.jpg&#x27;, &#x27;template&#x27;: &#x27;https://static-cdn.jtvnw.net/previews-ttv/live_user_sykkuno-{width}x{height}.jpg&#x27;}, &#x27;channel&#x27;: {&#x27;mature&#x27;: False, &#x27;status&#x27;: &#x27;amongus at 4 !!&#x27;, &#x27;broadcaster_language&#x27;: &#x27;en&#x27;, &#x27;broadcaster_software&#x27;: &#x27;&#x27;, &#x27;display_name&#x27;: &#x27;Sykkuno&#x27;, &#x27;game&#x27;: &#x27;Among Us&#x27;, &#x27;language&#x27;: &#x27;en&#x27;, &#x27;id&#x27;: 26154978, &#x27;name&#x27;: &#x27;sykkuno&#x27;, &#x27;created_at&#x27;: datetime.datetime(2011, 11, 15, 1, 29, 29, 140794), &#x27;updated_at&#x27;: datetime.datetime(2020, 12, 10, 0, 35, 50, 916363), &#x27;partner&#x27;: True, &#x27;logo&#x27;: &#x27;https://static-cdn.jtvnw.net/jtv_user_pictures/sykkuno-profile_image-6ab1e70e07e29e9b-300x300.jpeg&#x27;, &#x27;video_banner&#x27;: &#x27;https://static-cdn.jtvnw.net/jtv_user_pictures/4b654ce5-58dc-4fa6-b77c-7250bb2d5269-channel_offline_image-1920x1080.png&#x27;, &#x27;profile_banner&#x27;: &#x27;https://static-cdn.jtvnw.net/jtv_user_pictures/1caee146-3323-4d45-9907-96c20c224d3e-profile_banner-480.png&#x27;, &#x27;profile_banner_background_color&#x27;: &#x27;&#x27;, &#x27;url&#x27;: &#x27;https://www.twitch.tv/sykkuno&#x27;, &#x27;views&#x27;: 23590965, &#x27;followers&#x27;: 1928724, &#x27;broadcaster_type&#x27;: &#x27;&#x27;, &#x27;description&#x27;: &#x27;Hi ! &#x27;, &#x27;private_video&#x27;: False, &#x27;privacy_options_enabled&#x27;: False}}, ... &#xA;

    &#xA;

    First, I want to know how I can iterate through the JSON to get the channel name using the id. I tried to do it on my own but it said that it isn't subscriptable.

    &#xA;

    Second, I have the following code that tries to use ffmpeg to get a screenshot of the stream through its source :

    &#xA;

    import streamlink, os&#xA;&#xA;# This code connects to the streamer&#x27;s source&#xA;# Get the Twitch API to work so you can add the streamer&#x27;s name at the end of the link&#xA;username = &#x27;Sykkuno&#x27;&#xA;streams = streamlink.streams(&#x27;http://twitch.tv/&#x27; &#x2B; username)&#xA;&#xA;# Stream source&#xA;stream = streams["best"].url&#xA;&#xA;# Directory where the screenshots will be saved&#xA;dir_path = os.getcwd() &#x2B; &#x27;/&#x27; &#x2B; username&#xA;&#xA;# number of streamers&#xA;streamers = 1&#xA;&#xA;os.system(&#x27;ffmpeg -i &#x27; &#x2B; stream &#x2B;&#x27; -r 0.5 -f image2 ${dir}/output_%09d.jpg&#x27;)&#xA;

    &#xA;

    But that is throwing the following error :

    &#xA;

    ffmpeg version 4.1.3-0ppa1~18.04 Copyright (c) 2000-2019 the FFmpeg developers&#xA;  built with gcc 7 (Ubuntu 7.3.0-27ubuntu1~18.04)&#xA;  configuration: --prefix=/usr --extra-version=&#x27;0ppa1~18.04&#x27; --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-nonfree --enable-libfdk-aac --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared&#xA;  libavutil      56. 22.100 / 56. 22.100&#xA;  libavcodec     58. 35.100 / 58. 35.100&#xA;  libavformat    58. 20.100 / 58. 20.100&#xA;  libavdevice    58.  5.100 / 58.  5.100&#xA;  libavfilter     7. 40.101 /  7. 40.101&#xA;  libavresample   4.  0.  0 /  4.  0.  0&#xA;  libswscale      5.  3.100 /  5.  3.100&#xA;  libswresample   3.  3.100 /  3.  3.100&#xA;  libpostproc    55.  3.100 / 55.  3.100&#xA;[hls,applehttp @ 0x557212854940] Opening &#x27;https://video-edge-c2a360.yto01.abs.hls.ttvnw.net/v1/segment/CuAErHgNDEVK3cqjkRZLcz4El99YD2ZSy9tgtjc3ZTrPuN4584-GY3DKYO3MFCBt9M3v8_7IfHAlLvHeUn2wq4d-VC7u4Zv2-k1Bee9IPmIXbFQLZFKrYiT98OTzFMDaElsEZ9Sr4MXz6FoAC1yXhhZ0MYahZVnZa1Tuqnn217nN_rN8wr7kdScBIir_Uo1s2C_I8_54mi2uzdgxB9AYj0a0kG2UtdPkUVA6Qc7XIZ0nUhEeObEf80N0uW9ZU6WHpO3V6G9RD0VkmwUexDWk9MaLy1NJuvLSzRaMfOmKxhrzn3UDoY4CrQN11KOnHYCiCOfvhZmMKzSqtiA8YP0Q9iS03eZZhPQ3WxBHWhd6VeZ0btNeeoudGX73EBIj4ujZnKWKfPiN8K_HLj5FZWqQ5m_4Q1llQlnSAfmhzXR9PHAkz8nxRVcFR-tFokGzFEfkZGHngPNz9boLmo4KHx6404rocPUcXbTHkYsWXZwFC356AhfrNn6x0JYHGfcDpRsEFebLQljEpCyhnNOHFEf9b7Ipeiy521cCupzoEz1uMrzW77h9FJwn0GwvY3jp2KwRXJMvArYwiUHccBmfW7ZDLO9vH7eJGUnAzoy586KMSPLVeLxWMWRDfKkAcI8vYXOIuxNb_MZKm2O_dcoFrDDta5TZn-MLjFquT47P9NbXxlTTJfimlYyMG17SPoW3KJVtAJmjoj0GZ1ehftLJWz1Qgd8zmg40u4g8fz867eCHW_Tiv65yd6qJZD-_bD3G916fm3KeA9bPyhalTD99CWhQL7f0apCfX_6IiQElgPT6kOrFI-ISEG4GdhIpFi4ubzSx29pm7H4aDIXx6BAI5ziHVMPbrg.ts&#x27; for reading&#xA;[hls,applehttp @ 0x557212854940] Opening &#x27;https://video-edge-c2a360.yto01.abs.hls.ttvnw.net/v1/segment/CuIECWLarz2I5hNCtGLSTDXbCIgahI91KOHXVmPHddzZediyiVbcicZpGakO99CJp1cK_6OnmOKBzZ3sn3KogNyPVRqSy32IpanlyPPUTz23TojfR5DTmJa3zampOzVMfETvvPEpj58-kGhQeQQGtK1zLV2h465RElCLkmc7SeWbXEZ5j6IQ38OVFZ0vdcMHVTNPtJaY7509bE196-9-5YYFiET_-kdkS2X6_lhVQBZrq45PBxApTzeLkDx9ZtGQx78dLr_tZepww_uVnJTwxI_TA3tU8z5_w8ml6rh0GK1W6lTlvuDkPKAwIDLvG736MtbPGz9cFPoRAFQxD3QSwAM-bO1grvWlNsOUDUYLXLNjuejmz8xmRpeE0pqJYxUboRZpxrPXTi52HcX8lpGT4Lx2z6hJcoi9npQttK58HDSHQ3cYH3rlNsYV_RlZ3F-u-fZSn8Em67-vAYeXAMaBe9xxv0Zu2n1TrdPICMyGmk-VgLK788IeDhxqM441GONGLxo6AF8RE5_OawTf9n_MVzImsX4LMn0oN8e8w6mjk7YDuNdA4mEl99Erg8xMdX6Q3fDYTdStaC-zQwXgMctfGpIsUpp91BtRBPMynFCxZ8fZB7NvGFNZTYWDvCZjisiwzs0N1pDdDM_Fkj3i46_Ou105z348PLHRA28Dt1qgn_NjzwRNoaowFx7PxQ-X2zRpAhwNcqaTOHYh5NYZHToVE16WiOe9HzVs_I_3Wqu44bypEsGrhxYhgXSGfvO757iTbErZHmkidsBF2BET5j3JeIifr4fJooalAKc_5uiSPMCGSTtV9hIQX5mQWJudg9UsMRp1AWVrnBoMQPAhy1UwBDtAOrBs.ts&#x27; for reading&#xA;Input #0, hls,applehttp, from &#x27;https://video-weaver.yto01.hls.ttvnw.net/v1/playlist/CvADco9ZO_szpL7RVLVI3U6zl4IMo2uaUBvZTWAyEOKETN-SxI3m3hLLxpmCfz06rlyCGCPimEbk28kKPSbVYtMThiZFRtLxnrdpLr5DWBQwbpIStPQwMetU4Z04Mkm3nEWplL8hpn69Cmd_eWSdI1yHubK_sRL-n1ml5akAEWWGkS0OgVRQTTsYv4RpkbeWc8wrr3DsDBDfyrxciGSZevnStZOLwg-tNuNu3VNugLigNG1HMsNdxoJGO6wLyO-6FL5EQidOiSw2THSibAvADAWMVOxNX2z39d-nJwbVprbWFnox_lDlh-y88uhjj_MpU6OwkXP9vgrBDEmKjtRbYsIN5N94-8pDFEB3yIYk10vUiuod1yfqztVCqWo5m9r48uINP1CD-Bwgybo6K7Oko-TUjMj43GqAu0mmPtkgPFO69LpQQMifZTn_XbVQ5UUfoCwyl-ljObfRE51aCvZP_dOTsUyqi_JRE8h-C3306aW1ISXwCs3YpnjDxJv6yKyWTktBvsN5NWMVzJg-_-MAtTmoy-w2ppbbOozLzyrGF4zfCetaHLmHtbsKe1Ed1nndJg9b6T7v-87ExrI0eQwRjH3gmBTgqu_peS5oQGBaDOe4QSGMNFgf8lQfuqvFH-miXgpk8RytdorzT7wB05iX7c3bhBIQ3FvvjNIal3IgvyxKatZs4BoMW_P_CuyZOUJs2_Yr.m3u8&#x27;:&#xA;  Duration: N/A, start: 60.000000, bitrate: N/A&#xA;  Program 0 &#xA;    Metadata:&#xA;      variant_bitrate : 0&#xA;    Stream #0:0: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp&#xA;    Metadata:&#xA;      variant_bitrate : 0&#xA;    Stream #0:1: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(tv, unknown/bt709/unknown), 1920x1080, 29.97 tbr, 90k tbn, 2k tbc&#xA;    Metadata:&#xA;      variant_bitrate : 0&#xA;    Stream #0:2: Data: timed_id3 (ID3  / 0x20334449)&#xA;    Metadata:&#xA;      variant_bitrate : 0&#xA;Stream mapping:&#xA;  Stream #0:1 -> #0:0 (h264 (native) -> mjpeg (native))&#xA;Press [q] to stop, [?] for help&#xA;[swscaler @ 0x557213e262c0] deprecated pixel format used, make sure you did set range correctly&#xA;Output #0, image2, to &#x27;/output_%09d.jpg&#x27;:&#xA;  Metadata:&#xA;    encoder         : Lavf58.20.100&#xA;    Stream #0:0: Video: mjpeg, yuvj420p(pc), 1920x1080, q=2-31, 200 kb/s, 0.50 fps, 0.50 tbn, 0.50 tbc&#xA;    Metadata:&#xA;      variant_bitrate : 0&#xA;      encoder         : Lavc58.35.100 mjpeg&#xA;    Side data:&#xA;      cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1&#xA;[image2 @ 0x557213012040] Could not open file : /output_000000001.jpg&#xA;av_interleaved_write_frame(): Input/output error&#xA;frame=    1 fps=0.0 q=7.5 Lsize=N/A time=00:00:02.00 bitrate=N/A speed=27.7x    &#xA;video:46kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown&#xA;Conversion failed!&#xA;

    &#xA;

  • ffmpeg windows : how to run ffmpeg -i input -filter:v frei0r=pixeliz0r=0.02:0.02 output

    7 octobre 2015, par yarek

    I run ffmpeg on Windows.

    I try to run

    ffmpeg -i input.avi -filter:v frei0r=pixeliz0r=0.02:0.02 ouput.avi

    I have this error :

    No such filter: 'frei0r
    Error opening filters!

    When I run ffmpeg.exe I got :

    ffmpeg version git-N-30610-g1929807, Copyright (c) 2000-2011 the FFmpeg developers
     built on Jun  7 2011 15:55:06 with gcc 4.5.3
     configuration: --enable-gpl --enable-version3 --enable-memalign-hack --enable-
    runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libo
    pencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --
    enable-libmp3lame --enable-libopenjpeg --enable-librtmp --enable-libschroedinger
    --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enabl
    e-libx264 --enable-libxavs --enable-libxvid --enable-zlib --disable-outdev=sdl -
    -pkg-config=pkg-config

    Note the --enable-frei0r above.

    Any idea where I can get the ffmpeg for windows with frei0r enabled and working ?