Newest 'libx264' Questions - Stack Overflow

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

Les articles publiés sur le site

  • Building x264 on a Mac for android “No working C compiler found”

    20 novembre 2015, par LostPuppy

    I am trying to build x264 and eventually use it to build ffmpeg the following is my script:

    #!/bin/bash
    
    NDK="/Users/account/Documents/FFmpeg/android-ndk-r10e"
    TOOL_DIR_ARM="/Users/account/Documents/FFmpeg/android-ndk-r10e/sources/ffmpeg-2.8.2/my-android-toolchain"
    SYSROOT=$NDK/platforms/platforms/android-21/arch-arm
    echo "removing tool chain directory if it exists"
    rm -r $TOOL_DIR_ARM
    
    $NDK/build/tools/make-standalone-toolchain.sh \
        --platform=android-21 \
        --arch=arm \
        --install-dir=$TOOL_DIR_ARM \
        --toolchain=arm-linux-androideabi-clang3.6\
        --llvm-version=3.6 \
        --system=darwin-x86_64
    
    if [ -d $SYSROOT ]; then
        echo "$SYSROOT is a valid directory"
    fi
    
    function build_x264
    {
    cd x264
    
    # another build for phone
    ./configure \
    --cross-prefix=arm-linux-androideabi- \
    --sysroot=$SYSROOT \
    --host=arm-linux \
    --enable-static \
    --enable-pic \
    --disable-cli 
    
    make -j4
    make install
    
    cd ../
    }
    
    
    function build_one
    {
    cd 
    
    # another build for phone
    ./configure \
    --sysroot=$SYSROOT \
    --target-os=linux \
    --arch=arm \
    --cross-prefix=$TOOL_DIR_ARM/bin/arm-linux-androideabi- \
    --cc=$TOOL_DIR_ARM/bin/clang \
    --enable-cross-compile \
    --enable-encoder=mpeg4 \
    --enable-pthreads \
    --enable-gpl \
    --enable-libx264 \
    --enable-pic \
    --extra-cflags='-I/usr/local/include' \
    --extra-ldflags='-L/usr/local/lib'
    
    make clean
    make -j4
    make install
    
    }
    echo "Building x_264 library"
    build_x264
    echo "Building FFmpeg"
    build_one
    

    I get an error saying

    No working C compiler found.
    Makefile:3: config.mak: No such file or directory
    

    The following is the output from the config.log file

    checking for -mdynamic-no-pic... yes
    checking for -arch x86_64... yes
    x264 configure script
    
    checking whether gcc works... yes
    checking whether gcc supports for( int i = 0; i < 9; i++ ); with -std=gnu99... yes
    checking for -mpreferred-stack-boundary=5... no
    Failed commandline was:
    --------------------------------------------------
    gcc conftest.c -m64 -Qunused-arguments -Wall -I. -I$(SRCPATH) -mdynamic-no-pic -arch x86_64 -std=gnu99  -mpreferred-stack-boundary=5  -m64  -lm -arch x86_64$
    clang: error: unknown argument: '-mpreferred-stack-boundary=5'
    --------------------------------------------------
    Failed program was:
    --------------------------------------------------
    int main (void) {  return 0; }
    --------------------------------------------------
    checking whether yasm supports vpmovzxwd ymm0, xmm0... yes
    

    Solutions that I tried:

    I made sure I have a working GCC

    I have the update to date version of clang

    I have the update to date version of LLVM

  • FFMPEG-jpg sequence to H.264 generate best result

    18 octobre 2015, par Ziki

    I have a jpg sequence which I need to convert to mp4, and I need to get the best result.

    As I understood, I need to supply the 'ffmpeg' cmdln the following: bitrate, minrate, maxrate and bufsize.

    The only thing that I found about calculating the above params, is if I have the final output file size. But considering I want the best quality, I don't know the final output file size, and I don't care what it will be.

    Of course I have the framerate and the total frames.

    Here's my ffmpeg cmdln:

    ffmpeg 
    -r 24 
    -start_number 0 
    -i "C:\pathToSequence\%06d.jpg" 
    -c copy 
    -vframes 792 
    -threads 16 
    -pix_fmt yuv420p 
    -c:v libx264 
    "C:\pathToOutput\result.mp4"
    

    The total size of the sequence is 128MB, 792 frames, 24 framerate, resolution 1280x720.

    Until now I used to add the following to the ffmpeg cmdln:

    -b:v 10000k -minrate 10000k -maxrate 10000k -bufsize 10000k
    

    And if it was 1080p:

    -b:v 20000k -minrate 20000k -maxrate 20000k -bufsize 20000k
    

    And I figured that if I put the max value that ffmpeg can handle (2147480) it will generate almost the same result as the above. But I think it's a bad approach(correct me if I'm wrong).

    So if I need to get the best result, how do I calculate it(or I can simply put the max value)?

    Also I would like if you have another helpful flags to add to make the best final result.

    --EDIT--

    Here's the updated command:

    O:\tools\ffmpeg -framerate 24 -start_number 0 -i "C:\share\localProcess\test\%05d.jpg" -vframes 54 -pix_fmt yuv420p -c:v libx264 -preset veryslow -qp 1 "C:\share\localProcess\result\result.mp4"
    

    And this is the ouptout:

    ffmpeg version N-72383-g7206b94 Copyright (c) 2000-2015 the FFmpeg developers
      built with gcc 4.9.2 (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-libmfx --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-lzma --enable-decklink --enable-zlib
      libavutil      54. 26.100 / 54. 26.100
      libavcodec     56. 41.100 / 56. 41.100
      libavformat    56. 33.101 / 56. 33.101
      libavdevice    56.  4.100 / 56.  4.100
      libavfilter     5. 16.101 /  5. 16.101
      libswscale      3.  1.101 /  3.  1.101
      libswresample   1.  1.100 /  1.  1.100
      libpostproc    53.  3.100 / 53.  3.100
    Input #0, image2, from 'C:\share\localProcess\test\%05d.jpg':
      Duration: 00:00:02.25, start: 0.000000, bitrate: N/A
        Stream #0:0: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 1280x720 [SAR 72:72 DAR 16:9], 24 fps, 24 tbr, 24 tbn, 24 tbc
    [swscaler @ 0000000004d6bf60] deprecated pixel format used, make sure you did set range correctly
    [libx264 @ 0000000004d7a9e0] using SAR=1/1
    [libx264 @ 0000000004d7a9e0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
    [libx264 @ 0000000004d7a9e0] profile High, level 5.0
    [libx264 @ 0000000004d7a9e0] 264 - core 146 r2538 121396c - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=16 deblock=1:0:0 analyse=0x3:0x133 me=umh subme=9 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=24 chroma_me=1 trellis=2 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=8 b_pyramid=2 b_adapt=2 b_bias=0 direct=3 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=24 scenecut=40 intra_refresh=0 rc=cqp mbtree=0 qp=1 ip_ratio=1.40 pb_ratio=1.30 aq=0
    Output #0, mp4, to 'C:\share\localProcess\result\result.mp4':
      Metadata:
        encoder         : Lavf56.33.101
        Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 24 fps, 12288 tbn, 24 tbc
        Metadata:
          encoder         : Lavc56.41.100 libx264
    Stream mapping:
      Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
    Press [q] to stop, [?] for help
    frame=   54 fps= 38 q=-1.0 Lsize=     542kB time=00:00:02.16 bitrate=2050.0kbits/s
    video:541kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.251171%
    [libx264 @ 0000000004d7a9e0] frame I:1     Avg QP: 0.00  size: 23629
    [libx264 @ 0000000004d7a9e0] frame P:22    Avg QP: 1.00  size: 16146
    [libx264 @ 0000000004d7a9e0] frame B:31    Avg QP: 2.81  size:  5623
    [libx264 @ 0000000004d7a9e0] consecutive B-frames: 16.7% 29.6% 16.7%  0.0%  9.3%  0.0% 13.0% 14.8%  0.0%
    [libx264 @ 0000000004d7a9e0] mb I  I16..4: 74.9% 20.2%  4.9%
    [libx264 @ 0000000004d7a9e0] mb P  I16..4:  0.3%  0.1%  1.2%  P16..4:  2.7%  0.4%  0.8%  0.2%  0.1%    skip:94.2%
    [libx264 @ 0000000004d7a9e0] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  3.0%  0.4%  0.5%  direct: 0.3%  skip:95.7%  L0:56.0% L1:40.5% BI: 3.5%
    [libx264 @ 0000000004d7a9e0] 8x8 transform intra:16.5% inter:18.4%
    [libx264 @ 0000000004d7a9e0] direct mvs  spatial:54.8% temporal:45.2%
    [libx264 @ 0000000004d7a9e0] coded y,uvDC,uvAC intra: 33.9% 49.8% 49.5% inter: 1.3% 2.9% 2.9%
    [libx264 @ 0000000004d7a9e0] i16 v,h,dc,p: 79% 13%  4%  4%
    [libx264 @ 0000000004d7a9e0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 12% 22% 48%  2%  4%  6%  3%  1%  2%
    [libx264 @ 0000000004d7a9e0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 13% 13% 43%  5%  6%  4%  5%  5%  6%
    [libx264 @ 0000000004d7a9e0] i8c dc,h,v,p: 78% 12%  7%  3%
    [libx264 @ 0000000004d7a9e0] Weighted P-Frames: Y:0.0% UV:0.0%
    [libx264 @ 0000000004d7a9e0] ref P L0: 65.7%  2.4%  8.9%  4.5%  2.3%  3.0%  2.8%  3.9%  3.5%  0.8%  0.3%  0.5%  0.3%  0.5%  0.2%  0.3%
    [libx264 @ 0000000004d7a9e0] ref B L0: 76.9% 12.0%  3.4%  0.7%  3.6%  0.5%  2.1%  0.4%  0.1%  0.0%  0.1%  0.0%  0.1%  0.1%
    [libx264 @ 0000000004d7a9e0] ref B L1: 98.2%  1.8%
    [libx264 @ 0000000004d7a9e0] kb/s:1966.80
    

    Link to download JPG sequence.

    Link to download the result.

  • Is there any good documentation of **x264** internals ?

    18 octobre 2015, par firoozg

    I want a to study about x264 internals?

    Is there any good resource about the algorithms and code structure?

    Or at least a resource to study about the intra prediction algorithms used in x264.

  • What does ' wpredp' parameter do in x264 (or FFmpeg) ?

    9 octobre 2015, par Alexandr

    I don't understand what 'wpredp' do? I've tried to find the description of 'wpredp' parameter but without success. Can somebody explain what it do?

  • Error on compilation of x264 on qnap

    3 octobre 2015, par user2060812

    We are facing issues on compiling x264 on qnap.
    We need to compile ffmpeg with x264 library, qnap packages have the built-in x264 0.66 library but ffmpeg-0.9.2 doesn't support too old version of x264 and produces the following error on compiling x264 from source.

    [/share/MD0_DATA/.qpkg/x264-snapshot-20130208-2245] # make
    gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -march=i686 -mfpmath=sse -msse -std=gnu99  -I/opt/include    -I/opt/include   -fomit-frame-pointer -fno-tree-vectorize   -c -o x264.o x264.c
    x264.c: In function 'help':
    x264.c:401: error: 'X264_VERSION' undeclared (first use in this function)
    x264.c:401: error: (Each undeclared identifier is reported only once
    x264.c:401: error: for each function it appears in.)
    make: *** [x264.o] Error 1
    
    
    [/share/MD0_DATA/.qpkg/x264-snapshot-20130208-2245] # cat /proc/version
    Linux version 2.6.33.2 (root@NasX86-4) (gcc version 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)) #1 SMP Wed Dec 5 06:48:23 CST 2012
    

    Can someone assist me on that ?