Newest 'libx264' Questions - Stack Overflow

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

Les articles publiés sur le site

  • "Unknown encoder libx264" on Windows [migrated]

    29 novembre 2012, par shampoo

    I'm testing ClipBucket on a Windows XP system, and ClipBucket (open source video share) uses FFmpeg to convert videos. The final command it executes is (i changed it a little to make it compatible with the current FFmpeg):

    D:\ffmpeg-snapshot-git\ffmpeg\ffmpeg.exe -i C:
    \wamp\www\chclip/files/conversion_queue/1352973741c353c.mp4 -f flv -vcodec libx2
    64 -pre normal -r 25 -s 426x240 -aspect 1.775 -vf "pad=10:20:30:40:yellow"  -ac
    odec libfaac -ab 128000 -ar 22050 C:\wamp\www\chclip/files/videos/13540939451e18
    4.flv 2> C:\wamp\www\chclip/files/temp/13540939461c124.tmp 2>&1
    

    And this is the response I get:

    ffmpeg version 1.0.git Copyright (c) 2000-2012 the FFmpeg developers
    built on Nov 19 2012 16:42:42 with gcc 4.6.2 (GCC)
    configuration:
    libavutil      52.  8.100 / 52.  8.100
    libavcodec     54. 73.100 / 54. 73.100
    libavformat    54. 37.100 / 54. 37.100
    libavdevice    54.  3.100 / 54.  3.100
    libavfilter     3. 23.101 /  3. 23.101
    libswscale      2.  1.102 /  2.  1.102
    libswresample   0. 16.100 /  0. 16.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\wamp\www\chclip/files/conversion_que
    ue/1352973741c353c.mp4':
    Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf53.21.0
    Duration: 00:00:51.67, start: 0.000000, bitrate: 344 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 426x240 [
    SAR 1:1 DAR 71:40], 308 kb/s, 15 fps, 15 tbr, 15 tbn, 30 tbc
    Metadata:
    handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, s16, 31
    kb/s
    Metadata:
    handler_name    : SoundHandler
    Unknown encoder 'libx264'
    

    How can I get this libx264 working in Windows?

  • unknown encoder libx264 windows

    28 novembre 2012, par shampoo

    i am testing clip bucket on a windows xp system , clip bucket (open source video share) uses ffmpeg to convert videos, the final command clip bucket executes is (i changed it a little to make it compatible with the current ffmpeg):

    D:\ffmpeg-snapshot-git\ffmpeg\ffmpeg.exe -i C:
    \wamp\www\chclip/files/conversion_queue/1352973741c353c.mp4 -f flv -vcodec libx2
    64 -pre normal -r 25 -s 426x240 -aspect 1.775 -vf "pad=10:20:30:40:yellow"  -ac
    odec libfaac -ab 128000 -ar 22050 C:\wamp\www\chclip/files/videos/13540939451e18
    4.flv 2> C:\wamp\www\chclip/files/temp/13540939461c124.tmp 2>&1
    

    and this is the response i get

    ffmpeg version 1.0.git Copyright (c) 2000-2012 the FFmpeg developers
    built on Nov 19 2012 16:42:42 with gcc 4.6.2 (GCC)
    configuration:
    libavutil      52.  8.100 / 52.  8.100
    libavcodec     54. 73.100 / 54. 73.100
    libavformat    54. 37.100 / 54. 37.100
    libavdevice    54.  3.100 / 54.  3.100
    libavfilter     3. 23.101 /  3. 23.101
    libswscale      2.  1.102 /  2.  1.102
    libswresample   0. 16.100 /  0. 16.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\wamp\www\chclip/files/conversion_que
    ue/1352973741c353c.mp4':
    Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf53.21.0
    Duration: 00:00:51.67, start: 0.000000, bitrate: 344 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 426x240 [
    SAR 1:1 DAR 71:40], 308 kb/s, 15 fps, 15 tbr, 15 tbn, 30 tbc
    Metadata:
    handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, s16, 31
    kb/s
    Metadata:
    handler_name    : SoundHandler
    Unknown encoder 'libx264'
    

    how can i get this libx264 working in windows?

  • Where ffmpeg flags like CODEC_FLAG2_BPYRAMID are located ?

    27 novembre 2012, par theateist

    I'm developing on using VS2010 with ffmpeg and tried the code from here. But VS says that it cannot find

    1. CODEC_FLAG2_BPYRAMID+CODEC_FLAG2_MIXED_REFS+CODEC_FLAG2_WPRED+CODEC_FLAG2_8X8DCT+CODEC_FLAG2_FASTPSKIP; // flags2=+bpyramid+mixed_refs+wpred+dct8x8+fastpskip
    2. X264_PART_I8X8+X264_PART_I4X4+X264_PART_P8X8+X264_PART_B8X8
    3. avCodecContext.crf

    Where are they located?

  • fps porblem when saving video in mp4 container

    27 novembre 2012, par theateist

    When I decode frames from avi file and then decode them in x264 and save to mp4 file, the fps of the output file is always 12,800. Therefore the file is played very fast. But, when I save the encoded in h264 frames in avi format and not mp4, so the fps is as I wanted - 25.

    What could be the problem? This is very urgent to me. I'm stuck with this and cannot continue with my project!

    Here the code I wrote in VS2010:

    #include "stdafx.h"
    #include "inttypes.h"
    
    extern "C" {
    #include "libavcodec/avcodec.h"
    #include "libavformat/avformat.h"
    #include "libavutil/avutil.h"
    #include swscale.h>
    #include opt.h>
    #include swscale.h>
    #include imgutils.h>
    }
    
    #include 
    using namespace std;
    
    int main(int argc, char* argv[])
    {
       const char* inFileName = "C:\\000227_C1_GAME.avi";
       const char* outFileName = "c:\\test.avi";
       const char* outFileType = "avi";
    
       av_register_all();
    
       AVFormatContext* inContainer = NULL;   
       if(avformat_open_input(&inContainer, inFileName, NULL, NULL) < 0)   
          exit(1);
    
       if(avformat_find_stream_info(inContainer, NULL) < 0)
          exit(1);
    
       // Find video stream
       int videoStreamIndex = -1;
       for (unsigned int i = 0; i < inContainer->nb_streams; ++i)
       {
          if (inContainer->streams[i] && inContainer->streams[i]->codec &&
             inContainer->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO)
          {
             videoStreamIndex = i;
             break;
          }
       }
       if (videoStreamIndex == -1) exit(1);
    
       AVFormatContext* outContainer = NULL;
       if(avformat_alloc_output_context2(&outContainer, NULL, outFileType, outFileName) < 0)
          exit(1);
    
       // ---------------------------- 
       // Decoder
       // ---------------------------- 
       AVStream const *const inStream = inContainer->streams[videoStreamIndex];
       AVCodec *const decoder = avcodec_find_decoder(inStream->codec->codec_id);
       if(!decoder) 
          exit(1);
       if(avcodec_open2(inStream->codec, decoder, NULL) < 0) 
          exit(1);
    
       // ---------------------------- 
       // Encoder
       // ----------------------------             
       AVCodec *encoder = avcodec_find_encoder(AV_CODEC_ID_H264);
       if(!encoder) 
          exit(1);
       AVStream *outStream = avformat_new_stream(outContainer, encoder);      
       if(!outStream)
          exit(1);
       avcodec_get_context_defaults3(outStream->codec, encoder);   
    
       // Construct encoder
       if(outContainer->oformat->flags & AVFMT_GLOBALHEADER) 
          outStream->codec->flags |= CODEC_FLAG_GLOBAL_HEADER;   
    
       outStream->codec->coder_type = AVMEDIA_TYPE_VIDEO;
       outStream->codec->pix_fmt = AV_PIX_FMT_YUV420P;
       outStream->codec->width = inStream->codec->width;
       outStream->codec->height = inStream->codec->height;
       outStream->codec->codec_id = encoder->id;
       outStream->codec->bit_rate = 500000;
       //outStream->codec->rc_min_rate = 600000;
       //outStream->codec->rc_max_rate = 800000;
    
       outStream->codec->time_base.den = 25;
       outStream->codec->time_base.num = 1;
       outStream->codec->gop_size = 250; // Keyframe interval(=GOP length). Determines maximum distance distance between I-frames
       outStream->codec->keyint_min = 25; // minimum GOP size
       outStream->codec->max_b_frames = 3;//16; // maximum number of B-frames between non-B-frames
       outStream->codec->b_frame_strategy = 1; // decides the best number of B-frames to use. Default mode in x264.
       outStream->codec->scenechange_threshold = 40;
       outStream->codec->refs = 6; // abillity to reference frames other than the one immediately prior to the current frame. specify how many references can be used.
       outStream->codec->qmin = 0;//10;
       outStream->codec->qmax = 69;//51;
       outStream->codec->qcompress = 0.6;
       outStream->codec->max_qdiff = 4;
       outStream->codec->i_quant_factor = 1.4;//0.71;   
    
       outStream->codec->refs=1;//3;
       outStream->codec->chromaoffset = -2;
       outStream->codec->thread_count = 1;   
       outStream->codec->trellis = 1;
       outStream->codec->me_range = 16;
       outStream->codec->me_method = ME_HEX; //hex
       outStream->codec->flags2 |= CODEC_FLAG2_FAST;   
       outStream->codec->coder_type = 1;
    
    
       if(outStream->codec->codec_id == AV_CODEC_ID_H264)
       {
            av_opt_set(outStream->codec->priv_data, "preset", "slow", 0);
       }
    
       // Open encoder
       if(avcodec_open2(outStream->codec, encoder, NULL) < 0) 
          exit(1);
    
       // Open output container
       if(avio_open(&outContainer->pb, outFileName, AVIO_FLAG_WRITE) < 0)
          exit(1);
    
       //close_o
    
       AVFrame *decodedFrame = avcodec_alloc_frame();
       if(!decodedFrame) 
          exit(1);
       AVFrame *encodeFrame = avcodec_alloc_frame();
       if(!encodeFrame) 
          exit(1);
       encodeFrame->format = outStream->codec->pix_fmt;
       encodeFrame->width = outStream->codec->width;
       encodeFrame->height = outStream->codec->height;
       if(av_image_alloc(encodeFrame->data, encodeFrame->linesize, 
                     outStream->codec->width, outStream->codec->height, 
                     outStream->codec->pix_fmt, 1) < 0)
          exit(1);
    
       av_dump_format(inContainer, 0, inFileName,0);
    
       //Write header to ouput container
       avformat_write_header(outContainer, NULL);
    
       AVPacket decodePacket, encodedPacket;
       int got_frame, len;
       while(av_read_frame(inContainer, &decodePacket)>=0)
       {      
          if (decodePacket.stream_index == videoStreamIndex)
          {                  
             len = avcodec_decode_video2(inStream->codec, decodedFrame, &got_frame, &decodePacket);
             if(len < 0)
                exit(1);
             if(got_frame)
             {
                av_init_packet(&encodedPacket);
                encodedPacket.data = NULL;
                encodedPacket.size = 0;         
                if(avcodec_encode_video2(outStream->codec, &encodedPacket, decodedFrame, &got_frame) < 0)
                   exit(1);
                if(got_frame)
                {
                   if (outStream->codec->coded_frame->key_frame)
                      encodedPacket.flags |= AV_PKT_FLAG_KEY;
    
                   encodedPacket.stream_index = outStream->index;
    
                   if(av_interleaved_write_frame(outContainer, &encodedPacket) < 0)
                      exit(1);
    
                   av_free_packet(&encodedPacket);
                }
             }
          }
    
          av_free_packet(&decodePacket);
       }
       av_write_trailer(outContainer);
       avio_close(outContainer->pb);
    
       avcodec_free_frame(&encodeFrame);
       avcodec_free_frame(&decodedFrame);
    
       avformat_free_context(outContainer);
       av_close_input_file(inContainer);
       return 0;
    }
    
  • Dump libx264 encoding parameters in ffmpeg

    23 novembre 2012, par melih

    Is it possible to get a list of parameter values used in libx264 while encoding a stream? I am using a ffmpeg binary to encode.