Recherche avancée

Médias (1)

Mot : - Tags -/MediaSPIP

Autres articles (111)

  • Other interesting software

    13 avril 2011, par

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

  • Les formats acceptés

    28 janvier 2010, par

    Les commandes suivantes permettent d’avoir des informations sur les formats et codecs gérés par l’installation local de ffmpeg :
    ffmpeg -codecs ffmpeg -formats
    Les format videos acceptés en entrée
    Cette liste est non exhaustive, elle met en exergue les principaux formats utilisés : h264 : H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 m4v : raw MPEG-4 video format flv : Flash Video (FLV) / Sorenson Spark / Sorenson H.263 Theora wmv :
    Les formats vidéos de sortie possibles
    Dans un premier temps on (...)

  • Ajouter notes et légendes aux images

    7 février 2011, par

    Pour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
    Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
    Modification lors de l’ajout d’un média
    Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...)

Sur d’autres sites (10397)

  • ffmpeg convert to webm error "too many invisible frames"

    24 janvier 2019, par Вадим Коломиец

    I need to convert any format (for example, mp4, avi etc) to .webm with own ioContext. I build ffmpeg with vpx, ogg, vorbis, opus and create simple project. But when i write any frame i get error "Too many invisible frames. Failed to send packet to filter vp9_superframe for stream 0"

    I’ve already tried convert from webm to webm with copy codec params with avcodec_parameters_copy and this works.

       #include <qcoreapplication>
    #include <qfileinfo>
    #include <iostream>
    #include <fstream>

    extern "C" {
    #include <libavcodec></libavcodec>avcodec.h>
    #include <libavformat></libavformat>avformat.h>
    #include <libavutil></libavutil>timestamp.h>
    #include <libavformat></libavformat>avformat.h>
    #include <libavfilter></libavfilter>buffersink.h>
    #include <libavfilter></libavfilter>buffersrc.h>
    #include <libavutil></libavutil>opt.h>
    #include <libavutil></libavutil>pixdesc.h>
    }

    using namespace std;

    struct BufferData {
       QByteArray data;
       uint fullsize;

       BufferData() {
           fullsize =0;
       }
    };


    static int write_packet_to_buffer(void *opaque, uint8_t *buf, int buf_size)         {
       BufferData *bufferData = static_cast(opaque);
       bufferData->fullsize += buf_size;
       bufferData->data.append((const char*)buf, buf_size);
       return buf_size;
    }


    static bool writeBuffer(const QString &amp;filename, BufferData *bufferData) {
       QFile file(filename);
       if( !file.open(QIODevice::WriteOnly) )  return false;
       file.write(bufferData->data);
       qDebug()&lt;&lt;"FILE SIZE = " &lt;&lt; file.size();
       file.close();
       return true;
    }

    int main(int argc, char *argv[])
    {
       QCoreApplication a(argc, argv);
       AVOutputFormat *ofmt = NULL;
       AVFormatContext *ifmt_ctx = NULL, *ofmt_ctx = NULL;
       AVPacket pkt;
       int ret;
       int stream_index = 0;
       int *stream_mapping = NULL;
       int stream_mapping_size = 0;

       const char *in_filename  = "../assets/sample.mp4";
       const char *out_filename = "../assets/sample_new.webm";


       //------------------------  Input file  ----------------------------
       if ((ret = avformat_open_input(&amp;ifmt_ctx, in_filename, 0, 0)) &lt; 0) {
           fprintf(stderr, "Could not open input file '%s'", in_filename);
           return 1;
       }

       if ((ret = avformat_find_stream_info(ifmt_ctx, 0)) &lt; 0) {
           fprintf(stderr, "Failed to retrieve input stream information");
           return 1;
       }
       av_dump_format(ifmt_ctx, 0, in_filename, 0);
       //-----------------------------------------------------------------


       //---------------------- BUFFER -------------------------
      AVIOContext *avio_ctx = NULL;
      uint8_t *avio_ctx_buffer = NULL;
      size_t avio_ctx_buffer_size = 4096*1024;
      const size_t bd_buf_size = 1024*1024;
      /* fill opaque structure used by the AVIOContext write callback */
      avio_ctx_buffer = (uint8_t*)av_malloc(avio_ctx_buffer_size);
      if (!avio_ctx_buffer) return AVERROR(ENOMEM);

      BufferData bufferData;
      avio_ctx = avio_alloc_context(avio_ctx_buffer, avio_ctx_buffer_size,
                                    1, &amp;bufferData, NULL,
                                    &amp;write_packet_to_buffer, NULL);


      if (!avio_ctx) return AVERROR(ENOMEM);
      //------------------------------------------------------


       avformat_alloc_output_context2(&amp;ofmt_ctx, NULL, NULL, out_filename);
           if (!ofmt_ctx) {
           fprintf(stderr, "Could not create output context\n");
           ret = AVERROR_UNKNOWN;
           return 1;
       }

       //------------------------  Stream list  ----------------------------
       stream_mapping_size = ifmt_ctx->nb_streams;
       stream_mapping = (int*)av_mallocz_array(stream_mapping_size,     sizeof(*stream_mapping));
       if (!stream_mapping) {
           ret = AVERROR(ENOMEM);
           return 1;
       }
       //-------------------------------------------------------------------



       //------------------------  Output file  ----------------------------
       AVCodec *encoder;
       AVCodecContext *input_ctx;
       AVCodecContext *enc_ctx;
       for (int i=0; i &lt; ifmt_ctx->nb_streams; i++) {
           AVStream *out_stream;
           AVStream *in_stream = ifmt_ctx->streams[i];
           AVCodecParameters *in_codecpar = in_stream->codecpar;

           if (in_codecpar->codec_type != AVMEDIA_TYPE_AUDIO &amp;&amp;
               in_codecpar->codec_type != AVMEDIA_TYPE_VIDEO &amp;&amp;
               in_codecpar->codec_type != AVMEDIA_TYPE_SUBTITLE) {
               stream_mapping[i] = -1;
               continue;
           }

           enc_ctx = avcodec_alloc_context3(encoder);
           if (!enc_ctx) {
               av_log(NULL, AV_LOG_FATAL, "Failed to allocate the encoder context\n");
               return AVERROR(ENOMEM);
           }

           stream_mapping[i] = stream_index++;

           out_stream = avformat_new_stream(ofmt_ctx, NULL);
           if (!out_stream) {
               fprintf(stderr, "Failed allocating output stream\n");
               ret = AVERROR_UNKNOWN;
               return 1;
           }

           out_stream->codecpar->width = in_codecpar->width;
           out_stream->codecpar->height = in_codecpar->height;
           out_stream->codecpar->level = in_codecpar->level;
           out_stream->codecpar->format =in_codecpar->format;
           out_stream->codecpar->profile =in_codecpar->profile;
           out_stream->codecpar->bit_rate =in_codecpar->bit_rate;
           out_stream->codecpar->channels =in_codecpar->channels;
           out_stream->codecpar->codec_tag = 0;
           out_stream->codecpar->color_trc =in_codecpar->color_trc;
           out_stream->codecpar->codec_type =in_codecpar->codec_type;
           out_stream->codecpar->frame_size =in_codecpar->frame_size;
           out_stream->codecpar->block_align =in_codecpar->block_align;
           out_stream->codecpar->color_range =in_codecpar->color_range;
           out_stream->codecpar->color_space =in_codecpar->color_space;
           out_stream->codecpar->field_order =in_codecpar->field_order;
           out_stream->codecpar->sample_rate =in_codecpar->sample_rate;
           out_stream->codecpar->video_delay =in_codecpar->video_delay;
           out_stream->codecpar->seek_preroll =in_codecpar->seek_preroll;
           out_stream->codecpar->channel_layout =in_codecpar->channel_layout;
           out_stream->codecpar->chroma_location =in_codecpar->chroma_location;
           out_stream->codecpar->color_primaries =in_codecpar->color_primaries;
           out_stream->codecpar->initial_padding =in_codecpar->initial_padding;
           out_stream->codecpar->trailing_padding =in_codecpar->trailing_padding;
           out_stream->codecpar->bits_per_raw_sample = in_codecpar->bits_per_raw_sample;
           out_stream->codecpar->sample_aspect_ratio.num = in_codecpar->sample_aspect_ratio.num;
           out_stream->codecpar->sample_aspect_ratio.den = in_codecpar->sample_aspect_ratio.den;
           out_stream->codecpar->bits_per_coded_sample   = in_codecpar->bits_per_coded_sample;


           if (in_codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
               out_stream->codecpar->codec_id =ofmt_ctx->oformat->video_codec;
           }
           else if(in_codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
               out_stream->codecpar->codec_id = ofmt_ctx->oformat-    >audio_codec;
           }
       }
       av_dump_format(ofmt_ctx, 0, out_filename, 1);
       ofmt_ctx->pb = avio_ctx;

       ret = avformat_write_header(ofmt_ctx, NULL);
       if (ret &lt; 0) {
           fprintf(stderr, "Error occurred when opening output file\n");
           return 1;
       }
       //------------------------------------------------------------------------------


       while (1) {
           AVStream *in_stream, *out_stream;

           ret = av_read_frame(ifmt_ctx, &amp;pkt);
           if (ret &lt; 0)
               break;

           in_stream  = ifmt_ctx->streams[pkt.stream_index];
           if (pkt.stream_index >= stream_mapping_size ||
               stream_mapping[pkt.stream_index] &lt; 0) {
               av_packet_unref(&amp;pkt);
               continue;
           }

           pkt.stream_index = stream_mapping[pkt.stream_index];
           out_stream = ofmt_ctx->streams[pkt.stream_index];

           /* copy packet */
           pkt.pts = av_rescale_q_rnd(pkt.pts, in_stream->time_base, out_stream->time_base, AVRounding(AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX));
           pkt.dts = av_rescale_q_rnd(pkt.dts, in_stream->time_base, out_stream->time_base, AVRounding(AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX));
           pkt.duration = av_rescale_q(pkt.duration, in_stream->time_base, out_stream->time_base);
           pkt.pos = -1;

           ret = av_interleaved_write_frame(ofmt_ctx, &amp;pkt);
           if (ret &lt; 0) {
               fprintf(stderr, "Error muxing packet\n");
               break;
           }
           av_packet_unref(&amp;pkt);
       }
       av_write_trailer(ofmt_ctx);
       avformat_close_input(&amp;ifmt_ctx);

       /* close output */
       writeBuffer(fileNameOut, &amp;bufferData);
       avformat_free_context(ofmt_ctx);
       av_freep(&amp;stream_mapping);
       if (ret &lt; 0 &amp;&amp; ret != AVERROR_EOF) {
           fprintf(stderr, "Error occurred: %d\n",ret);
           return 1;
       }
       return a.exec();
    }
    </fstream></iostream></qfileinfo></qcoreapplication>
  • How to fix ffmpeg complex filters "Invalid stream specifier" [duplicate]

    15 mai 2019, par Chase

    I’m attempting to scale and blur (sections of) a video with ffmpeg complex filters. This has actually been working in production for years.

    I’m now running a newer build of ffmpeg on Ubuntu 18.04 and getting an error relating to the filters where the same command works fine on Ubuntu 16.04’s ffmpeg against the same video.


    Specifically, I’m seeing the following error :

    mov,mp4,m4a,3gp,3g2,mj2 @ 0x56055a5902c0] Invalid stream specifier: vs0.
       Last message repeated 1 times
    Stream specifier 'vs0' in filtergraph description ... matches no streams.

    Has something about the complex filter API changed that would make this same input invalid in a newer version of ffmpeg ?


    The command in question is just running the following in a Bash terminal.

    ffmpeg -ss 60 -i ~/test.mp4 -y -filter_complex "[0:v]scale=-2:'min(320,ih)'[vs0];[vs0]crop=in_w/9:in_h/2:0:0,boxblur=5:1:cr=3:ar=3[b0];[vs0]crop=in_w/9:in_h/2:in_w-out_w:0,boxblur=5:1:cr=3:ar=3[b1];[vs0]crop=(in_w-2*in_w/9):in_h/20:in_w/9:0,boxblur=5:1:cr=3:ar=3[b2];[vs0][b0]overlay=0:0[ovr0];[ovr0][b1]overlay=main_w-overlay_w:0[ovr1];[ovr1][b2]overlay=main_w/9:0[vs1]" -map [vs1] -an -ac 2 -b:a 128k -acodec aac -b:v 1024k -r 30 -vcodec libx264 -t 300 -y -preset slow -movflags faststart -pix_fmt yuv420p -f mp4 ~/out.mp4

    If we break up the complex filter statement, it looks like :

    [0:v]scale=-2:'min(320,ih)'[vs0];
    [vs0]crop=in_w/9:in_h/2:0:0,boxblur=5:1:cr=3:ar=3[b0];
    [vs0]crop=in_w/9:in_h/2:in_w-out_w:0,boxblur=5:1:cr=3:ar=3[b1];
    [vs0]crop=(in_w-2*in_w/9):in_h/20:in_w/9:0,boxblur=5:1:cr=3:ar=3[b2];
    [vs0][b0]overlay=0:0[ovr0];[ovr0][b1]overlay=main_w-overlay_w:0[ovr1];
    [ovr1][b2]overlay=main_w/9:0[vs1]

    On ffmpeg version N-86980-g62b7553 (Ubuntu 16.04), everything works great as it has done for years.

    $ ffmpeg -ss 60 -i ~/test.mp4 -y -filter_complex "[0:v]scale=-2:'min(320,ih)'[vs0];[vs0]crop=in_w/9:in_h/2:0:0,boxblur=5:1:cr=3:ar=3[b0];[vs0]crop=in_w/9:in_h/2:in_w-out_w:0,boxblur=5:1:cr=3:ar=3[b1];[vs0]crop=(in_w-2*in_w/9):in_h/20:in_w/9:0,boxblur=5:1:cr=3:ar=3[b2];[vs0][b0]overlay=0:0[ovr0];[ovr0][b1]overlay=main_w-overlay_w:0[ovr1];[ovr1][b2]overlay=main_w/9:0[vs1]" -map [vs1] -an -ac 2 -b:a 128k -acodec aac -b:v 1024k -r 30 -vcodec libx264 -t 300 -y -preset slow -movflags faststart -pix_fmt yuv420p -f mp4 ~/out.mp4
    ffmpeg version N-86980-g62b7553 Copyright (c) 2000-2017 the FFmpeg developers
     built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
     configuration: --prefix=/root/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --bindir=/root/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-openssl --enable-nonfree
     libavutil      55. 73.100 / 55. 73.100
     libavcodec     57.102.100 / 57.102.100
     libavformat    57. 76.100 / 57. 76.100
     libavdevice    57.  7.100 / 57.  7.100
     libavfilter     6. 98.100 /  6. 98.100
     libswscale      4.  7.102 /  4.  7.102
     libswresample   2.  8.100 /  2.  8.100
     libpostproc    54.  6.100 / 54.  6.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/cmaier/test.mp4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf57.76.100
     Duration: 00:10:00.00, start: 0.000000, bitrate: 1036 kb/s
       Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 768x480, 1033 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
       Metadata:
         handler_name    : VideoHandler
    Stream mapping:
     Stream #0:0 (h264) -> scale
     Stream #0:0 (h264) -> crop
     Stream #0:0 (h264) -> crop
     Stream #0:0 (h264) -> overlay:main
     overlay -> Stream #0:0 (libx264)
    Press [q] to stop, [?] for help
    [libx264 @ 0x27b2ca0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
    [libx264 @ 0x27b2ca0] profile High, level 3.1
    [libx264 @ 0x27b2ca0] 264 - core 148 r2643 5c65704 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=5 deblock=1:0:0 analyse=0x3:0x113 me=umh subme=8 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=2 b_bias=0 direct=3 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=50 rc=abr mbtree=1 bitrate=1024 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    Output #0, mp4, to '/home/cmaier/out.mp4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf57.76.100
       Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 768x480, q=-1--1, 1024 kb/s, 30 fps, 15360 tbn, 30 tbc (default)
       Metadata:
         encoder         : Lavc57.102.100 libx264
       Side data:
         cpb: bitrate max/min/avg: 0/0/1024000 buffer size: 0 vbv_delay: -1
    [mp4 @ 0x27b5a60] Starting second pass: moving the moov atom to the beginning of the file3.9x    
    frame= 9000 fps=117 q=-1.0 Lsize=   37827kB time=00:04:59.90 bitrate=1033.3kbits/s speed= 3.9x    
    video:37721kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.282333%
    [libx264 @ 0x27b2ca0] frame I:36    Avg QP:15.21  size: 50944
    [libx264 @ 0x27b2ca0] frame P:2723  Avg QP:20.12  size:  9593
    [libx264 @ 0x27b2ca0] frame B:6241  Avg QP:24.23  size:  1710
    [libx264 @ 0x27b2ca0] consecutive B-frames:  3.6%  6.9% 14.5% 75.0%
    [libx264 @ 0x27b2ca0] mb I  I16..4: 17.3% 58.5% 24.2%
    [libx264 @ 0x27b2ca0] mb P  I16..4:  0.5%  4.4%  0.9%  P16..4: 31.1% 20.7% 12.1%  0.0%  0.0%    skip:30.3%
    [libx264 @ 0x27b2ca0] mb B  I16..4:  0.0%  0.3%  0.1%  B16..8: 28.9%  5.5%  1.1%  direct: 1.1%  skip:63.1%  L0:37.5% L1:52.6% BI: 9.9%
    [libx264 @ 0x27b2ca0] final ratefactor: 19.69
    [libx264 @ 0x27b2ca0] 8x8 transform intra:72.8% inter:68.3%
    [libx264 @ 0x27b2ca0] direct mvs  spatial:99.9% temporal:0.1%
    [libx264 @ 0x27b2ca0] coded y,uvDC,uvAC intra: 74.5% 73.0% 30.4% inter: 13.0% 10.7% 0.2%
    [libx264 @ 0x27b2ca0] i16 v,h,dc,p: 49% 30%  3% 17%
    [libx264 @ 0x27b2ca0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu:  7% 14% 11%  7% 11%  8% 19%  8% 15%
    [libx264 @ 0x27b2ca0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu:  9% 13%  5%  8% 14% 10% 17%  9% 16%
    [libx264 @ 0x27b2ca0] i8c dc,h,v,p: 42% 29% 15% 15%
    [libx264 @ 0x27b2ca0] Weighted P-Frames: Y:7.4% UV:2.9%
    [libx264 @ 0x27b2ca0] ref P L0: 59.2% 20.2% 11.5%  3.7%  4.3%  1.0%  0.1%
    [libx264 @ 0x27b2ca0] ref B L0: 87.5%  8.8%  2.7%  1.0%
    [libx264 @ 0x27b2ca0] ref B L1: 96.5%  3.5%
    [libx264 @ 0x27b2ca0] kb/s:1030.01

    On ffmpeg version N-93862-gf49cec2 (Ubuntu 18.04), the command fails immediately.

    # ffmpeg -ss 60 -i ~/test.mp4 -y -filter_complex "[0:v]scale=-2:'min(320,ih)'[vs0];[vs0]crop=in_w/9:in_h/2:0:0,boxblur=5:1:cr=3:ar=3[b0];[vs0]crop=in_w/9:in_h/2:in_w-out_w:0,boxblur=5:1:cr=3:ar=3[b1];[vs0]crop=(in_w-2*in_w/9):in_h/20:in_w/9:0,boxblur=5:1:cr=3:ar=3[b2];[vs0][b0]overlay=0:0[ovr0];[ovr0][b1]overlay=main_w-overlay_w:0[ovr1];[ovr1][b2]overlay=main_w/9:0[vs1]" -map [vs1] -an -ac 2 -b:a 128k -acodec aac -b:v 1024k -r 30 -vcodec libx264 -t 300 -y -preset slow -movflags faststart -pix_fmt yuv420p -f mp4 ~/out.mp4
    ffmpeg version N-93862-gf49cec2 Copyright (c) 2000-2019 the FFmpeg developers
     built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04)
     configuration: --prefix=/root/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --bindir=/root/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-openssl --enable-nonfree
     libavutil      56. 27.100 / 56. 27.100
     libavcodec     58. 52.101 / 58. 52.101
     libavformat    58. 27.103 / 58. 27.103
     libavdevice    58.  7.100 / 58.  7.100
     libavfilter     7. 53.100 /  7. 53.100
     libswscale      5.  4.101 /  5.  4.101
     libswresample   3.  4.100 /  3.  4.100
     libpostproc    55.  4.100 / 55.  4.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/root/test.mp4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf57.76.100
     Duration: 00:10:00.00, start: 0.000000, bitrate: 1036 kb/s
       Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 768x480, 1033 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
       Metadata:
         handler_name    : VideoHandler
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x56055a5902c0] Invalid stream specifier: vs0.
       Last message repeated 1 times
    Stream specifier 'vs0' in filtergraph description [0:v]scale=-2:'min(320,ih)'[vs0];[vs0]crop=in_w/9:in_h/2:0:0,boxblur=5:1:cr=3:ar=3[b0];[vs0]crop=in_w/9:in_h/2:in_w-out_w:0,boxblur=5:1:cr=3:ar=3[b1];[vs0]crop=(in_w-2*in_w/9):in_h/20:in_w/9:0,boxblur=5:1:cr=3:ar=3[b2];[vs0][b0]overlay=0:0[ovr0];[ovr0][b1]overlay=main_w-overlay_w:0[ovr1];[ovr1][b2]overlay=main_w/9:0[vs1] matches no streams.
  • FFmpeg : "filter_complex" results in worse quality than "vf"

    16 novembre 2016, par Dasmowenator

    I’m trying to use FFmpeg to do some complex video transcoding (such as concatenating multiple files). To do this, I’ve been trying to use the filter_complex, but I’ve noticed a slight drop in quality from what I saw earlier using the normal video filter.

    To double-check, I boiled down my command to a simple transcode — one using filter_complex and one just using the vf — and I’ve confirmed that the output of the complex filter is noticeably blurry compared to the output of the normal video filter. I can’t find any FFmpeg documentation explaining this... does anyone know why this is happening and how I can get filter_complex to output the same quality video as vf ?

    Command using the normal video filter (vf) :

    ffmpeg -i input.ts -map_chapters -1 -f mpegts -an -sn -map 0:0 -vf "[in]yadif=deint=interlaced[out]" -vcodec libx264 -profile:v baseline -level 2 -b:v 800k output.ts

    FFmpeg Output :

    ffmpeg version 3.0 Copyright (c) 2000-2016 the FFmpeg developers
     built with gcc 4.1.2 (GCC) 20070626 (Red Hat 4.1.2-14)
     configuration: --enable-gpl --enable-nonfree --enable-libx264 --enable-libfdk-aac --enable-libfaac --enable-libvpx --enable-encoder=vorbis --enable-libvorbis --enable-libmp3lame --enable-libspeex --disable-decoder=prores --disable-decoder=prores_lgpl --disable-ffplay --disable-ffserver --disable-shared --enable-static --extra-cflags=-I/local/build/include --extra-libs=-lfdk-aac --extra-ldflags=-L/local/build/lib --prefix=/local/build/install
     libavutil      55. 17.103 / 55. 17.103
     libavcodec     57. 24.102 / 57. 24.102
     libavformat    57. 25.100 / 57. 25.100
     libavdevice    57.  0.101 / 57.  0.101
     libavfilter     6. 31.100 /  6. 31.100
     libswscale      4.  0.100 /  4.  0.100
     libswresample   2.  0.101 /  2.  0.101
     libpostproc    54.  0.100 / 54.  0.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'clip01.mp4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf57.41.100
     Duration: 00:00:10.02, start: 0.023220, bitrate: 741 kb/s
       Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 854x480 [SAR 1:1 DAR 427:240], 604 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
       Metadata:
         handler_name    : SoundHandler
    [libx264 @ 0x138a99e0] No 608/708 caption insertion into sei user data.
    [libx264 @ 0x138a99e0] using SAR=1/1
    [libx264 @ 0x138a99e0] frame MB size (54x30) > level limit (396)
    [libx264 @ 0x138a99e0] MB rate (48600) > level limit (11880)
    [libx264 @ 0x138a99e0] using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64
    [libx264 @ 0x138a99e0] profile Constrained Baseline, level 2.0
    Output #0, mpegts, to 'output.ts':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf57.25.100
       Stream #0:0(und): Video: h264 (libx264), yuv420p, 854x480 [SAR 1:1 DAR 427:240], q=-1--1, 800 kb/s, 30 fps, 90k tbn, 30 tbc (default)
       Metadata:
         handler_name    : VideoHandler
         encoder         : Lavc57.24.102 libx264
       Side data:
         unknown side data type 10 (24 bytes)
    Stream mapping:
     Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
    Press [q] to stop, [?] for help
    frame=  300 fps=179 q=-1.0 Lsize=    1059kB time=00:00:10.03 bitrate= 864.9kbits/s speed=   6x    
    video:949kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 11.660099%
    [libx264 @ 0x138a99e0] frame I:2     Avg QP:23.16  size: 26978
    [libx264 @ 0x138a99e0] frame P:298   Avg QP:23.09  size:  3079
    [libx264 @ 0x138a99e0] mb I  I16..4: 44.3%  0.0% 55.7%
    [libx264 @ 0x138a99e0] mb P  I16..4:  1.1%  0.0%  0.5%  P16..4: 28.7%  8.4%  2.1%  0.0%  0.0%    skip:59.3%
    [libx264 @ 0x138a99e0] final ratefactor: 22.63
    [libx264 @ 0x138a99e0] coded y,uvDC,uvAC intra: 30.8% 62.8% 23.0% inter: 7.2% 14.8% 0.3%
    [libx264 @ 0x138a99e0] i16 v,h,dc,p: 25% 39% 11% 24%
    [libx264 @ 0x138a99e0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 29% 16%  5%  6%  7%  6%  4%  5%
    [libx264 @ 0x138a99e0] i8c dc,h,v,p: 45% 29% 18%  8%
    [libx264 @ 0x138a99e0] kb/s:777.19

    Command using the complex filter :

    ffmpeg -i input.ts -map_chapters -1 -f mpegts -filter_complex "[0:v:0]yadif=deint=interlaced[v0];[v0]concat=n=1:v=1:a=0[cat_v]" -an -sn -map "[cat_v]" -vcodec libx264 -profile:v baseline -level 2 -b:v 800k output.ts

    FFmpeg Output :

    ffmpeg version 3.0 Copyright (c) 2000-2016 the FFmpeg developers
     built with gcc 4.1.2 (GCC) 20070626 (Red Hat 4.1.2-14)
     configuration: --enable-gpl --enable-nonfree --enable-libx264 --enable-libfdk-aac --enable-libfaac --enable-libvpx --enable-encoder=vorbis --enable-libvorbis --enable-libmp3lame --enable-libspeex --disable-decoder=prores --disable-decoder=prores_lgpl --disable-ffplay --disable-ffserver --disable-shared --enable-static --extra-cflags=-I/local/build/include --extra-libs=-lfdk-aac --extra-ldflags=-L/local/build/lib --prefix=/local/build/install
     libavutil      55. 17.103 / 55. 17.103
     libavcodec     57. 24.102 / 57. 24.102
     libavformat    57. 25.100 / 57. 25.100
     libavdevice    57.  0.101 / 57.  0.101
     libavfilter     6. 31.100 /  6. 31.100
     libswscale      4.  0.100 /  4.  0.100
     libswresample   2.  0.101 /  2.  0.101
     libpostproc    54.  0.100 / 54.  0.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'clip01.mp4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf57.41.100
     Duration: 00:00:10.02, start: 0.023220, bitrate: 741 kb/s
       Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 854x480 [SAR 1:1 DAR 427:240], 604 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
       Metadata:
         handler_name    : SoundHandler
    [libx264 @ 0x81f5200] No 608/708 caption insertion into sei user data.
    [libx264 @ 0x81f5200] using SAR=1/1
    [libx264 @ 0x81f5200] frame MB size (54x30) > level limit (396)
    [libx264 @ 0x81f5200] MB rate (48600) > level limit (11880)
    [libx264 @ 0x81f5200] using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64
    [libx264 @ 0x81f5200] profile Constrained Baseline, level 2.0
    Output #0, mpegts, to 'output.ts':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf57.25.100
       Stream #0:0: Video: h264 (libx264), yuv420p, 854x480 [SAR 1:1 DAR 427:240], q=-1--1, 800 kb/s, 30 fps, 90k tbn, 30 tbc (default)
       Metadata:
         encoder         : Lavc57.24.102 libx264
       Side data:
         unknown side data type 10 (24 bytes)
    Stream mapping:
     Stream #0:0 (h264) -> yadif
     concat -> Stream #0:0 (libx264)
    Press [q] to stop, [?] for help
    frame=  300 fps=179 q=-1.0 Lsize=    1059kB time=00:00:10.03 bitrate= 864.9kbits/s speed=   6x    
    video:949kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 11.660099%
    [libx264 @ 0x81f5200] frame I:2     Avg QP:23.16  size: 26978
    [libx264 @ 0x81f5200] frame P:298   Avg QP:23.09  size:  3079
    [libx264 @ 0x81f5200] mb I  I16..4: 44.3%  0.0% 55.7%
    [libx264 @ 0x81f5200] mb P  I16..4:  1.1%  0.0%  0.5%  P16..4: 28.7%  8.4%  2.1%  0.0%  0.0%    skip:59.3%
    [libx264 @ 0x81f5200] final ratefactor: 22.63
    [libx264 @ 0x81f5200] coded y,uvDC,uvAC intra: 30.8% 62.8% 23.0% inter: 7.2% 14.8% 0.3%
    [libx264 @ 0x81f5200] i16 v,h,dc,p: 25% 39% 11% 24%
    [libx264 @ 0x81f5200] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 29% 16%  5%  6%  7%  6%  4%  5%
    [libx264 @ 0x81f5200] i8c dc,h,v,p: 45% 29% 18%  8%
    [libx264 @ 0x81f5200] kb/s:777.19