Recherche avancée

Médias (2)

Mot : - Tags -/plugins

Autres articles (86)

  • Mise à jour de la version 0.1 vers 0.2

    24 juin 2013, par

    Explications des différents changements notables lors du passage de la version 0.1 de MediaSPIP à la version 0.3. Quelles sont les nouveautés
    Au niveau des dépendances logicielles Utilisation des dernières versions de FFMpeg (>= v1.2.1) ; Installation des dépendances pour Smush ; Installation de MediaInfo et FFprobe pour la récupération des métadonnées ; On n’utilise plus ffmpeg2theora ; On n’installe plus flvtool2 au profit de flvtool++ ; On n’installe plus ffmpeg-php qui n’est plus maintenu au (...)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

  • Ecrire une actualité

    21 juin 2013, par

    Présentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
    Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
    Vous pouvez personnaliser le formulaire de création d’une actualité.
    Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...)

Sur d’autres sites (11995)

  • How to use FFmpeg API overlay filter in C / C++

    23 février 2021, par yildizmehmet

    I have a C++ project which creates 7/24 WebTV like RTMP stream and allows operations like changing current content on runtime, seeking content, looping through a playlist which is constructed by a json array, also supports changing whole playlist on runtime.

    



    Currently i am reading H264 and AAC encoded packets from mp4 files then sending them to destination RTMP server after adjusting their PTS & DTS values without any encoding or decoding.

    



    But i want to apply overlay images to raw frames using FFmpeg "overlay" filter after decoding H264 packets. I looked at sample which came with FFmpeg examples ;

    



    #define _XOPEN_SOURCE 600 /* for usleep */&#xA;#include &#xA;#include &#xA;#include &#xA;&#xA;#include <libavcodec></libavcodec>avcodec.h>&#xA;#include <libavformat></libavformat>avformat.h>&#xA;#include <libavfilter></libavfilter>buffersink.h>&#xA;#include <libavfilter></libavfilter>buffersrc.h>&#xA;#include <libavutil></libavutil>opt.h>&#xA;&#xA;const char *filter_descr = "scale=78:24,transpose=cclock";&#xA;/* other way:&#xA;   scale=78:24 [scl]; [scl] transpose=cclock // assumes "[in]" and "[out]" to be input output pads respectively&#xA; */&#xA;&#xA;static AVFormatContext *fmt_ctx;&#xA;static AVCodecContext *dec_ctx;&#xA;AVFilterContext *buffersink_ctx;&#xA;AVFilterContext *buffersrc_ctx;&#xA;AVFilterGraph *filter_graph;&#xA;static int video_stream_index = -1;&#xA;static int64_t last_pts = AV_NOPTS_VALUE;&#xA;&#xA;static int open_input_file(const char *filename)&#xA;{&#xA;    int ret;&#xA;    AVCodec *dec;&#xA;&#xA;    if ((ret = avformat_open_input(&amp;fmt_ctx, filename, NULL, NULL)) &lt; 0) {&#xA;        av_log(NULL, AV_LOG_ERROR, "Cannot open input file\n");&#xA;        return ret;&#xA;    }&#xA;&#xA;    if ((ret = avformat_find_stream_info(fmt_ctx, NULL)) &lt; 0) {&#xA;        av_log(NULL, AV_LOG_ERROR, "Cannot find stream information\n");&#xA;        return ret;&#xA;    }&#xA;&#xA;    /* select the video stream */&#xA;    ret = av_find_best_stream(fmt_ctx, AVMEDIA_TYPE_VIDEO, -1, -1, &amp;dec, 0);&#xA;    if (ret &lt; 0) {&#xA;        av_log(NULL, AV_LOG_ERROR, "Cannot find a video stream in the input file\n");&#xA;        return ret;&#xA;    }&#xA;    video_stream_index = ret;&#xA;&#xA;    /* create decoding context */&#xA;    dec_ctx = avcodec_alloc_context3(dec);&#xA;    if (!dec_ctx)&#xA;        return AVERROR(ENOMEM);&#xA;    avcodec_parameters_to_context(dec_ctx, fmt_ctx->streams[video_stream_index]->codecpar);&#xA;&#xA;    /* init the video decoder */&#xA;    if ((ret = avcodec_open2(dec_ctx, dec, NULL)) &lt; 0) {&#xA;        av_log(NULL, AV_LOG_ERROR, "Cannot open video decoder\n");&#xA;        return ret;&#xA;    }&#xA;&#xA;    return 0;&#xA;}&#xA;&#xA;static int init_filters(const char *filters_descr)&#xA;{&#xA;    char args[512];&#xA;    int ret = 0;&#xA;    const AVFilter *buffersrc  = avfilter_get_by_name("buffer");&#xA;    const AVFilter *buffersink = avfilter_get_by_name("buffersink");&#xA;    AVFilterInOut *outputs = avfilter_inout_alloc();&#xA;    AVFilterInOut *inputs  = avfilter_inout_alloc();&#xA;    AVRational time_base = fmt_ctx->streams[video_stream_index]->time_base;&#xA;    enum AVPixelFormat pix_fmts[] = { AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE };&#xA;&#xA;    filter_graph = avfilter_graph_alloc();&#xA;    if (!outputs || !inputs || !filter_graph) {&#xA;        ret = AVERROR(ENOMEM);&#xA;        goto end;&#xA;    }&#xA;&#xA;    /* buffer video source: the decoded frames from the decoder will be inserted here. */&#xA;    snprintf(args, sizeof(args),&#xA;            "video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:pixel_aspect=%d/%d",&#xA;            dec_ctx->width, dec_ctx->height, dec_ctx->pix_fmt,&#xA;            time_base.num, time_base.den,&#xA;            dec_ctx->sample_aspect_ratio.num, dec_ctx->sample_aspect_ratio.den);&#xA;&#xA;    ret = avfilter_graph_create_filter(&amp;buffersrc_ctx, buffersrc, "in",&#xA;                                       args, NULL, filter_graph);&#xA;    if (ret &lt; 0) {&#xA;        av_log(NULL, AV_LOG_ERROR, "Cannot create buffer source\n");&#xA;        goto end;&#xA;    }&#xA;&#xA;    /* buffer video sink: to terminate the filter chain. */&#xA;    ret = avfilter_graph_create_filter(&amp;buffersink_ctx, buffersink, "out",&#xA;                                       NULL, NULL, filter_graph);&#xA;    if (ret &lt; 0) {&#xA;        av_log(NULL, AV_LOG_ERROR, "Cannot create buffer sink\n");&#xA;        goto end;&#xA;    }&#xA;&#xA;    ret = av_opt_set_int_list(buffersink_ctx, "pix_fmts", pix_fmts,&#xA;                              AV_PIX_FMT_NONE, AV_OPT_SEARCH_CHILDREN);&#xA;    if (ret &lt; 0) {&#xA;        av_log(NULL, AV_LOG_ERROR, "Cannot set output pixel format\n");&#xA;        goto end;&#xA;    }&#xA;&#xA;    /*&#xA;     * Set the endpoints for the filter graph. The filter_graph will&#xA;     * be linked to the graph described by filters_descr.&#xA;     */&#xA;&#xA;    /*&#xA;     * The buffer source output must be connected to the input pad of&#xA;     * the first filter described by filters_descr; since the first&#xA;     * filter input label is not specified, it is set to "in" by&#xA;     * default.&#xA;     */&#xA;    outputs->name       = av_strdup("in");&#xA;    outputs->filter_ctx = buffersrc_ctx;&#xA;    outputs->pad_idx    = 0;&#xA;    outputs->next       = NULL;&#xA;&#xA;    /*&#xA;     * The buffer sink input must be connected to the output pad of&#xA;     * the last filter described by filters_descr; since the last&#xA;     * filter output label is not specified, it is set to "out" by&#xA;     * default.&#xA;     */&#xA;    inputs->name       = av_strdup("out");&#xA;    inputs->filter_ctx = buffersink_ctx;&#xA;    inputs->pad_idx    = 0;&#xA;    inputs->next       = NULL;&#xA;&#xA;    if ((ret = avfilter_graph_parse_ptr(filter_graph, filters_descr,&#xA;                                    &amp;inputs, &amp;outputs, NULL)) &lt; 0)&#xA;        goto end;&#xA;&#xA;    if ((ret = avfilter_graph_config(filter_graph, NULL)) &lt; 0)&#xA;        goto end;&#xA;&#xA;end:&#xA;    avfilter_inout_free(&amp;inputs);&#xA;    avfilter_inout_free(&amp;outputs);&#xA;&#xA;    return ret;&#xA;}&#xA;&#xA;static void display_frame(const AVFrame *frame, AVRational time_base)&#xA;{&#xA;    int x, y;&#xA;    uint8_t *p0, *p;&#xA;    int64_t delay;&#xA;&#xA;    if (frame->pts != AV_NOPTS_VALUE) {&#xA;        if (last_pts != AV_NOPTS_VALUE) {&#xA;            /* sleep roughly the right amount of time;&#xA;             * usleep is in microseconds, just like AV_TIME_BASE. */&#xA;            delay = av_rescale_q(frame->pts - last_pts,&#xA;                                 time_base, AV_TIME_BASE_Q);&#xA;            if (delay > 0 &amp;&amp; delay &lt; 1000000)&#xA;                usleep(delay);&#xA;        }&#xA;        last_pts = frame->pts;&#xA;    }&#xA;&#xA;    /* Trivial ASCII grayscale display. */&#xA;    p0 = frame->data[0];&#xA;    puts("\033c");&#xA;    for (y = 0; y &lt; frame->height; y&#x2B;&#x2B;) {&#xA;        p = p0;&#xA;        for (x = 0; x &lt; frame->width; x&#x2B;&#x2B;)&#xA;            putchar(" .-&#x2B;#"[*(p&#x2B;&#x2B;) / 52]);&#xA;        putchar(&#x27;\n&#x27;);&#xA;        p0 &#x2B;= frame->linesize[0];&#xA;    }&#xA;    fflush(stdout);&#xA;}&#xA;&#xA;int main(int argc, char **argv)&#xA;{&#xA;    int ret;&#xA;    AVPacket packet;&#xA;    AVFrame *frame;&#xA;    AVFrame *filt_frame;&#xA;&#xA;    if (argc != 2) {&#xA;        fprintf(stderr, "Usage: %s file\n", argv[0]);&#xA;        exit(1);&#xA;    }&#xA;&#xA;    frame = av_frame_alloc();&#xA;    filt_frame = av_frame_alloc();&#xA;    if (!frame || !filt_frame) {&#xA;        perror("Could not allocate frame");&#xA;        exit(1);&#xA;    }&#xA;&#xA;    if ((ret = open_input_file(argv[1])) &lt; 0)&#xA;        goto end;&#xA;    if ((ret = init_filters(filter_descr)) &lt; 0)&#xA;        goto end;&#xA;&#xA;    /* read all packets */&#xA;    while (1) {&#xA;        if ((ret = av_read_frame(fmt_ctx, &amp;packet)) &lt; 0)&#xA;            break;&#xA;&#xA;        if (packet.stream_index == video_stream_index) {&#xA;            ret = avcodec_send_packet(dec_ctx, &amp;packet);&#xA;            if (ret &lt; 0) {&#xA;                av_log(NULL, AV_LOG_ERROR, "Error while sending a packet to the decoder\n");&#xA;                break;&#xA;            }&#xA;&#xA;            while (ret >= 0) {&#xA;                ret = avcodec_receive_frame(dec_ctx, frame);&#xA;                if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) {&#xA;                    break;&#xA;                } else if (ret &lt; 0) {&#xA;                    av_log(NULL, AV_LOG_ERROR, "Error while receiving a frame from the decoder\n");&#xA;                    goto end;&#xA;                }&#xA;&#xA;                frame->pts = frame->best_effort_timestamp;&#xA;&#xA;                /* push the decoded frame into the filtergraph */&#xA;                if (av_buffersrc_add_frame_flags(buffersrc_ctx, frame, AV_BUFFERSRC_FLAG_KEEP_REF) &lt; 0) {&#xA;                    av_log(NULL, AV_LOG_ERROR, "Error while feeding the filtergraph\n");&#xA;                    break;&#xA;                }&#xA;&#xA;                /* pull filtered frames from the filtergraph */&#xA;                while (1) {&#xA;                    ret = av_buffersink_get_frame(buffersink_ctx, filt_frame);&#xA;                    if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)&#xA;                        break;&#xA;                    if (ret &lt; 0)&#xA;                        goto end;&#xA;                    display_frame(filt_frame, buffersink_ctx->inputs[0]->time_base);&#xA;                    av_frame_unref(filt_frame);&#xA;                }&#xA;                av_frame_unref(frame);&#xA;            }&#xA;        }&#xA;        av_packet_unref(&amp;packet);&#xA;    }&#xA;end:&#xA;    avfilter_graph_free(&amp;filter_graph);&#xA;    avcodec_free_context(&amp;dec_ctx);&#xA;    avformat_close_input(&amp;fmt_ctx);&#xA;    av_frame_free(&amp;frame);&#xA;    av_frame_free(&amp;filt_frame);&#xA;&#xA;    if (ret &lt; 0 &amp;&amp; ret != AVERROR_EOF) {&#xA;        fprintf(stderr, "Error occurred: %s\n", av_err2str(ret));&#xA;        exit(1);&#xA;    }&#xA;&#xA;    exit(0);&#xA;}&#xA;

    &#xA;&#xA;

    That sample uses these filters ;

    &#xA;&#xA;

    &#xA;

    "scale=78:24,transpose=cclock"

    &#xA;

    &#xA;&#xA;

    I compiled and run it with a sample video file but it just outputs fancy characters to console, the code block given below is responsible for this ;

    &#xA;&#xA;

       /* Trivial ASCII grayscale display. */&#xA;    p0 = frame->data[0];&#xA;    puts("\033c");&#xA;    for (y = 0; y &lt; frame->height; y&#x2B;&#x2B;) {&#xA;        p = p0;&#xA;        for (x = 0; x &lt; frame->width; x&#x2B;&#x2B;)&#xA;            putchar(" .-&#x2B;#"[*(p&#x2B;&#x2B;) / 52]);&#xA;        putchar(&#x27;\n&#x27;);&#xA;        p0 &#x2B;= frame->linesize[0];&#xA;    }&#xA;    fflush(stdout);&#xA;

    &#xA;&#xA;

    I have no issues with Encoding & Decoding, i just don't know how to apply "overlay" filter. Are there any tutorials out there demonstrate how to use "overlay" filter ?

    &#xA;

  • Make ffmpeg read m3u8 from a specified chunk instead of beginning

    5 mars 2019, par Wonson

    I have a m3u8 contains many chunks of video, how can I make ffmpeg read from, for example, the 13th element in the playlist instead of beginning ? (Not by time like EXT-X-START)

    I tried #EXT-X-MEDIA-SEQUENCE:12, but ffmpeg still starts from the first one

  • ffmpeg video capture on EC2 unstable

    6 mars 2019, par Sauraus

    I am trying to capture a Twitch video feed on a c5m.xlarge instance on EC2 in us-east2 and ffmpeg appears to drop the connection constantly, I say appears because the error messages below sooner suggest that Twitch might be dropping the connection, but I am not sure.

    I use streamlink --stream-url https://www.twitch.tv/loltyler1 best to get the URL that is passed to ffmpeg.

    The command used to capture the video feed :

    ffmpeg -i https://video-weaver.sea01.hls.ttvnw.net/v1/playlist/CsUDZUnwghPhNM5_XBj0nSEHs88T94bkhSAr-I9_sto9JTnAbBEr-ddFZSGj6VlIh5mVyieGDjzVpOmqX66tr0vRKqLTsL6A4422LjX_Np4fZBmlCDwzns9XldQxLHM22Q04NxNaIOpNuYqawZOt8UbG_u1vIEX_BAN08k1RJKJpot5X4RW3VRgS9GvVJq_IFqpdALQ9avacbeSVWNhEDuB9SAyz_7FORgYD34oYcL8pzuF-n_cAQlAJoWbW8IHUt8vkBOyP84wy9JU2cGrofs2sJkBKkRGju7cE0AfU0lMoid1l3pFauurhh9PjvqSF3a2J1A_55FxyNlogl8LydSot92F0_h4cd-DXtnspnIl4nmaBCMHnHzz3QXGZPWWtA6Rg3fOhazRBBVSucupRLY8PVaIL3bFDd06qk6Y3-4MMPnMsFDtgHSnwMAOnoho_jc4CP6UA_QZn-j0f870E3imS0HCKVZAz_B98is0wggVCZRh0tgITVYvsc-dPOEMLvigEkTsI-W4zhQfEqFQqeFuuUysaQtYh6Ttglj4NrNWuNt7AQsLn_t1RwEhfj1V2kiNmUbYX-e54S4mhN88y7-9nY9puHAZvEhBvZVjUTEp1T-ti77sazwRDGgw8qlySyJcjWsFi8GQ.m3u8 loltyler1.mp4

    The video capture usually starts off fine with no ’real’ issues except these messages that appear to be warnings, but they are indicative of things to come a few seconds into the video feed.

    [https @ 0x56435e25b280] Opening 'https://video-edge-7e9f50.sea01.abs.hls.ttvnw.net/v1/segment/CtgD0IuBaX0KngWA4Qz4kXrmxzo2kRAdfaVhZq44KD0gPkexhnj8dlRTx_wx6gtEOX8s9L7d8YP4skGp0A7iwQlT7rKD3aOZC44uNe3jRUJwcwYUq4Tzmr32Ekl7LhqEJa3hRX8ETS9UAIpzesPp4nTr3s-APiBYPOFhVbUaMRxkQdayCrk-hvKoSo6bPOzCaXUtxIm8uUpRwhPTf1JPkljvvEgSkJe3UwIKPQk-S0flg_Osv5fywln84yYOeSuwV44zvSl7ZHeymI8sb_XC6SsPqa2zFCJXAyJ48Lqxi0MpGDopNuiCx2NU4UXlTQpD5CNOh8oTTDCrc9z9XUgSXQEcDOr-RV1VRiSC_qgN-hMQsKWqxEwKuzHjoy05oAoAMWLkCFN7QkvmJ4hdupKcxEfnHXjcOWCZEEjJd6k0zvN2j9brV8V1whuj_j1wXmV11QuxX1rYCyRvj5O8iSCwURvexD9EFspvqB2utBlGSu_scglnTmTOYH9oQ8BW7P2d6xCTrmr53hLDOPg_i-2tjUl99r0_juRV6I87JXzx3RKVEQ1uPUnqQ0PRrcooUs_eNiTWqJFknmuhqkzC2chdUxEyz3e2cbNPhdH-quoQ-SVDr_ynTTr7qRvFRhIQrV6JqeW1ob8GZo1xu1HnHxoMlFRfZNU-nF4nh7pW.ts' for reading
    [https @ 0x56435f1e5140] Opening 'https://video-weaver.sea01.hls.ttvnw.net/v1/playlist/CsUDZUnwghPhNM5_XBj0nSEHs88T94bkhSAr-I9_sto9JTnAbBEr-ddFZSGj6VlIh5mVyieGDjzVpOmqX66tr0vRKqLTsL6A4422LjX_Np4fZBmlCDwzns9XldQxLHM22Q04NxNaIOpNuYqawZOt8UbG_u1vIEX_BAN08k1RJKJpot5X4RW3VRgS9GvVJq_IFqpdALQ9avacbeSVWNhEDuB9SAyz_7FORgYD34oYcL8pzuF-n_cAQlAJoWbW8IHUt8vkBOyP84wy9JU2cGrofs2sJkBKkRGju7cE0AfU0lMoid1l3pFauurhh9PjvqSF3a2J1A_55FxyNlogl8LydSot92F0_h4cd-DXtnspnIl4nmaBCMHnHzz3QXGZPWWtA6Rg3fOhazRBBVSucupRLY8PVaIL3bFDd06qk6Y3-4MMPnMsFDtgHSnwMAOnoho_jc4CP6UA_QZn-j0f870E3imS0HCKVZAz_B98is0wggVCZRh0tgITVYvsc-dPOEMLvigEkTsI-W4zhQfEqFQqeFuuUysaQtYh6Ttglj4NrNWuNt7AQsLn_t1RwEhfj1V2kiNmUbYX-e54S4mhN88y7-9nY9puHAZvEhBvZVjUTEp1T-ti77sazwRDGgw8qlySyJcjWsFi8GQ.m3u8' for reading
    [https @ 0x56435e535a40] Opening 'https://video-edge-7e9f50.sea01.abs.hls.ttvnw.net/v1/segment/CtgDYNjRmCnz46MfkO5atG9SLt6OSrte1ttcB-cARNehUelN7_S_Cpe9SxpmOKFxjhMx8KFtnwXD8cErLMEnCDRetrCg2fGb_4lYxUvX1UkeKSxjthPPRxk0_dYxYBAltPM45O3Jo7w22YAx_hJYN3u6oJajb2oIBbyHjL3d6CCA3wqVMV8I5wkgyyIe3jlrp1Rm1kx5450AutYftn3XJ6H5W0Tz7zQttEWkiVnNrUKi1o9wusY9kA8nNzdmvLJh21MQG_i7hDgPTTwUFAqZY951IHoVDJG7eNdRNuGJAhsajblJeH_SMVOKoybXm2USRmAGeQlPejc3zzz2Z8VUtGt12a351j99B7CfLlzwr-AMWFxm7p5T9y5-JFQOqMBLyaY8rMXK5qXLmxO5XaPSFNFuTTMtdkV6AGhlKGQIwn8MdZpbpailiaBiO0KAeeuU6yaeDD5e2e1Zkq0UIL5D2WDSHyeOI2Z62BRvGszMMwrhkDHvMMHeWgUYG5kuC6NnrPgHwakRxvolNQ2yc1SMh7l77ZmeRLJ7u2ApPpcM0FQHpe7wZGaGk0v0qxAdGr4W_9aCcd0pFj2D4Tl1PTV6426Xo6x_CBmq53ZsI6yDtFQbufkSHaEcV603khIQPXJ7GXwpji_dXvRvCCoNxRoMl5n8JhjrodimpvSO.ts' for reading
    [https @ 0x56435f1e5140] Opening 'https://video-weaver.sea01.hls.ttvnw.net/v1/playlist/CsUDZUnwghPhNM5_XBj0nSEHs88T94bkhSAr-I9_sto9JTnAbBEr-ddFZSGj6VlIh5mVyieGDjzVpOmqX66tr0vRKqLTsL6A4422LjX_Np4fZBmlCDwzns9XldQxLHM22Q04NxNaIOpNuYqawZOt8UbG_u1vIEX_BAN08k1RJKJpot5X4RW3VRgS9GvVJq_IFqpdALQ9avacbeSVWNhEDuB9SAyz_7FORgYD34oYcL8pzuF-n_cAQlAJoWbW8IHUt8vkBOyP84wy9JU2cGrofs2sJkBKkRGju7cE0AfU0lMoid1l3pFauurhh9PjvqSF3a2J1A_55FxyNlogl8LydSot92F0_h4cd-DXtnspnIl4nmaBCMHnHzz3QXGZPWWtA6Rg3fOhazRBBVSucupRLY8PVaIL3bFDd06qk6Y3-4MMPnMsFDtgHSnwMAOnoho_jc4CP6UA_QZn-j0f870E3imS0HCKVZAz_B98is0wggVCZRh0tgITVYvsc-dPOEMLvigEkTsI-W4zhQfEqFQqeFuuUysaQtYh6Ttglj4NrNWuNt7AQsLn_t1RwEhfj1V2kiNmUbYX-e54S4mhN88y7-9nY9puHAZvEhBvZVjUTEp1T-ti77sazwRDGgw8qlySyJcjWsFi8GQ.m3u8' for reading

    However at some point the messages change and become this :

    [https @ 0x56435e8cb600] Opening 'https://video-weaver.sea01.hls.ttvnw.net/v1/playlist/CsUDZUnwghPhNM5_XBj0nSEHs88T94bkhSAr-I9_sto9JTnAbBEr-ddFZSGj6VlIh5mVyieGDjzVpOmqX66tr0vRKqLTsL6A4422LjX_Np4fZBmlCDwzns9XldQxLHM22Q04NxNaIOpNuYqawZOt8UbG_u1vIEX_BAN08k1RJKJpot5X4RW3VRgS9GvVJq_IFqpdALQ9avacbeSVWNhEDuB9SAyz_7FORgYD34oYcL8pzuF-n_cAQlAJoWbW8IHUt8vkBOyP84wy9JU2cGrofs2sJkBKkRGju7cE0AfU0lMoid1l3pFauurhh9PjvqSF3a2J1A_55FxyNlogl8LydSot92F0_h4cd-DXtnspnIl4nmaBCMHnHzz3QXGZPWWtA6Rg3fOhazRBBVSucupRLY8PVaIL3bFDd06qk6Y3-4MMPnMsFDtgHSnwMAOnoho_jc4CP6UA_QZn-j0f870E3imS0HCKVZAz_B98is0wggVCZRh0tgITVYvsc-dPOEMLvigEkTsI-W4zhQfEqFQqeFuuUysaQtYh6Ttglj4NrNWuNt7AQsLn_t1RwEhfj1V2kiNmUbYX-e54S4mhN88y7-9nY9puHAZvEhBvZVjUTEp1T-ti77sazwRDGgw8qlySyJcjWsFi8GQ.m3u8' for reading
    skipping 4 segments ahead, expired from playlists
    [https @ 0x56435e25b280] Opening 'https://video-edge-7e9f50.sea01.abs.hls.ttvnw.net/v1/segment/CtgD4jOVMiZCXMRvYDnvx413PUrKvGjTAlkLSIvxdwWGjGbeNV46-mCGgCz-2VRMYfI9UVCSIIsPQX2fX-J6RKTiyvquS7KJ1T0Kzx6Ywc65RycyrurTJTC4q-mCmJZoPLEYy0oBnRVLGiocSCdTadZgxWAyQjw2LwsforSDQ8JqSTWqCEKA6ShcAzHatXrAqcFMQp_LTPgPR8YI_xPzCsYAapN2-9fCv0ZHwfX9KS_Urx2Lpb6BXyET-3hLfyCg00byC7m6LQ071R2Z42MLswfUecN77bVZ2AUTHJMsxH4WmUH_efXqH_kXQAlOI3JBEtE5soZZ5fCW0FwIFXLGD3sKOQIBkVB1Jc4QN1A79JqoD-9_xfEThskwZ77XaP2K6n_ZqIJx7ARz-pW9QXOKYlDq6ajWSXM2RwzNyTR2nHYYZxbAG_tEtd-t_HG4cLmPIEen42wfZ52L-THwgnvyGTAwuciITgp1bEvk_C3BDlPf3CEELq31AyErVLMMDKnW7bDRGMm6g-RRONHe1oYLHPJhzIArOGW9mRWlz1kRnqNJqo34Wm5d2Lz0SOZ35S7mqh70nVdh1Pq8ZYOLAuiGyFW8qpV7mYDqUlNOa6pxbDekNAEtZkpgSVNgIBIQQ1-TMuTd4S303K2b13rF_xoMhxGulZ-bMF_a2zMD.ts' for reading
    [hls,applehttp @ 0x56435e2569c0] Opening 'https://video-edge-7e9f50.sea01.abs.hls.ttvnw.net/v1/segment/CtgD4jOVMiZCXMRvYDnvx413PUrKvGjTAlkLSIvxdwWGjGbeNV46-mCGgCz-2VRMYfI9UVCSIIsPQX2fX-J6RKTiyvquS7KJ1T0Kzx6Ywc65RycyrurTJTC4q-mCmJZoPLEYy0oBnRVLGiocSCdTadZgxWAyQjw2LwsforSDQ8JqSTWqCEKA6ShcAzHatXrAqcFMQp_LTPgPR8YI_xPzCsYAapN2-9fCv0ZHwfX9KS_Urx2Lpb6BXyET-3hLfyCg00byC7m6LQ071R2Z42MLswfUecN77bVZ2AUTHJMsxH4WmUH_efXqH_kXQAlOI3JBEtE5soZZ5fCW0FwIFXLGD3sKOQIBkVB1Jc4QN1A79JqoD-9_xfEThskwZ77XaP2K6n_ZqIJx7ARz-pW9QXOKYlDq6ajWSXM2RwzNyTR2nHYYZxbAG_tEtd-t_HG4cLmPIEen42wfZ52L-THwgnvyGTAwuciITgp1bEvk_C3BDlPf3CEELq31AyErVLMMDKnW7bDRGMm6g-RRONHe1oYLHPJhzIArOGW9mRWlz1kRnqNJqo34Wm5d2Lz0SOZ35S7mqh70nVdh1Pq8ZYOLAuiGyFW8qpV7mYDqUlNOa6pxbDekNAEtZkpgSVNgIBIQQ1-TMuTd4S303K2b13rF_xoMhxGulZ-bMF_a2zMD.ts' for reading
    [tls @ 0x56435e8f9240] Error in the pull function.:01:23.00 bitrate=3486.7kbits/s dup=2160 drop=0 speed=0.683x    
    [https @ 0x56435e721800] Opening 'https://video-weaver.sea01.hls.ttvnw.net/v1/playlist/CsUDZUnwghPhNM5_XBj0nSEHs88T94bkhSAr-I9_sto9JTnAbBEr-ddFZSGj6VlIh5mVyieGDjzVpOmqX66tr0vRKqLTsL6A4422LjX_Np4fZBmlCDwzns9XldQxLHM22Q04NxNaIOpNuYqawZOt8UbG_u1vIEX_BAN08k1RJKJpot5X4RW3VRgS9GvVJq_IFqpdALQ9avacbeSVWNhEDuB9SAyz_7FORgYD34oYcL8pzuF-n_cAQlAJoWbW8IHUt8vkBOyP84wy9JU2cGrofs2sJkBKkRGju7cE0AfU0lMoid1l3pFauurhh9PjvqSF3a2J1A_55FxyNlogl8LydSot92F0_h4cd-DXtnspnIl4nmaBCMHnHzz3QXGZPWWtA6Rg3fOhazRBBVSucupRLY8PVaIL3bFDd06qk6Y3-4MMPnMsFDtgHSnwMAOnoho_jc4CP6UA_QZn-j0f870E3imS0HCKVZAz_B98is0wggVCZRh0tgITVYvsc-dPOEMLvigEkTsI-W4zhQfEqFQqeFuuUysaQtYh6Ttglj4NrNWuNt7AQsLn_t1RwEhfj1V2kiNmUbYX-e54S4mhN88y7-9nY9puHAZvEhBvZVjUTEp1T-ti77sazwRDGgw8qlySyJcjWsFi8GQ.m3u8' for reading
    skipping 5 segments ahead, expired from playlists
    [https @ 0x56435e535980] Opening 'https://video-edge-7e9f50.sea01.abs.hls.ttvnw.net/v1/segment/CtgDfsMaR7rU_kvacwHpdvCmB1VO-7cJ8eeX6u8qcYA-l8fSN1pgv5VKyz9nYTJaFCN5bko0QkliSwCELLg7BQI5S3ufELffNEjBflKTT5kt7tTFd7cG5-Tv7I3z7yYsPetkmkaxvDhCiKevzKmacONnNS_rQwmCviZXNSuT5Vk3YURFJt4rlirupxemy9y0bQ-vkvM55gG1WWaWt5Y2AM0HnJk1IupAD2kQvgCldpI1dvCHRH3ahNZliFck2b0XMK6ygQt4LuDY136dc0QvlHtyGAkRNg4sGKaTqUH7JKuyIExX2Kqz0Q2KkOlPL9Jlzq8kNh-4_I0JuNcBMvC4IkUI6XvBFBbTGR3ZnYK9CWji7P8RBnoSUIIuwTiyov2dZrhhBigd9DORxBqFmcQ8w7mBB7hLkqEwOJxbSLpp74dfncQY9iGh5T1Y2CKqS2XvSZJwgzArLeAYNuBFBHYMzU75YWSmc3ZmmI83rf0FAtzoloXfABk7ZL8t-bEVS5evPXD1tTGl7h-5FmZQ9fECBxVCLFGXKUjYgBP50rnQFxHdeA-0Hpr8eD9pRydbJ0WNbRG4jmqnsOFWVGasdrmaz0ElPAvCuqWKiUQrX1yLUpfmB8AGLYqHwySzLRIQXFDNzVSqCSHDMlMXAxSlFRoMZzRn6-XykBzWN6hn.ts' for reading
    [tls @ 0x56435e8f9240] The specified session has been invalidated for some reason.
    [hls,applehttp @ 0x56435e2569c0] keepalive request failed for 'https://video-edge-7e9f50.sea01.abs.hls.ttvnw.net/v1/segment/CtgDfsMaR7rU_kvacwHpdvCmB1VO-7cJ8eeX6u8qcYA-l8fSN1pgv5VKyz9nYTJaFCN5bko0QkliSwCELLg7BQI5S3ufELffNEjBflKTT5kt7tTFd7cG5-Tv7I3z7yYsPetkmkaxvDhCiKevzKmacONnNS_rQwmCviZXNSuT5Vk3YURFJt4rlirupxemy9y0bQ-vkvM55gG1WWaWt5Y2AM0HnJk1IupAD2kQvgCldpI1dvCHRH3ahNZliFck2b0XMK6ygQt4LuDY136dc0QvlHtyGAkRNg4sGKaTqUH7JKuyIExX2Kqz0Q2KkOlPL9Jlzq8kNh-4_I0JuNcBMvC4IkUI6XvBFBbTGR3ZnYK9CWji7P8RBnoSUIIuwTiyov2dZrhhBigd9DORxBqFmcQ8w7mBB7hLkqEwOJxbSLpp74dfncQY9iGh5T1Y2CKqS2XvSZJwgzArLeAYNuBFBHYMzU75YWSmc3ZmmI83rf0FAtzoloXfABk7ZL8t-bEVS5evPXD1tTGl7h-5FmZQ9fECBxVCLFGXKUjYgBP50rnQFxHdeA-0Hpr8eD9pRydbJ0WNbRG4jmqnsOFWVGasdrmaz0ElPAvCuqWKiUQrX1yLUpfmB8AGLYqHwySzLRIQXFDNzVSqCSHDMlMXAxSlFRoMZzRn6-XykBzWN6hn.ts', retrying with new connection: Input/output error
    [hls,applehttp @ 0x56435e2569c0] Opening 'https://video-edge-7e9f50.sea01.abs.hls.ttvnw.net/v1/segment/CtgDfsMaR7rU_kvacwHpdvCmB1VO-7cJ8eeX6u8qcYA-l8fSN1pgv5VKyz9nYTJaFCN5bko0QkliSwCELLg7BQI5S3ufELffNEjBflKTT5kt7tTFd7cG5-Tv7I3z7yYsPetkmkaxvDhCiKevzKmacONnNS_rQwmCviZXNSuT5Vk3YURFJt4rlirupxemy9y0bQ-vkvM55gG1WWaWt5Y2AM0HnJk1IupAD2kQvgCldpI1dvCHRH3ahNZliFck2b0XMK6ygQt4LuDY136dc0QvlHtyGAkRNg4sGKaTqUH7JKuyIExX2Kqz0Q2KkOlPL9Jlzq8kNh-4_I0JuNcBMvC4IkUI6XvBFBbTGR3ZnYK9CWji7P8RBnoSUIIuwTiyov2dZrhhBigd9DORxBqFmcQ8w7mBB7hLkqEwOJxbSLpp74dfncQY9iGh5T1Y2CKqS2XvSZJwgzArLeAYNuBFBHYMzU75YWSmc3ZmmI83rf0FAtzoloXfABk7ZL8t-bEVS5evPXD1tTGl7h-5FmZQ9fECBxVCLFGXKUjYgBP50rnQFxHdeA-0Hpr8eD9pRydbJ0WNbRG4jmqnsOFWVGasdrmaz0ElPAvCuqWKiUQrX1yLUpfmB8AGLYqHwySzLRIQXFDNzVSqCSHDMlMXAxSlFRoMZzRn6-XykBzWN6hn.ts' for reading
    [h264 @ 0x56435ebcd2c0] Invalid NAL unit 12, skipping.23.07 bitrate=3509.0kbits/s dup=2160 drop=0 speed=0.678x    
    [h264 @ 0x56435ebcd2c0] error while decoding MB 79 24, bytestream -5
    [h264 @ 0x56435ebcd2c0] concealing 5250 DC, 5250 AC, 5250 MV errors in B frame
    [tls @ 0x56435f49fbc0] Error in the pull function.:01:32.57 bitrate=3262.3kbits/s dup=2691 drop=0 speed=0.703x    
    [https @ 0x56435e721800] Opening 'https://video-weaver.sea01.hls.ttvnw.net/v1/playlist/CsUDZUnwghPhNM5_XBj0nSEHs88T94bkhSAr-I9_sto9JTnAbBEr-ddFZSGj6VlIh5mVyieGDjzVpOmqX66tr0vRKqLTsL6A4422LjX_Np4fZBmlCDwzns9XldQxLHM22Q04NxNaIOpNuYqawZOt8UbG_u1vIEX_BAN08k1RJKJpot5X4RW3VRgS9GvVJq_IFqpdALQ9avacbeSVWNhEDuB9SAyz_7FORgYD34oYcL8pzuF-n_cAQlAJoWbW8IHUt8vkBOyP84wy9JU2cGrofs2sJkBKkRGju7cE0AfU0lMoid1l3pFauurhh9PjvqSF3a2J1A_55FxyNlogl8LydSot92F0_h4cd-DXtnspnIl4nmaBCMHnHzz3QXGZPWWtA6Rg3fOhazRBBVSucupRLY8PVaIL3bFDd06qk6Y3-4MMPnMsFDtgHSnwMAOnoho_jc4CP6UA_QZn-j0f870E3imS0HCKVZAz_B98is0wggVCZRh0tgITVYvsc-dPOEMLvigEkTsI-W4zhQfEqFQqeFuuUysaQtYh6Ttglj4NrNWuNt7AQsLn_t1RwEhfj1V2kiNmUbYX-e54S4mhN88y7-9nY9puHAZvEhBvZVjUTEp1T-ti77sazwRDGgw8qlySyJcjWsFi8GQ.m3u8' for reading
    skipping 4 segments ahead, expired from playlists
    [https @ 0x56435f45a540] Opening 'https://video-edge-7e9f50.sea01.abs.hls.ttvnw.net/v1/segment/CtgDJCPyyRSMlIT5sLQj9bKjs2_d06umWF43Qo_jtryGaiAv6N5v1L2NqFHxUqwOzvm_v932uRHHwuXqdnzRRA3BVgDRW38atbaZ8G-vviUj93Xgu_YB6txL-edSBWEvzQOOdxwOz75jXPyiOvg2e5rSJaXAUzH4gP0DUhkww4umPQH0afA8buPseQOQ22reXVJResCm_P2mAI9FNwNPshH9czEdfdSfATT1GZX2-cZ0G0iRso6z6wpmAUAjTiZt98jjs3KFRGIxm2tuy8NcBEAa-7Q-5rvn-3B6SSNj-RP4fBw1HM-fwT_epWMN-Dovy93OOKDNLAvOUUVexpzrGuBGHxhiPS-olyEqDzFbO6tbTk5zHqOGy8gsQKvMZI1sGmDjpsTv3rlDCCZFjCr54_e_Rs4-HRLXUHI-6sUTOjXVtNvUsF4QIIB6gvoJ5ay5wJv7w6XtWyV1Bek29Nhe3RCOqb0SjYfawvBMK67y2XELNgTnHrB05OJ8gug5FwyRY8-Z-h4bSH0NxPK65dl05brDhXBem59jehao90ETaJYtCMR8Phu4Y5NcFASRhf3IbSsvaZMXMMf8ELPfmW5VLxogEo0iIQabAwe5-H9Jv8ktiDLWFjycjdTZaBIQHwC8luLOMIw-HQwyCibuhRoMJFhK3OViT0xGWZN8.ts' for reading
    [tls @ 0x56435f49fbc0] The specified session has been invalidated for some reason.
    [hls,applehttp @ 0x56435e2569c0] keepalive request failed for 'https://video-edge-7e9f50.sea01.abs.hls.ttvnw.net/v1/segment/CtgDJCPyyRSMlIT5sLQj9bKjs2_d06umWF43Qo_jtryGaiAv6N5v1L2NqFHxUqwOzvm_v932uRHHwuXqdnzRRA3BVgDRW38atbaZ8G-vviUj93Xgu_YB6txL-edSBWEvzQOOdxwOz75jXPyiOvg2e5rSJaXAUzH4gP0DUhkww4umPQH0afA8buPseQOQ22reXVJResCm_P2mAI9FNwNPshH9czEdfdSfATT1GZX2-cZ0G0iRso6z6wpmAUAjTiZt98jjs3KFRGIxm2tuy8NcBEAa-7Q-5rvn-3B6SSNj-RP4fBw1HM-fwT_epWMN-Dovy93OOKDNLAvOUUVexpzrGuBGHxhiPS-olyEqDzFbO6tbTk5zHqOGy8gsQKvMZI1sGmDjpsTv3rlDCCZFjCr54_e_Rs4-HRLXUHI-6sUTOjXVtNvUsF4QIIB6gvoJ5ay5wJv7w6XtWyV1Bek29Nhe3RCOqb0SjYfawvBMK67y2XELNgTnHrB05OJ8gug5FwyRY8-Z-h4bSH0NxPK65dl05brDhXBem59jehao90ETaJYtCMR8Phu4Y5NcFASRhf3IbSsvaZMXMMf8ELPfmW5VLxogEo0iIQabAwe5-H9Jv8ktiDLWFjycjdTZaBIQHwC8luLOMIw-HQwyCibuhRoMJFhK3OViT0xGWZN8.ts', retrying with new connection: Input/output error
    [hls,applehttp @ 0x56435e2569c0] Opening 'https://video-edge-7e9f50.sea01.abs.hls.ttvnw.net/v1/segment/CtgDJCPyyRSMlIT5sLQj9bKjs2_d06umWF43Qo_jtryGaiAv6N5v1L2NqFHxUqwOzvm_v932uRHHwuXqdnzRRA3BVgDRW38atbaZ8G-vviUj93Xgu_YB6txL-edSBWEvzQOOdxwOz75jXPyiOvg2e5rSJaXAUzH4gP0DUhkww4umPQH0afA8buPseQOQ22reXVJResCm_P2mAI9FNwNPshH9czEdfdSfATT1GZX2-cZ0G0iRso6z6wpmAUAjTiZt98jjs3KFRGIxm2tuy8NcBEAa-7Q-5rvn-3B6SSNj-RP4fBw1HM-fwT_epWMN-Dovy93OOKDNLAvOUUVexpzrGuBGHxhiPS-olyEqDzFbO6tbTk5zHqOGy8gsQKvMZI1sGmDjpsTv3rlDCCZFjCr54_e_Rs4-HRLXUHI-6sUTOjXVtNvUsF4QIIB6gvoJ5ay5wJv7w6XtWyV1Bek29Nhe3RCOqb0SjYfawvBMK67y2XELNgTnHrB05OJ8gug5FwyRY8-Z-h4bSH0NxPK65dl05brDhXBem59jehao90ETaJYtCMR8Phu4Y5NcFASRhf3IbSsvaZMXMMf8ELPfmW5VLxogEo0iIQabAwe5-H9Jv8ktiDLWFjycjdTZaBIQHwC8luLOMIw-HQwyCibuhRoMJFhK3OViT0xGWZN8.ts' for reading
    [h264 @ 0x56435e60ad80] Invalid NAL unit 12, skipping.32.71 bitrate=3257.4kbits/s dup=2691 drop=0 speed=0.698x    
    [h264 @ 0x56435e60ad80] error while decoding MB 63 8, bytestream -5
    [h264 @ 0x56435e60ad80] concealing 7186 DC, 7186 AC, 7186 MV errors in P frame
    [tls @ 0x56435f3faf80] Error in the pull function.:01:44.76 bitrate=2922.7kbits/s dup=3363 drop=0 speed=0.74x    
    [https @ 0x56435f310ac0] Opening 'https://video-weaver.sea01.hls.ttvnw.net/v1/playlist/CsUDZUnwghPhNM5_XBj0nSEHs88T94bkhSAr-I9_sto9JTnAbBEr-ddFZSGj6VlIh5mVyieGDjzVpOmqX66tr0vRKqLTsL6A4422LjX_Np4fZBmlCDwzns9XldQxLHM22Q04NxNaIOpNuYqawZOt8UbG_u1vIEX_BAN08k1RJKJpot5X4RW3VRgS9GvVJq_IFqpdALQ9avacbeSVWNhEDuB9SAyz_7FORgYD34oYcL8pzuF-n_cAQlAJoWbW8IHUt8vkBOyP84wy9JU2cGrofs2sJkBKkRGju7cE0AfU0lMoid1l3pFauurhh9PjvqSF3a2J1A_55FxyNlogl8LydSot92F0_h4cd-DXtnspnIl4nmaBCMHnHzz3QXGZPWWtA6Rg3fOhazRBBVSucupRLY8PVaIL3bFDd06qk6Y3-4MMPnMsFDtgHSnwMAOnoho_jc4CP6UA_QZn-j0f870E3imS0HCKVZAz_B98is0wggVCZRh0tgITVYvsc-dPOEMLvigEkTsI-W4zhQfEqFQqeFuuUysaQtYh6Ttglj4NrNWuNt7AQsLn_t1RwEhfj1V2kiNmUbYX-e54S4mhN88y7-9nY9puHAZvEhBvZVjUTEp1T-ti77sazwRDGgw8qlySyJcjWsFi8GQ.m3u8' for reading
    skipping 4 segments ahead, expired from playlists

    I am unable to reproduce ffmpeg behavior anywhere outside of EC2