Recherche avancée

Médias (17)

Mot : - Tags -/wired

Autres articles (103)

  • 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

  • Use, discuss, criticize

    13 avril 2011, par

    Talk to people directly involved in MediaSPIP’s development, or to people around you who could use MediaSPIP to share, enhance or develop their creative projects.
    The bigger the community, the more MediaSPIP’s potential will be explored and the faster the software will evolve.
    A discussion list is available for all exchanges between users.

  • Encoding and processing into web-friendly formats

    13 avril 2011, par

    MediaSPIP automatically converts uploaded files to internet-compatible formats.
    Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
    Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
    Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
    All uploaded files are stored online in their original format, so you can (...)

Sur d’autres sites (7571)

  • Executing shell script on Google Cloud Functions

    9 juillet 2020, par João Abrantes

    I am trying to encode .mp4 videos into hls using FFmpeg.

    


    I am using subprocess to call FFmpeg :

    


    def transcoder(data, context):
    """Background Cloud Function to be triggered by Cloud Storage.
       This generic function logs relevant data when a file is changed.

    Args:
        data (dict): The Cloud Functions event payload.
        context (google.cloud.functions.Context): Metadata of triggering event.
    Returns:
        None; the output is written to Stackdriver Logging
    """
    try:
        input_filename = data['name'].split('/')[-1] #videos have no extension
        input_path = f'/tmp/{input_filename}'
        print(f'filename {input_filename}')
        print(f'input_path {input_path}')
        print(f"bucket {data['bucket']}")
        print(f"name {data['name']}")

        outdir_path = f'/tmp/output/{input_filename}'
        os.makedirs(outdir_path, exist_ok=True)

        bucket = client.get_bucket(data['bucket'])
        blob = bucket.get_blob(data['name'])
        blob.download_to_filename(input_path)

        cmd = f'''ffmpeg -y -i {input_path} \
              -preset ultrafast -g 60 -sc_threshold 0 \
              -map 0:0 -map 0:1 -map 0:0 -map 0:1 \
              -s:v:0 360x640 -c:v:0 libx264 -b:v:0 365k \
              -s:v:1 720x1280 -c:v:1 libx264 -b:v:1 3000k \
              -c:a copy \
              -var_stream_map "v:0,a:0 v:1,a:1" \
              -master_pl_name master.m3u8 \
              -f hls -hls_time 6 -hls_list_size 0 \
              -hls_segment_filename "{outdir_path}/%v_fileSequence%d.ts" \
              -hls_playlist_type vod \
               {outdir_path}/%v_prog_index.m3u8'''

        process = subprocess.Popen(cmd)
        stdout, stderr = process.communicate()
        upload_local_directory_to_gcs(outdir_path, upload_bucket, input_filename)
    except Exception as e:
        print(e)


    


    The problem is that I get an error :

    


    [Errno 2] No such file or directory: 'ffmpeg -y -i /tmp/video -preset ultrafast -g 60 -sc_threshold 0 -map 0:0 -map 0:1 -map 0:0 -map 0:1 -s:v:0 360x640 -c:v:0 libx264 -b:v:0 365k -s:v:1 720x1280 -c:v:1 libx264 -b:v:1 3000k -c:a copy -var_stream_map "v:0,a:0 v:1,a:1" -master_pl_name master.m3u8 -f hls -hls_time 6 -hls_list_size 0 -hls_segment_filename "/tmp/output/video/%v_fileSequence%d.ts" -hls_playlist_type vod /tmp/output/video/%v_prog_index.m3u8': 'ffmpeg -y -i /tmp/video -preset ultrafast -g 60 -sc_threshold 0 -map 0:0 -map 0:1 -map 0:0 -map 0:1 -s:v:0 360x640 -c:v:0 libx264 -b:v:0 365k -s:v:1 720x1280 -c:v:1 libx264 -b:v:1 3000k -c:a copy -var_stream_map "v:0,a:0 v:1,a:1" -master_pl_name master.m3u8 -f hls -hls_time 6 -hls_list_size 0 -hls_segment_filename "/tmp/output/video/%v_fileSequence%d.ts" -hls_playlist_type vod /tmp/output/video/%v_prog_index.m3u8'


    


    But I know that the input files and the output files do exist because I debugged that using print(os.listdir(path)) so now I am wondering if the FFmpeg I call with subprocess has access to the /tmp folder..?

    


    I know that there is a Python FFmpeg library I could use, but I don't know how to run my FFmpeg command using that library. Can you help ?

    


    p.s. I can run this locally with success.

    


  • ffmpeg to convert file to webm returns in error

    14 avril 2019, par user3184895

    i have a self-recorded file in .ts format and want to convert it to three different formats(.mp4, .ogg and .webm).

    for that i use my brandnew debian9 with following commands :

    /usr/bin/ffmpeg -y -i source.ts -strict experimental -r 25 -b 18550k -bt 22792k -acodec aac -ac 2 -ar 48000 -ab 320k output.mp4

    /usr/bin/ffmpeg -y -i source.ts -r 25 -b 18550k -bt 22792k -vcodec libtheora -acodec libvorbis -ac 2 -ar 48000 -ab 320k output.ogg

    /usr/bin/ffmpeg -y -i source.ts -r 25 -b 18550k -bt 22792k -ac 2 -ar 48000 -ab 320k output.webm

    Source-File :

    General
    ID                                       : 1019 (0x3FB)
    Complete name                            : test.ts
    Format                                   : MPEG-TS
    File size                                : 85.9 MiB
    Duration                                 : 56 s 490 ms
    Overall bit rate mode                    : Variable
    Overall bit rate                         : 12.7 Mb/s

    Video
    ID                                       : 5101 (0x13ED)
    Menu ID                                  : 10301 (0x283D)
    Format                                   : AVC
    Format/Info                              : Advanced Video Codec
    Format profile                           : High@L4
    Format settings, CABAC                   : Yes
    Format settings, ReFrames                : 4 frames
    Codec ID                                 : 27
    Duration                                 : 55 s 880 ms
    Bit rate                                 : 11.1 Mb/s
    Width                                    : 1 280 pixels
    Height                                   : 720 pixels
    Display aspect ratio                     : 16:9
    Frame rate                               : 50.000 FPS
    Color space                              : YUV
    Chroma subsampling                       : 4:2:0
    Bit depth                                : 8 bits
    Scan type                                : Progressive
    Bits/(Pixel*Frame)                       : 0.241
    Stream size                              : 74.1 MiB (86%)

    Audio #1
    ID                                       : 5102 (0x13EE)
    Menu ID                                  : 10301 (0x283D)
    Format                                   : MPEG Audio
    Format version                           : Version 1
    Format profile                           : Layer 2
    Codec ID                                 : 3
    Duration                                 : 56 s 448 ms
    Bit rate mode                            : Constant
    Bit rate                                 : 256 kb/s
    Channel(s)                               : 2 channels
    Sampling rate                            : 48.0 kHz
    Compression mode                         : Lossy
    Delay relative to video                  : -1 s 136 ms
    Stream size                              : 1.72 MiB (2%)
    Language                                 : German

    Audio #2
    ID                                       : 5103 (0x13EF)
    Menu ID                                  : 10301 (0x283D)
    Format                                   : MPEG Audio
    Format version                           : Version 1
    Format profile                           : Layer 2
    Codec ID                                 : 3
    Duration                                 : 56 s 448 ms
    Bit rate mode                            : Constant
    Bit rate                                 : 256 kb/s
    Channel(s)                               : 2 channels
    Sampling rate                            : 48.0 kHz
    Compression mode                         : Lossy
    Delay relative to video                  : -1 s 136 ms
    Stream size                              : 1.72 MiB (2%)
    descriptor_tag_extension                 : 6

    Audio #3
    ID                                       : 5106 (0x13F2)
    Menu ID                                  : 10301 (0x283D)
    Format                                   : AC-3
    Format/Info                              : Audio Coding 3
    Mode extension                           : CM (complete main)
    Format settings, Endianness              : Big
    Codec ID                                 : 6
    Duration                                 : 56 s 480 ms
    Bit rate mode                            : Constant
    Bit rate                                 : 448 kb/s
    Channel(s)                               : 2 channels
    Channel positions                        : Front: L R
    Sampling rate                            : 48.0 kHz
    Frame rate                               : 31.250 FPS (1536 spf)
    Bit depth                                : 16 bits
    Compression mode                         : Lossy
    Delay relative to video                  : -1 s 168 ms
    Stream size                              : 3.02 MiB (4%)
    Language                                 : German

    Text
    ID                                       : 5105 (0x13F1)
    Menu ID                                  : 10301 (0x283D)
    Format                                   : DVB Subtitle
    Codec ID                                 : 6
    Duration                                 : 54 s 800 ms
    Delay relative to video                  : 2 s 520 ms
    Language                                 : German

    Other
    ID                                       : 5104 (0x13F0)-100
    Menu ID                                  : 10301 (0x283D)
    Format                                   : Teletext
    Language                                 : German

    Menu
    ID                                       : 5100 (0x13EC)
    Menu ID                                  : 10301 (0x283D)
    Duration                                 : 56 s 490 ms
    List                                     : 1170 (0x492) () / 1176 (0x498) () / 2171 (0x87B) () / 5101 (0x13ED) (AVC) / 5102 (0x13EE) (MPEG Audio, German) / 5103 (0x13EF) (MPEG Audio) / 5104 (0x13F0)-100 (Teletext, de) / 5105 (0x13F1) (DVB Subtitle, German) / 5106 (0x13F2) (AC-3, German) / 5108 (0x13F4) () / 5172 (0x1434) ()
    Language                                 :  /  /  /  / German /  / German / German / German

    Why i am doing that ? I just play arround with a privat intranet (web-application) to stream my own recorded files on different clients (Smartphone, Tablet, Desktop). Thats also the reason for the different formats (.mp4, .ogg, .webm)

    My current problem is : The command to convert it to .webm returns following error :

    /usr/bin/ffmpeg -y -i test.ts -r 25 -b 18550k -bt 22792k -ac 2 -ar 48000 -ab 320k output.webm
    ffmpeg version 3.2.12-1~deb9u1 Copyright (c) 2000-2018 the FFmpeg developers
     built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
     configuration: --prefix=/usr --extra-version='1~deb9u1' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libebur128 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
     libavutil      55. 34.101 / 55. 34.101
     libavcodec     57. 64.101 / 57. 64.101
     libavformat    57. 56.101 / 57. 56.101
     libavdevice    57.  1.100 / 57.  1.100
     libavfilter     6. 65.100 /  6. 65.100
     libavresample   3.  1.  0 /  3.  1.  0
     libswscale      4.  2.100 /  4.  2.100
     libswresample   2.  3.100 /  2.  3.100
     libpostproc    54.  1.100 / 54.  1.100
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] decode_slice_header error
    [h264 @ 0x557535b03b40] no frame!
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] decode_slice_header error
    [h264 @ 0x557535b03b40] no frame!
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] decode_slice_header error
    [h264 @ 0x557535b03b40] no frame!
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] decode_slice_header error
    [h264 @ 0x557535b03b40] no frame!
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] decode_slice_header error
    [h264 @ 0x557535b03b40] no frame!
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] decode_slice_header error
    [h264 @ 0x557535b03b40] no frame!
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] decode_slice_header error
    [h264 @ 0x557535b03b40] no frame!
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] decode_slice_header error
    [h264 @ 0x557535b03b40] no frame!
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] decode_slice_header error
    [h264 @ 0x557535b03b40] no frame!
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] decode_slice_header error
    [h264 @ 0x557535b03b40] no frame!
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] SPS unavailable in decode_picture_timing
    [h264 @ 0x557535b03b40] non-existing PPS 0 referenced
    [h264 @ 0x557535b03b40] decode_slice_header error
    [h264 @ 0x557535b03b40] no frame!
    [mpegts @ 0x557535ade440] start time for stream 9 is not set in estimate_timings_from_pts
    [mpegts @ 0x557535ade440] PES packet size mismatch
    [mpegts @ 0x557535ade440] Could not find codec parameters for stream 0 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
    Consider increasing the value for the 'analyzeduration' and 'probesize' options
    [mpegts @ 0x557535ade440] Could not find codec parameters for stream 1 (Unknown: none ([12][0][0][0] / 0x000C)): unknown codec
    Consider increasing the value for the 'analyzeduration' and 'probesize' options
    [mpegts @ 0x557535ade440] Could not find codec parameters for stream 2 (Unknown: none ([11][0][0][0] / 0x000B)): unknown codec
    Consider increasing the value for the 'analyzeduration' and 'probesize' options
    [mpegts @ 0x557535ade440] Could not find codec parameters for stream 10 (Unknown: none ([11][0][0][0] / 0x000B)): unknown codec
    Consider increasing the value for the 'analyzeduration' and 'probesize' options
    Input #0, mpegts, from 'test.ts':
     Duration: 00:00:58.04, start: 86615.181389, bitrate: 12418 kb/s
     Program 10301
       Stream #0:0[0x492]: Unknown: none ([5][0][0][0] / 0x0005)
       Stream #0:1[0x498]: Unknown: none ([12][0][0][0] / 0x000C)
       Stream #0:2[0x87b]: Unknown: none ([11][0][0][0] / 0x000B)
       Stream #0:3[0x13ed]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 100 tbc
       Stream #0:4[0x13ee](deu): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 256 kb/s
       Stream #0:5[0x13ef](mis): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 256 kb/s
       Stream #0:6[0x13f0](deu): Subtitle: dvb_teletext ([6][0][0][0] / 0x0006)
       Stream #0:7[0x13f1](deu): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006) (hearing impaired)
       Stream #0:8[0x13f2](deu): Audio: ac3 ([6][0][0][0] / 0x0006), 48000 Hz, stereo, fltp, 448 kb/s
       Stream #0:9[0x13f4]: Data: bin_data ([6][0][0][0] / 0x0006)
       Stream #0:10[0x1434]: Unknown: none ([11][0][0][0] / 0x000B)
     Program 10302
     Program 10303
     Program 10304
    Please use -b:a or -b:v, -b is ambiguous
    [libvpx-vp9 @ 0x557535ba6d00] v1.6.1
    Stream mapping:
     Stream #0:3 -> #0:0 (h264 (native) -> vp9 (libvpx-vp9))
     Stream #0:4 -> #0:1 (mp2 (native) -> opus (libopus))
     Stream #0:6 -> #0:2 (dvb_teletext (libzvbi_teletextdec) -> webvtt (native))
    Error while opening encoder for output stream #0:2 - maybe incorrect parameters such as bit_rate, rate, width or height

    i dont understand the problem, because the convertions to .ogg or .mp4 are workin. So i cannot be a problem with the source-codecs. Does anyone have any idea what my problem might be

  • Overlay filter in LibAV/FFMpeg returns strange (tripled) frame in C

    28 juillet 2014, par gkuczera

    I tried to make a program, which merges two frames. I use LibAV (libav-win32-20140428) under Windows 7 64 and Visual Studio 2013.
    But the result is quite odd.

    http://oi58.tinypic.com/rcobnm.jpg

    The filter which was used is Overlay. When I change the graph, to the one, that uses only one stream and add FADE effect, everything works like a charm. But OVERLAY and eg. DRAWBOX give me strange distortion (three frames on one and black and white effect). Here is the code :

    static int init_filter_graph(AVFilterGraph **pGraph, AVFilterContext **pSrc1, AVFilterContext **pSink)
    {
       AVFilterGraph* tFilterGraph;
       AVFilterContext* tBufferContext1;
       AVFilter* tBuffer1;
       AVFilterContext* tColorContext;
       AVFilter* tColor;
       AVFilterContext* tOverlayContext;
       AVFilter* tOverlay;
       AVFilterContext* tBufferSinkContext;
       AVFilter* tBufferSink;

       int tError;

       /* Create a new filtergraph, which will contain all the filters. */
       tFilterGraph = avfilter_graph_alloc();

       if (!tFilterGraph) {
           return -1;
       }

       { // BUFFER FILTER 1
           tBuffer1 = avfilter_get_by_name("buffer");
           if (!tBuffer1) {
               return -1;
           }
           tBufferContext1 = avfilter_graph_alloc_filter(tFilterGraph, tBuffer1, "src1");
           if (!tBufferContext1) {
               return -1;
           }

           av_dict_set(&tOptionsDict, "width", "320", 0);
           av_dict_set(&tOptionsDict, "height", "240", 0);
           av_dict_set(&tOptionsDict, "pix_fmt", "bgr24", 0);
           av_dict_set(&tOptionsDict, "time_base", "1/25", 0);
           av_dict_set(&tOptionsDict, "sar", "1", 0);
           tError = avfilter_init_dict(tBufferContext1, &tOptionsDict);
           av_dict_free(&tOptionsDict);
           if (tError < 0) {
               return tError;
           }
       }

       { // COLOR FILTER
           tColor = avfilter_get_by_name("color");
           if (!tColor) {
               return -1;
           }
           tColorContext = avfilter_graph_alloc_filter(tFilterGraph, tColor, "color");
           if (!tColorContext) {
               return -1;
           }

           av_dict_set(&tOptionsDict, "color", "white", 0);
           av_dict_set(&tOptionsDict, "size", "20x120", 0);
           av_dict_set(&tOptionsDict, "framerate", "1/25", 0);
           tError = avfilter_init_dict(tColorContext, &tOptionsDict);
           av_dict_free(&tOptionsDict);
           if (tError < 0) {
               return tError;
           }
       }

       { // OVERLAY FILTER
           tOverlay = avfilter_get_by_name("overlay");
           if (!tOverlay) {
               return -1;
           }
           tOverlayContext = avfilter_graph_alloc_filter(tFilterGraph, tOverlay, "overlay");
           if (!tOverlayContext) {
               return -1;
           }

           av_dict_set(&tOptionsDict, "x", "0", 0);
           av_dict_set(&tOptionsDict, "y", "0", 0);
           av_dict_set(&tOptionsDict, "main_w", "120", 0);
           av_dict_set(&tOptionsDict, "main_h", "140", 0);
           av_dict_set(&tOptionsDict, "overlay_w", "320", 0);
           av_dict_set(&tOptionsDict, "overlay_h", "240", 0);
           tError = avfilter_init_dict(tOverlayContext, &tOptionsDict);
           av_dict_free(&tOptionsDict);
           if (tError < 0) {
               return tError;
           }
       }

       { // BUFFERSINK FILTER
           tBufferSink = avfilter_get_by_name("buffersink");
           if (!tBufferSink) {
               return -1;
           }

           tBufferSinkContext = avfilter_graph_alloc_filter(tFilterGraph, tBufferSink, "sink");
           if (!tBufferSinkContext) {
               return -1;
           }

           tError = avfilter_init_str(tBufferSinkContext, NULL);
           if (tError < 0) {
               return tError;
           }
       }

       // Linking graph
       tError = avfilter_link(tBufferContext1, 0, tOverlayContext, 0);
       if (tError >= 0) {
           tError = avfilter_link(tColorContext, 0, tOverlayContext, 1);
       }
       if (tError >= 0) {
           tError = avfilter_link(tOverlayContext, 0, tBufferSinkContext, 0);
       }
       if (tError < 0) {
           return tError;
       }

       tError = avfilter_graph_config(tFilterGraph, NULL);
       if (tError < 0) {
           return tError;
       }

       *pGraph = tFilterGraph;
       *pSrc1 = tBufferContext1;
       *pSink = tBufferSinkContext;

       return 0;
    }

    What do you think is the reason ?