Newest 'x264' Questions - Stack Overflow

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

Les articles publiés sur le site

  • x264 encoder source documentation [closed]

    9 mars 2013, par deepak

    Can anyone please let me know if there is any documentation of x264 source available? Actually I wanted to know exactly what tasks each c file carry out.

    I am new to it.

    Thanks in advance

  • x264 library speed - Altivec vs SSE2 -

    25 février 2013, par Omer Merdan

    I have simple cheap dualcore intel-3ghz-debian and access to super-expensive powerPc7-Aix.

    And after few days of strugle, i compiled libx264 and tested it on both computers:

    1. GCC: library x264 on intel (with SSE2 capabilities) and
    2. GCC on 16 core powerPc (with altivec).

    ... and result is that cheap intel is x2 times faster ! (with altivec disabled, intel is 10x times faster)

    My question: is this normal? Does all other powerPC-users have same results? Can powerPc-altivec-optimisation of x264 library work at same speed with intel... or MMX/SSE optimisation is officially at least 2 times faster for this library?

    I am not interested in multi-thread options. Number of cores and threads are irrelevant. Just simple one-thread x264 encoding with default "medium preset" using rawvideo as source, sse vs altivec.

    Maybe native Aix XLC compiler provide better results? (i managed only gcc to work)

    ... mac-powerpc-users maybe know something about this.

    powrPc7-Aix:$ time (cat raw10sec.y4m |x264 --input-res 720x576 --fps 50 -o /dev/null -)
    x264: 64-bit XCOFF
    x264 [info]: using cpu capabilities: Altivec
    time: real 0m33.559s
    ---
    intelDebian:$ time (cat raw10sec.y4m |x264 --input-res 720x576 --fps 50 -o /dev/null -)
    x264: ELF 32-bit LSB executable
    x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.1 Cache64
    time: real 0m16.503s
    
  • Video encoding and keyframes

    24 février 2013, par Tishu

    I am transcoding a video frame by frame and using x264+ffmpeg to encode. The original video plays fine, but the first few frames of my transcoded vide show grey artefacts. I understand this is because of time compression and these artefacts disappear after a few frames.

    See these two pictures which are the first and second frames. The third frame is normal (i.e. no grey artefact and not blurry like the second one) First frame Second frame

    How can I force the first frame to be a key frame (ie fully encoded in my output video) so that these artefacts do not show?

    Edit - more details

    Here is what I am doing more in details. I used bit form differents tutorials to read a video frame by frame and reencode each frame to a new video. My encoding parameters are the following:

    avcodec_get_context_defaults3(c, *codec);
    c->codec_id = codec_id;
    c->bit_rate = output_bitrate;
    /* Resolution must be a multiple of two. */
    c->width    = output_width;
    c->height   = output_height;
    /* timebase: This is the fundamental unit of time (in seconds) in terms
     * of which frame timestamps are represented. For fixed-fps content,
     * timebase should be 1/framerate and timestamp increments should be
     * identical to 1. */
    st->r_frame_rate.num = output_framerate_num;
    st->r_frame_rate.den = output_framerate_den;
    c->time_base.den = output_timebase_den;
    c->time_base.num = output_timebase_num;
    c->gop_size      = 3; /* emit one intra frame every twelve frames at most */
    c->pix_fmt       = STREAM_PIX_FMT;
    if (c->codec_id == AV_CODEC_ID_MPEG2VIDEO) {
        /* just for testing, we also add B frames */
        c->max_b_frames = 2;
    }
    if (c->codec_id == AV_CODEC_ID_MPEG1VIDEO) {
        /* Needed to avoid using macroblocks in which some coeffs overflow.
         * This does not happen with normal video, it just happens here as
         * the motion of the chroma plane does not match the luma plane. */
        c->mb_decision = 2;
    }
    c->max_b_frames = 2;
    c->scenechange_threshold = 0;
    c->rc_buffer_size = 0;
    c->me_method = ME_ZERO;
    

    Then I process each frame, probably doing something wrong there. The decoding bit:

    while(av_read_frame(gFormatCtx, &packet)>=0) {
        // Is this a packet from the video stream?
        if(packet.stream_index==gVideoStreamIndex) {
            // Decode video frame
            avcodec_decode_video2(gVideoCodecCtx, pCurrentFrame, &frameFinished, &packet);
            // Did we get a video frame?
            if(frameFinished) {
                [...]
                if(firstPts == -999) /*Initial value*/
                    firstPts = packet.pts;
                deltaPts = packet.pts - firstPts;
                double seconds = deltaPts*av_q2d(gFormatCtx->streams[gVideoStreamIndex]->time_base);
                [...]
                muxing_writeVideoFrame(pCurrentFrame, packet.pts);
            }
        }
    }
    

    The actual writing:

    int muxing_writeVideoFrame(AVFrame *frame, int64_t pts)
    {
    frameCount = frameCount +1;
    if(frameCount > 0)
    {
        if (video_st)
            video_pts = (double)video_st->pts.val * video_st->time_base.num /
                        video_st->time_base.den;
        else
            video_pts = 0.0;
    
        if (video_st && !(video_st && audio_st && audio_pts < video_pts))
        {
            frame->pts = pts;//av_rescale_q(frame_count, video_st->codec->time_base, video_st->time_base);
            write_video_frame(oc, video_st, frame);
        }
    }
    
    return 0;
    }
    
    static int write_video_frame(AVFormatContext *oc, AVStream *st, AVFrame *frame)
    {
        int ret;
        static struct SwsContext *sws_ctx;
        //LOGI(10, frame_count);
        AVCodecContext *c = st->codec;
    
        /* encode the image */
        AVPacket pkt;
        int got_output;
        av_init_packet(&pkt);
        pkt.data = NULL;    // packet data will be allocated by the encoder
        pkt.size = 0;
    ret = avcodec_encode_video2(c, &pkt, frame, &got_output);
    if (ret < 0) {
        fprintf(stderr, "Error encoding video frame: %s\n", av_err2str(ret));
        exit(1);
    }
    /* If size is zero, it means the image was buffered. */
    if (got_output) {
        if (c->coded_frame->key_frame)
            pkt.flags |= AV_PKT_FLAG_KEY;
        pkt.stream_index = st->index;
        /* Write the compressed frame to the media file. */
        ret = av_interleaved_write_frame(oc, &pkt);
    } else {
        ret = 0;
    }
    
        if (ret != 0) {
            LOGI(10, av_err2str(ret));
            exit(1);
        }
        frame_count++;
        return got_output;
    }
    
  • Reducing the bit rate is dropping the audio stream [closed]

    19 février 2013, par user977505

    I'm a newbie to the ffmpeg, x264 commands and conversion. So please bear w/ me.

    I've a H.264 content w/ very high bit rate and I'm using ffmepg, x264 commands to reduce the bit rate. The bit rate is getting reduced but the problem is the output doesn't have the audio stream anymore.

    Here are the commands, I'm using:

    ffmpeg.exe  -i King_Maker_Leader.mp4 -pix_fmt yuv420p -vf scale=1024:576 -r 24 \
      -f yuv4mpegpipe - | x264.exe  --bitrate 1664 --demuxer y4m \
      --preset slow --ref 3 --threads 6 --thread-input --no-scenecut \
      --no-interlaced --stats King_Maker_Leader.stats --vbv-bufsize 3328000 \
      --vbv-maxrate 1996 --pass 1 --output NUL --profile main --level 3.1 --sar 1:1 \
      --tune film --keyint 96 -
    
    ffmpeg.exe  -i King_Maker_Leader.mp4 -pix_fmt yuv420p -vf scale=1024:576 \
      -r 24 -f yuv4mpegpipe - | x264.exe  --bitrate 1664 --demuxer y4m \
      --preset slow --ref 3 --threads 6 --thread-input --no-scenecut \
      --no-interlaced --stats King_Maker_Leader.stats --vbv-bufsize 3328000 \
      --vbv-maxrate 1996 --pass 2 --output King_Maker_Leader_generated.mp4 \
      --profile main --level 3.1 --sar 1:1 --tune film --keyint 96 -
    

    I cannot figure out what is wrong with the above commands.

    I'm attaching the partial logs from pass 2 command that show the input has two streams (video and audio) and the output has only video stream.

    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '..\yathrakkarude_sathruka.mp4':
      Metadata:
        major_brand     : isom
        minor_version   : 512
        compatible_brands: isomiso2avc1mp41
        encoder         : Lavf54.6.101
      Duration: 00:01:00.37, start: 0.000000, bitrate: 8587 kb/s
        Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 720x576 [
    SAR 16:11 DAR 20:11], 8073 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc
        Metadata:
          handler_name    : VideoHandler
        Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, s16, 508
     kb/s
        Metadata:
          handler_name    : SoundHandler
    Output #0, yuv4mpegpipe, to 'pipe:':
      Metadata:
        major_brand     : isom
        minor_version   : 512
        compatible_brands: isomiso2avc1mp41
        encoder         : Lavf54.25.104
        Stream #0:0(eng): Video: rawvideo (I420 / 0x30323449), yuv420p, 1024x576 [SA
    R 45:44 DAR 20:11], q=2-31, 200 kb/s, 90k tbn, 24 tbc
        Metadata:
          handler_name    : VideoHandler
    Stream mapping:
      Stream #0:0 -> #0:0 (h264 -> rawvideo)
    Press [q] to stop, [?] for help
    [yuv4mpegpipe @ 016d5800] Encoder did not produce proper pts, making some up.
    y4m [info]: 1024x576p 45:44 @ 24/1 fps (cfr)
    x264 [info]: using SAR=1/1
    x264 [warning]: VBV buffer (2000000) > level limit (14000)
    x264 [info]: using cpu capabilities: MMX2 SSE2Fast FastShuffle SSEMisalign LZCNT
    
  • compiling x264 on centos 5.9

    12 février 2013, par user1820718

    I get the follwoing error while trying to compile x264 on centos 5.9. If anyone can help i'll much appreciate it :

    gcc -o x264  x264.o input/input.o input/timecode.o input/raw.o input/y4m.o output/raw.o output/matroska.o output/matroska_ebml.o output/flv.o output/flv_bytestream.o filters/filters.o filters/video/video.o filters/video/source.o filters/video/internal.o filters/video/resize.o filters/video/cache.o filters/video/fix_vfr_pts.o filters/video/select_every.o filters/video/crop.o filters/video/depth.o input/thread.o input/lavf.o libx264.a -L. -lavformat -lpostproc -lavcodec -lswscale -lavutil -lm -lz -lbz2 -lpthread -lswscale -lavutil  -m64  -lm -lpthread
    

    Error:

    /usr/local/lib/libavcodec.a(libmp3lame.o): In function `mp3lame_encode_close':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libmp3lame.c:90: undefined reference to `lame_close'
    /usr/local/lib/libavcodec.a(libmp3lame.o): In function `mp3lame_encode_frame':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libmp3lame.c:220: undefined reference to `lame_encode_flush'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libmp3lame.c:198: undefined reference to `lame_encode_buffer'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libmp3lame.c:214: undefined reference to `lame_encode_buffer_float'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libmp3lame.c:201: undefined reference to `lame_encode_buffer_int'
    /usr/local/lib/libavcodec.a(libmp3lame.o): In function `mp3lame_encode_init':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libmp3lame.c:102: undefined reference to `lame_init'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libmp3lame.c:106: undefined reference to `lame_set_num_channels'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libmp3lame.c:107: undefined reference to `lame_set_mode'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libmp3lame.c:110: undefined reference to `lame_set_in_samplerate'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libmp3lame.c:111: undefined reference to `lame_set_out_samplerate'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libmp3lame.c:117: undefined reference to `lame_set_quality'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libmp3lame.c:129: undefined reference to `lame_set_bWriteVbrTag'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libmp3lame.c:132: undefined reference to `lame_set_disable_reservoir'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libmp3lame.c:135: undefined reference to `lame_init_params'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libmp3lame.c:141: undefined reference to `lame_get_encoder_delay'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libmp3lame.c:144: undefined reference to `lame_get_framesize'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libmp3lame.c:121: undefined reference to `lame_set_VBR'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libmp3lame.c:122: undefined reference to `lame_set_VBR_quality'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libmp3lame.c:115: undefined reference to `lame_set_quality'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libmp3lame.c:125: undefined reference to `lame_set_brate'
    /usr/local/lib/libavcodec.a(libvorbisdec.o): In function `oggvorbis_decode_close':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisdec.c:184: undefined reference to `vorbis_info_clear'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisdec.c:185: undefined reference to `vorbis_comment_clear'
    /usr/local/lib/libavcodec.a(libvorbisdec.o): In function `oggvorbis_decode_frame':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisdec.c:161: undefined reference to `vorbis_synthesis'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisdec.c:162: undefined reference to `vorbis_synthesis_blockin'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisdec.c:167: undefined reference to `vorbis_synthesis_pcmout'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisdec.c:171: undefined reference to `vorbis_synthesis_read'
    /usr/local/lib/libavcodec.a(libvorbisdec.o): In function `oggvorbis_decode_init':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisdec.c:42: undefined reference to `vorbis_info_init'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisdec.c:43: undefined reference to `vorbis_comment_init'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisdec.c:94: undefined reference to `vorbis_synthesis_headerin'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisdec.c:94: undefined reference to `vorbis_synthesis_headerin'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisdec.c:94: undefined reference to `vorbis_synthesis_headerin'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisdec.c:104: undefined reference to `vorbis_synthesis_init'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisdec.c:105: undefined reference to `vorbis_block_init'
    /usr/local/lib/libavcodec.a(libvorbisenc.o): In function `oggvorbis_encode_close':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:182: undefined reference to `vorbis_analysis_wrote'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:184: undefined reference to `vorbis_block_clear'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:185: undefined reference to `vorbis_dsp_clear'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:186: undefined reference to `vorbis_info_clear'
    /usr/local/lib/libavcodec.a(libvorbisenc.o): In function `oggvorbis_encode_frame':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:297: undefined reference to `vorbis_analysis_buffer'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:304: undefined reference to `vorbis_analysis_wrote'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:320: undefined reference to `vorbis_analysis_blockout'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:321: undefined reference to `vorbis_analysis'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:323: undefined reference to `vorbis_bitrate_addblock'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:327: undefined reference to `vorbis_bitrate_flushpacket'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:312: undefined reference to `vorbis_analysis_wrote'
    /usr/local/lib/libavcodec.a(libvorbisenc.o): In function `oggvorbis_encode_init':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:206: undefined reference to `vorbis_info_init'
    /usr/local/lib/libavcodec.a(libvorbisenc.o): In function `oggvorbis_init_encoder':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:109: undefined reference to `vorbis_encode_setup_managed'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:100: undefined reference to `vorbis_encode_setup_vbr'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:123: undefined reference to `vorbis_encode_ctl'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:162: undefined reference to `vorbis_encode_setup_init'
    /usr/local/lib/libavcodec.a(libvorbisenc.o): In function `oggvorbis_encode_init':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:211: undefined reference to `vorbis_analysis_init'
    /usr/local/lib/libavcodec.a(libvorbisenc.o): In function `oggvorbis_init_encoder':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:116: undefined reference to `vorbis_encode_ctl'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:129: undefined reference to `vorbis_encode_ctl'
    /usr/local/lib/libavcodec.a(libvorbisenc.o): In function `oggvorbis_encode_init':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:217: undefined reference to `vorbis_block_init'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:223: undefined reference to `vorbis_comment_init'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:227: undefined reference to `vorbis_analysis_headerout'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:259: undefined reference to `vorbis_comment_clear'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvorbisenc.c:225: undefined reference to `vorbis_comment_add_tag'
    /usr/local/lib/libavcodec.a(libvpxdec.o): In function `vpx_init':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxdec.c:47: undefined reference to `vpx_codec_version_str'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxdec.c:48: undefined reference to `vpx_codec_build_config'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxdec.c:50: undefined reference to `vpx_codec_dec_init_ver'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxdec.c:51: undefined reference to `vpx_codec_error'
    /usr/local/lib/libavcodec.a(libvpxdec.o): In function `vp9_init':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxdec.c:137: undefined reference to `vpx_codec_vp9_dx_algo'
    /usr/local/lib/libavcodec.a(libvpxdec.o): In function `vp8_init':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxdec.c:118: undefined reference to `vpx_codec_vp8_dx_algo'
    /usr/local/lib/libavcodec.a(libvpxdec.o): In function `vp8_free':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxdec.c:111: undefined reference to `vpx_codec_destroy'
    /usr/local/lib/libavcodec.a(libvpxdec.o): In function `vp8_decode':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxdec.c:69: undefined reference to `vpx_codec_decode'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxdec.c:81: undefined reference to `vpx_codec_get_frame'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxdec.c:71: undefined reference to `vpx_codec_error'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxdec.c:72: undefined reference to `vpx_codec_error_detail'
    /usr/local/lib/libavcodec.a(libvpxenc.o): In function `codecctl_int':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxenc.c:208: undefined reference to `vpx_codec_control_'
    /usr/local/lib/libavcodec.a(libvpxenc.o): In function `log_encoder_error':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxenc.c:107: undefined reference to `vpx_codec_error'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxenc.c:108: undefined reference to `vpx_codec_error_detail'
    /usr/local/lib/libavcodec.a(libvpxenc.o): In function `vp8_free':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxenc.c:222: undefined reference to `vpx_codec_destroy'
    /usr/local/lib/libavcodec.a(libvpxenc.o): In function `vp8_encode':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxenc.c:546: undefined reference to `vpx_codec_encode'
    /usr/local/lib/libavcodec.a(libvpxenc.o): In function `queue_frames':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxenc.c:465: undefined reference to `vpx_codec_get_cx_data'
    /usr/local/lib/libavcodec.a(libvpxenc.o): In function `log_encoder_error':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxenc.c:107: undefined reference to `vpx_codec_error'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxenc.c:108: undefined reference to `vpx_codec_error_detail'
    /usr/local/lib/libavcodec.a(libvpxenc.o): In function `vpx_init':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxenc.c:237: undefined reference to `vpx_codec_version_str'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxenc.c:238: undefined reference to `vpx_codec_build_config'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxenc.c:240: undefined reference to `vpx_codec_enc_config_default'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxenc.c:357: undefined reference to `vpx_codec_enc_init_ver'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxenc.c:387: undefined reference to `vpx_img_wrap'
    /usr/local/lib/libavcodec.a(libvpxenc.o): In function `log_encoder_error':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxenc.c:107: undefined reference to `vpx_codec_error'
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxenc.c:108: undefined reference to `vpx_codec_error_detail'
    /usr/local/lib/libavcodec.a(libvpxenc.o): In function `vpx_init':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxenc.c:241: undefined reference to `vpx_codec_err_to_string'
    /usr/local/lib/libavcodec.a(libvpxenc.o): In function `vp9_init':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxenc.c:651: undefined reference to `vpx_codec_vp9_cx_algo'
    /usr/local/lib/libavcodec.a(libvpxenc.o): In function `vp8_init':
    /root/ffmpeg-source/zlib-1.2.7/ffmpeg/libavcodec/libvpxenc.c:622: undefined reference to `vpx_codec_vp8_cx_algo'
    collect2: ld returned 1 exit status
    make: *** [x264] Error 1