Newest 'libx264' Questions - Stack Overflow

http://stackoverflow.com/questions/tagged/libx264

Les articles publiés sur le site

  • FFMPEG creates incorrect Source duration

    13 septembre 2020, par Byron Whitlock

    When transcoding movies from an AVI to mp4 sometimes FFMPEG sets the "Source Duration" incorrectly.

    This messes up playback on IOS devices. Specifically, it causes the video to cut out at "Source duration" while the audio still plays.

    enter image description here

    FFMPEG output transcode doesn't' show anything odd at all. Looks normal, no errors or warnings.

    • Can I force FFMPEG to never add the "Source Duration" metadata?
    • How do I edit the track metadata shown by mediainfo? I tried Mp4box, and a few others, but I can't seem to figure out how to edit track level metadata.

    Thanks.

    Log is below.

    ffmpeg version N-77455-g4707497 Copyright (c) 2000-2015 the FFmpeg developers   built with gcc 5.2.0 (GCC)   configuration: --enable-gpl
        --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib   libavutil      55. 11.100 / 55. 11.100   libavcodec     57. 20.100 / 57. 20.100   libavformat    57. 20.100 / 57. 20.100   libavdevice    57.  0.100 / 57.  0.100   libavfilter     6. 21.101 / 
        6. 21.101   libswscale      4.  0.100 /  4.  0.100   libswresample   2.  0.101 /  2.  0.101   libpostproc    54.  0.100 / 54.  0.100 Input #0, avi, from 'E:\MEDIA\Central.Intelligence.2016.HC.HDRip.XviD.AC3-EVO\Central.Intelligence.2016.HC.HDRip.XviD.AC3-EVO.avi': Metadata:
            encoder         : VirtualDubMod 1.5.10.2 (build 2542/release)   Duration: 01:51:43.27, start: 0.000000, bitrate: 1765 kb/s
            Stream #0:0: Video: mpeg4 (Advanced Simple Profile) (XVID / 0x44495658), yuv420p, 720x304 [SAR 1:1 DAR 45:19], 1563 kb/s, 23.98 fps, 23.98 tbr, 23.98 tbn, 23.98 tbc
            Stream #0:1: Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp, 192 kb/s [libx264 @ 000000f3c80a0a80] using SAR=405/304 [libx264 @ 000000f3c80a0a80] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2 [libx264 @ 000000f3c80a0a80] profile High, level 3.1 [libx264 @ 000000f3c80a0a80] 264 - core 148 r2638 7599210 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 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=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=23 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=1280 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 Output #0, mp4, to 'F:\STREAMS\Central.Intelligence.2016.HC.HDRip.XviD.AC3-EVO.avi.1280x720_1000kbps.TEMP.mp4': Metadata:
            encoder         : Lavf57.20.100
            Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 1280x720 [SAR 405:304 DAR 45:19], q=-1--1, 1280 kb/s, 23.98 fps, 10000k tbn, 23.98 tbc
            Metadata:
              encoder         : Lavc57.20.100 libx264
            Side data:
              unknown side data type 10 (24 bytes)
            Stream #0:1: Audio: aac ([64][0][0][0] / 0x0040), 44100 Hz, stereo, fltp, 160 kb/s
            Metadata:
              encoder         : Lavc57.20.100 aac Stream mapping:   Stream #0:0 -> #0:0 (mpeg4 (native) -> h264 (libx264))   Stream #0:1 -> #0:1 (ac3 (native) -> aac (native)) Press [q] to stop, [?] for help [mpeg4 @ 000000f3c80ae220] Video uses a non-standard and wasteful way to store B-frames ('packed B-frames'). Consider using the mpeg4_unpack_bframes bitstream filter without encoding but stream copy to fix it. 
    frame=   15 fps=0.0 q=0.0 size=       0kB time=00:00:01.18 bitrate=   0.3kbits/s dup=1 drop=0 speed=2.36x   
    --SNIP---
    frame=160704 fps= 16 q=30.0 size= 1180376kB time=01:51:43.08 bitrate=1442.6kbits/s dup=1 drop=0 speed=0.671x     
    [libx264 @ 0000001f60c5d900] frame I:1167  Avg QP:19.08  size: 44465
    [libx264 @ 0000001f60c5d900] frame P:63049 Avg QP:22.26  size: 12774
    [libx264 @ 0000001f60c5d900] frame B:110691 Avg QP:24.81  size:  2739
    [libx264 @ 0000001f60c5d900] consecutive B-frames:  6.0% 22.8% 18.3% 53.0%
    [libx264 @ 0000001f60c5d900] mb I  I16..4: 14.0% 76.1%  9.9%
    [libx264 @ 0000001f60c5d900] mb P  I16..4:  2.5%  6.6%  0.4%  P16..4: 44.5% 10.8%  5.2%  0.0%  0.0%    skip:30.0%
    [libx264 @ 0000001f60c5d900] mb B  I16..4:  0.1%  0.3%  0.0%  B16..8: 32.1%  1.6%  0.2%  direct: 0.9%  skip:64.9%  L0:37.9% L1:58.7% BI: 3.5%
    [libx264 @ 0000001f60c5d900] final ratefactor: 23.25
    [libx264 @ 0000001f60c5d900] 8x8 transform intra:70.8% inter:85.8%
    [libx264 @ 0000001f60c5d900] coded y,uvDC,uvAC intra: 47.1% 56.6% 19.5% inter: 10.7% 14.2% 0.4%
    [libx264 @ 0000001f60c5d900] i16 v,h,dc,p: 46% 20%  8% 26%
    [libx264 @ 0000001f60c5d900] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 21% 17% 25%  5%  7%  7%  7%  6%  6%
    [libx264 @ 0000001f60c5d900] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 27% 20% 12%  5% 10%  9%  8%  5%  4%
    [libx264 @ 0000001f60c5d900] i8c dc,h,v,p: 58% 18% 18%  6%
    [libx264 @ 0000001f60c5d900] Weighted P-Frames: Y:1.4% UV:0.8%
    [libx264 @ 0000001f60c5d900] ref P L0: 62.6% 12.9% 18.9%  5.6%  0.1%
    [libx264 @ 0000001f60c5d900] ref B L0: 87.6% 11.0%  1.4%
    [libx264 @ 0000001f60c5d900] ref B L1: 94.6%  5.4%
    [libx264 @ 0000001f60c5d900] kb/s:1272.59
    [aac @ 0000001f60b52180] Qavg: 954.859
    

    Edit

    This has something to do with data, when I run this command (cut at 10 minutes)

    ffmpeg.exe -i CI.mp4 -ss 00:00:00 -t 00:08:00 -vcodec copy  -map_metadata 0 -acodec copy CI2.mp4
    

    Mediainfo shows

    Duration                    : 9mn 49s
    Source duration             : 2mn 40s
    

    When I run this one (18 minutes)

    ffmpeg.exe -i CI.mp4 -ss 00:00:00 -t 00:18:00 -vcodec copy  -map_metadata 0 -acodec copy CI2.mp4
    

    Mediainfo shows

    Duration                    : 17mn 49s
    Source duration             : 3mn 30s
    

    How can I edit the metadata directly

  • how to make omxh264enc output filler data ?

    8 septembre 2020, par BlueWaterCrystal

    I require filler data from the encoder to artificially raise the bitrate to sustain constant bitrate.

    normally x264enc does this but omx264enc doesn't seem to. even though there seems be a value within its code PROP_FILLER_DATA

  • x264 encoding severe quality loss

    1er septembre 2020, par SolskGaer

    I used this repo to encode a mjpeg stream to a h264 one, but the output is not so good. The stream is a series of screenshot of an iPhone. In the output stream, even the lines between two items in the settings app are gone. How do I improve the output stream quality? Here is the code snippet that x264-go use to init an encoder

    func NewEncoder(w io.Writer, opts *Options) (e *Encoder, err error) {
        e = &Encoder{}
    
        e.w = w
        e.pts = 0
        e.opts = opts
    
        e.csp = x264c.CspI420
    
        e.nals = make([]*x264c.Nal, 3)
        e.img = NewYCbCr(image.Rect(0, 0, e.opts.Width, e.opts.Height))
    
        param := x264c.Param{}
    
        if e.opts.Preset != "" && e.opts.Profile != "" {
            ret := x264c.ParamDefaultPreset(&param, e.opts.Preset, e.opts.Tune)
            if ret < 0 {
                err = fmt.Errorf("x264: invalid preset/tune name")
                return
            }
        } else {
            x264c.ParamDefault(&param)
        }
    
        param.IWidth = int32(e.opts.Width)
        param.IHeight = int32(e.opts.Height)
    
        param.ICsp = e.csp
        param.BVfrInput = 0
        param.BRepeatHeaders = 1
        param.BAnnexb = 1
    
        param.ILogLevel = e.opts.LogLevel
    
        if e.opts.FrameRate > 0 {
            param.IFpsNum = uint32(e.opts.FrameRate)
            param.IFpsDen = 1
    
            param.IKeyintMax = int32(e.opts.FrameRate)
            param.BIntraRefresh = 1
        }
    
        if e.opts.Profile != "" {
            ret := x264c.ParamApplyProfile(&param, e.opts.Profile)
            if ret < 0 {
                err = fmt.Errorf("x264: invalid profile name")
                return
            }
        }
    
        // Allocate on create instead while encoding
        var picIn x264c.Picture
        ret := x264c.PictureAlloc(&picIn, e.csp, int32(e.opts.Width), int32(e.opts.Height))
        if ret < 0 {
            err = fmt.Errorf("x264: cannot allocate picture")
            return
        }
        e.picIn = picIn
        defer func() {
            // Cleanup if intialization fail
            if err != nil {
                x264c.PictureClean(&picIn)
            }
        }()
    
        e.e = x264c.EncoderOpen(&param)
        if e.e == nil {
            err = fmt.Errorf("x264: cannot open the encoder")
            return
        }
    
        ret = x264c.EncoderHeaders(e.e, e.nals, &e.nnals)
        if ret < 0 {
            err = fmt.Errorf("x264: cannot encode headers")
            return
        }
    
        if ret > 0 {
            b := C.GoBytes(e.nals[0].PPayload, C.int(ret))
            n, er := e.w.Write(b)
            if er != nil {
                err = er
                return
            }
    
            if int(ret) != n {
                err = fmt.Errorf("x264: error writing headers, size=%d, n=%d", ret, n)
            }
        }
    
        return
    }
    

    and the encoder option is defined as

    opts := &x264.Options{
            Width:     int(width)/2*2,
            Height:    int(height)/2*2,
            FrameRate: 15,
            Tune:      "zerolatency",
            Preset:    "medium",
            Profile:   "baseline",
            LogLevel:  x264.LogNone,
        }
    

    And I also used ffmpeg(though the api is pretty old)

    package screencast
    
    import (
    
        /*
            #include 
            #include 
            #include 
            #include 
            #include avcodec.h>
            #include avformat.h>
            #include avutil.h>
            #include opt.h>
            #include channel_layout.h>
            #include common.h>
            #include imgutils.h>
            #include mathematics.h>
            #include samplefmt.h>
    
            typedef struct {
                int w, h;
                int pixfmt;
                char *preset[2];
                char *profile;
                int bitrate;
                int got;
                AVCodec *c;
                AVCodecContext *ctx;
                AVFrame *f;
                AVPacket pkt;
            } h264enc_t;
    
            static int h264enc_new(h264enc_t *m) {
                m->c = avcodec_find_encoder(AV_CODEC_ID_H264);
                m->ctx = avcodec_alloc_context3(m->c);
                m->ctx->width = m->w;
                m->ctx->height = m->h;
                m->ctx->pix_fmt = m->pixfmt;
                m->ctx->time_base = (AVRational){1,10};
                av_opt_set(m->ctx->priv_data, "preset", "slow", 0);
                av_opt_set(m->ctx->priv_data, "tune", "zerolatency", 0);
                av_opt_set(m->ctx->priv_data, "profile", "baseline", 0);
                av_opt_set(m->ctx->priv_data, "crf", "18.0.", 0);
                m->f = av_frame_alloc();
                m->f->format = m->ctx->pix_fmt;
                m->f->width = m->ctx->width;
                m->f->height = m->ctx->height;
                avcodec_open2(m->ctx, m->c, NULL);
                return av_image_alloc(m->f->data, m->f->linesize, m->ctx->width, m->ctx->height, m->ctx->pix_fmt, 32);
            }
    
        */
        "C"
        "errors"
        "image"
        "unsafe"
        //"log"
    )
    
    type H264Encoder struct {
        m      C.h264enc_t
        Header []byte
        Pixfmt image.YCbCrSubsampleRatio
        W, H   int
        pts    int
    }
    
    func NewH264Encoder(w, h int) (m *H264Encoder, err error) {
        m = &H264Encoder{}
        m.m.w = (C.int)(w)
        m.m.h = (C.int)(h)
        m.W = w
        m.H = h
        m.Pixfmt = image.YCbCrSubsampleRatio420
        m.m.pixfmt = C.AV_PIX_FMT_YUV420P
        r := C.h264enc_new(&m.m)
        if int(r) < 0 {
            err = errors.New("open encoder failed")
            return
        }
        return
    }
    
    func (m *H264Encoder) Encode(img *image.YCbCr) (data []byte, err error) {
        var f *C.AVFrame
        if img == nil {
            f = nil
        } else {
            if img.SubsampleRatio != m.Pixfmt {
                err = errors.New("image pixfmt not match")
                return
            }
            if img.Rect.Dx() != m.W || img.Rect.Dy() != m.H {
                err = errors.New("image size not match")
                return
            }
            f = m.m.f
            f.data[0] = (*C.uint8_t)(unsafe.Pointer(&img.Y[0]))
            f.data[1] = (*C.uint8_t)(unsafe.Pointer(&img.Cb[0]))
            f.data[2] = (*C.uint8_t)(unsafe.Pointer(&img.Cr[0]))
            f.linesize[0] = (C.int)(img.YStride)
            f.linesize[1] = (C.int)(img.CStride)
            f.linesize[2] = (C.int)(img.CStride)
        }
    
        C.av_init_packet(&m.m.pkt)
        m.m.pkt.data = nil
        m.m.pkt.size = 0
        f.pts = (C.longlong)(m.pts)
        m.pts++
        r := C.avcodec_encode_video2(m.m.ctx, &m.m.pkt, f, &m.m.got)
        defer C.av_packet_unref(&m.m.pkt)
        if int(r) < 0 {
            err = errors.New("encode failed")
            return
        }
        if m.m.got == 0 {
            err = errors.New("no picture")
            return
        }
        if m.m.pkt.size == 0 {
            err = errors.New("packet size == 0")
            return
        }
    
        data = make([]byte, m.m.pkt.size)
        C.memcpy(
            unsafe.Pointer(&data[0]),
            unsafe.Pointer(m.m.pkt.data),
            (C.size_t)(m.m.pkt.size),
        )
        return data, nil
    }
    

    but got the same output. However, when I use the ffmpeg binary, the result was pretty good, so I guess I set wrong parameters, but I don't know which. Any suggestion would be appreciated. If you have better way to achieve this, I'll appreciate it.

    For your information: I must do this using golang.

    screenshot of output stream

  • Playback of x264 encoded video in FLV is very slow (screen recording)

    23 août 2020, par NewbieCoder

    Task:
    I am recording the screen in 30 FPS and saving it to an FLV file. Images of the screen are obtained using the DXGI API in Windows. These images are then encoded into a video using libx264. Then the video data is stored in FLV container.

    Issue/Problem:
    When the video is played in any video player, it is very slow. The frame rate information shows as 30 FPS but the playback feels like 15 FPS.

    Details:
    Pseudo-code for the whole software:

    FPS = 30
    target_time_for_each_frame = 1/FPS;
    timestamp = 0;
    while (true)
    {
        start_time = current_time();
    
        image = capture_screen();
        video_data = encode(image);
        writeToFLV(video_data, timestamp);
        timestamp += target_time_for_each_frame;
    
        end_time = current_time();
        time_taken_for_current_frame = (end_time - start_time)
    
        // put the app to sleep to take screenshots only at 1/FPS or 33ms intervals. (delaying)
        if (time_taken_for_current_frame < target_time_for_each_frame)
        {
            sleep(target_time_for_each_frame - time_taken_for_current_frame)
        }
    }
    

    I am encoding with these parameters:

    void init_encoder()
    {
            x264_param_default_preset(&param, "veryfast", 0);
    
            param.i_width = 1920;
            param.i_height = 1080;
            param.i_fps_num = 30;
            param.i_fps_den = 1;
            param.i_timebase_num = param.i_fps_den;
            param.i_timebase_den = param.i_fps_num;
            param.rc.i_bitrate = 2500;
            param.i_bframe = 0;
            param.rc.i_rc_method = X264_RC_ABR;
            param.rc.f_rf_constant = 0;
            //param.rc.b_filler = true;
            param.rc.i_vbv_max_bitrate = param.rc.i_bitrate;
            param.rc.i_vbv_buffer_size = param.rc.i_bitrate;
            param.b_repeat_headers = 0;
            param.b_annexb = 1;
    
            x264_param_apply_profile(&param, 0);
    }
    

    The timestamp given for the FLV file is correct:

    timestamp += (1/30)   // It is increased by 33 ms every loop
    

    I am setting pts of the input picture in this code:

    int encodeYUV(uint8_t* data)
        {
            // convert BGRA to YUV using FFmpeg
            BGRA.data[0] = data;
            sws_scale(sws, BGRA.data, BGRA.linesize, 0, param.i_height, picIn.img.plane, picIn.img.i_stride);
    
            nal_size = x264_encoder_encode(h, &nals, &nal_count, &picIn, &picOut);
            picIn.i_pts += 1; // pts += 1 because timebase_num = 1, timebase_den = 30. So it increases by 33 ms
    
            return 0;
        }
    

    Increasing the pts to a very high value every loop (pts += 1000) makes the playback very pixelated and also plays very fast and repeats the same frame again and again sometimes.

    Before this problem, I used tune as "zerolatency" and the playback was fine. But the video quality was not good so I had to remove it. And once I removed it, these problems came.
    The parameters I'm using are not recommended for recording a video, but they are good for live streaming. My main purpose is a screen sharing app. I am using it as a screen recorder only to test if it works.

    I am not sure if the problem is in the way I increase PTS or timestamp or if it is in the way I coded the delay in the app (to cap the FPS correctly). The problem really feels like it's related to only these factors (x264 PTS or FLV timestamp or delay code).

    Any hints would be very much appreciated.

  • Decoder (codec h264) not found for input stream #0:1 [closed]

    10 août 2020, par Harry Boy

    When I try to convert a file from one type to I get the error: Decoder (codec h264) not found for input stream #0:1

    ffmpeg -i video.mp4 video_converted.mpg
    ffmpeg version 4.3 Copyright (c) 2000-2020 the FFmpeg developers
    built with gcc 10.2.0 (GCC)
    configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --enable-gpl --enable-version3 --enable-nonfree --disable-static --enable-shared --enable-avresample --enable-gmp --enable-ladspa --enable-libass --enable-libbluray --enable-libfdk-aac --enable-libfontconfig --enable-libfreetype --enable-libglslang --enable-libgsm --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-libpulse --enable-libsnappy --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libxml2 --enable-opencl --enable-opengl --enable-openssl --enable-vulkan --enable-libdrm --enable-libcelt --extra-cflags='-march=core2 -pipe -O2 -DNDEBUG -D_FORTIFY_SOURCE=2 -mmmx -msse2 -mssse3 -funwind-tables' --extra-cxxflags='-march=core2 -pipe -O2 -DNDEBUG -D_FORTIFY_SOURCE=2 -mmmx -msse2 -mssse3 -funwind-tables' --extra-ldflags='-Wl,--as-needed -Wl,--strip-all' --disable-debug --disable-demuxer='hls,applehttp'
    WARNING: library configuration mismatch
    avutil      configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --incdir=/usr/include/ffmpeg --extra-cflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -g' --optflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -g' --disable-htmlpages --enable-pic --disable-stripping --enable-shared --disable-static --enable-gpl --disable-openssl --enable-avresample --enable-gnutls --enable-ladspa --disable-cuda-sdk --enable-libass --enable-libbluray --enable-libbs2b --enable-libcelt --enable-libcdio --enable-libdc1394 --enable-libdrm --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libv4l2 --enable-libvpx --enable-libwebp --enable-libxml2 --enable-libzimg --enable-libzvbi --enable-vaapi --enable-vdpau --enable-muxers --enable-demuxers --disable-encoders --disable-decoders --disable-decoder='mpeg4,h263,h264,hevc,vc1' --enable-encoder=',aac,apng,ass,ayuv,bmp,ffv1,ffvhuff,flac,gif,huffyuv,jpegls,libaom,libaom_av1,libcodec2,libgsm,libmp3lame,libopenjpeg,libopus,libschroedinger,libspeex,libtheora,libtwolame,libvorbis,libvpx_vp8,libvpx_vp9,libwebp,libwebp_anim,mjpeg,mpeg1video,mpeg2video,mp2,mp2fixed,opus,pam,pbm,pcm_alaw,pcm_f32be,pcm_f32le,pcm_f64be,pcm_f64le,pcm_mulaw,pcm_s16be,pcm_s16be_planar,pcm_s16le,pcm_s16le_planar,pcm_s24be,pcm_s24le,pcm_s24le_planar,pcm_s32be,pcm_s32le,pcm_s32le_planar,pcm_s8,pcm_s8_planar,pcm_u16be,pcm_u16le,pcm_u24be,pcm_u24le,pcm_u32be,pcm_u32le,pcm_u8,pcx,pgm,pgmyuv,png,ppm,rawvideo,sgi,srt,ssa,sunrast,targa,text,tiff,v210,v308,v408,v410,vorbis,webvtt,xbm,xwd,y41p,yuv4,zlib,' --enable-decoder=',aac,ac3,ansi,apng,ass,ayuv,bmp,dirac,exr,ffv1,ffvhuff,ffwavesynth,flac,gif,gsm,huffyuv,ilbc,libaom,libaom_av1,libcelt,libcodec2,libdav1d,libgsm,libopenjpeg,libopus,libschroedinger,libspeex,libvorbis,libvpx_vp8,libvpx_vp9,mjpeg,mpeg1video,mpeg2video,,mp1,mp1float,mp2,mp2float,mp3,mp3float,opus,pam,pbm,pcm_alaw,pcm_bluray,pcm_dvd,pcm_f32be,pcm_f32le,pcm_f64be,pcm_f64le,pcm_mulaw,pcm_s16be,pcm_s16be_planar,pcm_s16le,pcm_s16le_planar,pcm_s24be,pcm_s24le,pcm_s24le_planar,pcm_s32be,pcm_s32le,pcm_s32le_planar,pcm_s8,pcm_s8_planar,pcm_u16be,pcm_u16le,pcm_u24be,pcm_u24le,pcm_u32be,pcm_u32le,pcm_u8,pcx,pgm,pgmyuv,pgssub,png,ppm,rawvideo,sgi,srt,ssa,sunrast,targa,text,theora,tiff,v210,v210x,v308,v408,v410,vorbis,vp3,vp5,vp6,vp6a,vp6f,vp8,vp9,webp,webvtt,xbm,xwd,y41p,yuv4,zlib,'
    avcodec     configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --incdir=/usr/include/ffmpeg --extra-cflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -g' --optflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -g' --disable-htmlpages --enable-pic --disable-stripping --enable-shared --disable-static --enable-gpl --disable-openssl --enable-avresample --enable-gnutls --enable-ladspa --disable-cuda-sdk --enable-libass --enable-libbluray --enable-libbs2b --enable-libcelt --enable-libcdio --enable-libdc1394 --enable-libdrm --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libv4l2 --enable-libvpx --enable-libwebp --enable-libxml2 --enable-libzimg --enable-libzvbi --enable-vaapi --enable-vdpau --enable-muxers --enable-demuxers --disable-encoders --disable-decoders --disable-decoder='mpeg4,h263,h264,hevc,vc1' --enable-encoder=',aac,apng,ass,ayuv,bmp,ffv1,ffvhuff,flac,gif,huffyuv,jpegls,libaom,libaom_av1,libcodec2,libgsm,libmp3lame,libopenjpeg,libopus,libschroedinger,libspeex,libtheora,libtwolame,libvorbis,libvpx_vp8,libvpx_vp9,libwebp,libwebp_anim,mjpeg,mpeg1video,mpeg2video,mp2,mp2fixed,opus,pam,pbm,pcm_alaw,pcm_f32be,pcm_f32le,pcm_f64be,pcm_f64le,pcm_mulaw,pcm_s16be,pcm_s16be_planar,pcm_s16le,pcm_s16le_planar,pcm_s24be,pcm_s24le,pcm_s24le_planar,pcm_s32be,pcm_s32le,pcm_s32le_planar,pcm_s8,pcm_s8_planar,pcm_u16be,pcm_u16le,pcm_u24be,pcm_u24le,pcm_u32be,pcm_u32le,pcm_u8,pcx,pgm,pgmyuv,png,ppm,rawvideo,sgi,srt,ssa,sunrast,targa,text,tiff,v210,v308,v408,v410,vorbis,webvtt,xbm,xwd,y41p,yuv4,zlib,' --enable-decoder=',aac,ac3,ansi,apng,ass,ayuv,bmp,dirac,exr,ffv1,ffvhuff,ffwavesynth,flac,gif,gsm,huffyuv,ilbc,libaom,libaom_av1,libcelt,libcodec2,libdav1d,libgsm,libopenjpeg,libopus,libschroedinger,libspeex,libvorbis,libvpx_vp8,libvpx_vp9,mjpeg,mpeg1video,mpeg2video,,mp1,mp1float,mp2,mp2float,mp3,mp3float,opus,pam,pbm,pcm_alaw,pcm_bluray,pcm_dvd,pcm_f32be,pcm_f32le,pcm_f64be,pcm_f64le,pcm_mulaw,pcm_s16be,pcm_s16be_planar,pcm_s16le,pcm_s16le_planar,pcm_s24be,pcm_s24le,pcm_s24le_planar,pcm_s32be,pcm_s32le,pcm_s32le_planar,pcm_s8,pcm_s8_planar,pcm_u16be,pcm_u16le,pcm_u24be,pcm_u24le,pcm_u32be,pcm_u32le,pcm_u8,pcx,pgm,pgmyuv,pgssub,png,ppm,rawvideo,sgi,srt,ssa,sunrast,targa,text,theora,tiff,v210,v210x,v308,v408,v410,vorbis,vp3,vp5,vp6,vp6a,vp6f,vp8,vp9,webp,webvtt,xbm,xwd,y41p,yuv4,zlib,'
    avformat    configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --incdir=/usr/include/ffmpeg --extra-cflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -g' --optflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -g' --disable-htmlpages --enable-pic --disable-stripping --enable-shared --disable-static --enable-gpl --disable-openssl --enable-avresample --enable-gnutls --enable-ladspa --disable-cuda-sdk --enable-libass --enable-libbluray --enable-libbs2b --enable-libcelt --enable-libcdio --enable-libdc1394 --enable-libdrm --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libv4l2 --enable-libvpx --enable-libwebp --enable-libxml2 --enable-libzimg --enable-libzvbi --enable-vaapi --enable-vdpau --enable-muxers --enable-demuxers --disable-encoders --disable-decoders --disable-decoder='mpeg4,h263,h264,hevc,vc1' --enable-encoder=',aac,apng,ass,ayuv,bmp,ffv1,ffvhuff,flac,gif,huffyuv,jpegls,libaom,libaom_av1,libcodec2,libgsm,libmp3lame,libopenjpeg,libopus,libschroedinger,libspeex,libtheora,libtwolame,libvorbis,libvpx_vp8,libvpx_vp9,libwebp,libwebp_anim,mjpeg,mpeg1video,mpeg2video,mp2,mp2fixed,opus,pam,pbm,pcm_alaw,pcm_f32be,pcm_f32le,pcm_f64be,pcm_f64le,pcm_mulaw,pcm_s16be,pcm_s16be_planar,pcm_s16le,pcm_s16le_planar,pcm_s24be,pcm_s24le,pcm_s24le_planar,pcm_s32be,pcm_s32le,pcm_s32le_planar,pcm_s8,pcm_s8_planar,pcm_u16be,pcm_u16le,pcm_u24be,pcm_u24le,pcm_u32be,pcm_u32le,pcm_u8,pcx,pgm,pgmyuv,png,ppm,rawvideo,sgi,srt,ssa,sunrast,targa,text,tiff,v210,v308,v408,v410,vorbis,webvtt,xbm,xwd,y41p,yuv4,zlib,' --enable-decoder=',aac,ac3,ansi,apng,ass,ayuv,bmp,dirac,exr,ffv1,ffvhuff,ffwavesynth,flac,gif,gsm,huffyuv,ilbc,libaom,libaom_av1,libcelt,libcodec2,libdav1d,libgsm,libopenjpeg,libopus,libschroedinger,libspeex,libvorbis,libvpx_vp8,libvpx_vp9,mjpeg,mpeg1video,mpeg2video,,mp1,mp1float,mp2,mp2float,mp3,mp3float,opus,pam,pbm,pcm_alaw,pcm_bluray,pcm_dvd,pcm_f32be,pcm_f32le,pcm_f64be,pcm_f64le,pcm_mulaw,pcm_s16be,pcm_s16be_planar,pcm_s16le,pcm_s16le_planar,pcm_s24be,pcm_s24le,pcm_s24le_planar,pcm_s32be,pcm_s32le,pcm_s32le_planar,pcm_s8,pcm_s8_planar,pcm_u16be,pcm_u16le,pcm_u24be,pcm_u24le,pcm_u32be,pcm_u32le,pcm_u8,pcx,pgm,pgmyuv,pgssub,png,ppm,rawvideo,sgi,srt,ssa,sunrast,targa,text,theora,tiff,v210,v210x,v308,v408,v410,vorbis,vp3,vp5,vp6,vp6a,vp6f,vp8,vp9,webp,webvtt,xbm,xwd,y41p,yuv4,zlib,'
    swresample  configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --incdir=/usr/include/ffmpeg --extra-cflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -g' --optflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -g' --disable-htmlpages --enable-pic --disable-stripping --enable-shared --disable-static --enable-gpl --disable-openssl --enable-avresample --enable-gnutls --enable-ladspa --disable-cuda-sdk --enable-libass --enable-libbluray --enable-libbs2b --enable-libcelt --enable-libcdio --enable-libdc1394 --enable-libdrm --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libv4l2 --enable-libvpx --enable-libwebp --enable-libxml2 --enable-libzimg --enable-libzvbi --enable-vaapi --enable-vdpau --enable-muxers --enable-demuxers --disable-encoders --disable-decoders --disable-decoder='mpeg4,h263,h264,hevc,vc1' --enable-encoder=',aac,apng,ass,ayuv,bmp,ffv1,ffvhuff,flac,gif,huffyuv,jpegls,libaom,libaom_av1,libcodec2,libgsm,libmp3lame,libopenjpeg,libopus,libschroedinger,libspeex,libtheora,libtwolame,libvorbis,libvpx_vp8,libvpx_vp9,libwebp,libwebp_anim,mjpeg,mpeg1video,mpeg2video,mp2,mp2fixed,opus,pam,pbm,pcm_alaw,pcm_f32be,pcm_f32le,pcm_f64be,pcm_f64le,pcm_mulaw,pcm_s16be,pcm_s16be_planar,pcm_s16le,pcm_s16le_planar,pcm_s24be,pcm_s24le,pcm_s24le_planar,pcm_s32be,pcm_s32le,pcm_s32le_planar,pcm_s8,pcm_s8_planar,pcm_u16be,pcm_u16le,pcm_u24be,pcm_u24le,pcm_u32be,pcm_u32le,pcm_u8,pcx,pgm,pgmyuv,png,ppm,rawvideo,sgi,srt,ssa,sunrast,targa,text,tiff,v210,v308,v408,v410,vorbis,webvtt,xbm,xwd,y41p,yuv4,zlib,' --enable-decoder=',aac,ac3,ansi,apng,ass,ayuv,bmp,dirac,exr,ffv1,ffvhuff,ffwavesynth,flac,gif,gsm,huffyuv,ilbc,libaom,libaom_av1,libcelt,libcodec2,libdav1d,libgsm,libopenjpeg,libopus,libschroedinger,libspeex,libvorbis,libvpx_vp8,libvpx_vp9,mjpeg,mpeg1video,mpeg2video,,mp1,mp1float,mp2,mp2float,mp3,mp3float,opus,pam,pbm,pcm_alaw,pcm_bluray,pcm_dvd,pcm_f32be,pcm_f32le,pcm_f64be,pcm_f64le,pcm_mulaw,pcm_s16be,pcm_s16be_planar,pcm_s16le,pcm_s16le_planar,pcm_s24be,pcm_s24le,pcm_s24le_planar,pcm_s32be,pcm_s32le,pcm_s32le_planar,pcm_s8,pcm_s8_planar,pcm_u16be,pcm_u16le,pcm_u24be,pcm_u24le,pcm_u32be,pcm_u32le,pcm_u8,pcx,pgm,pgmyuv,pgssub,png,ppm,rawvideo,sgi,srt,ssa,sunrast,targa,text,theora,tiff,v210,v210x,v308,v408,v410,vorbis,vp3,vp5,vp6,vp6a,vp6f,vp8,vp9,webp,webvtt,xbm,xwd,y41p,yuv4,zlib,'
    libavutil      56. 51.100 / 56. 31.100
    libavcodec     58. 91.100 / 58. 54.100
    libavformat    58. 45.100 / 58. 29.100
    libavdevice    58. 10.100 / 58. 10.100
    libavfilter     7. 85.100 /  7. 85.100
    libavresample   4.  0.  0 /  4.  0.  0
    libswscale      5.  7.100 /  5.  7.100
    libswresample   3.  7.100 /  3.  5.100
    libpostproc    55.  7.100 / 55.  7.100
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x55dfcea468c0] st: 1 edit list: 1 Missing key frame while searching for timestamp: 0
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x55dfcea468c0] st: 1 edit list 1 Cannot find an index entry before timestamp: 0.
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
    Metadata:
    major_brand     : isom
    minor_version   : 0
    compatible_brands: mp41avc1
    creation_time   : 2019-07-25T09:16:31.000000Z
    encoder         : vlc 3.0.4 stream output
    encoder-eng     : vlc 3.0.4 stream output
    Duration: 00:00:07.07, start: 0.000000, bitrate: 3900 kb/s
    Stream #0:0(eng): Audio: mp3 (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
    Metadata:
      creation_time   : 2019-07-25T09:16:31.000000Z
      handler_name    : SoundHandler
    Stream #0:1(eng): Video: h264 (avc1 / 0x31637661), none, 1088x1920, 3766 kb/s, 29.99 fps, 29.97 tbr, 1000k tbn, 1000k tbc (default)
    Metadata:
      rotate          : 90
      creation_time   : 2019-07-25T09:16:31.000000Z
      handler_name    : VideoHandler
    Side data:
      displaymatrix: rotation of -90.00 degrees
    Stream mapping:
      Stream #0:1 -> #0:0 (? (?) -> mpeg1video (native))
      Stream #0:0 -> #0:1 (mp3 (mp3float) -> mp2 (native))
    Decoder (codec h264) not found for input stream #0:1