2014-04-06 17 views
6

tôi biên soạn libs ffmpeg trên của tôi Ubuntu 64-bit bằng cách sử dụng kịch bản sau đây:Tại sao lib ffmpeg của tôi quá lớn?

mkdir ~/ffmpeg_sources 

# x264

cd ~/ffmpeg_sources 
    wget http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2 
    tar xjvf last_x264.tar.bz2 
    cd x264-snapshot* 
    ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --disable-asm 
    make 
    make install 
    make distclean 

#FFmpeg

cd ~/ffmpeg_sources 
    wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 
    tar xjvf ffmpeg-snapshot.tar.bz2 
    cd ffmpeg 
    PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" 
    export PKG_CONFIG_PATH 
    ./configure --prefix="$HOME/ffmpeg_build" --extra-cflags="-I$HOME/ffmpeg_build/include" \ 
    --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --extra-libs="-ldl" -- enable-gpl \ 
    --enable-libx264 --enable-x11grab --disable-yasm                                
    make 
    make install 
    make distclean 
    hash -r 

Nhưng libs cuối cùng là thực sự lớn (Ví dụ: libavcodec.a> 140 Mb). Bất kỳ ai biết tại sao libs của tôi quá lớn?

EDIT

Giải pháp của tôi:

  • thêm tùy chọn "--disable-debug" vào ./configure. Kích thước của libavcodec của tôi giảm từ 150Mb xuống còn 12Mb!
  • Xóa tất cả các codec không cần thiết: Thêm tùy chọn -disable-encoders, --disable-decoders và sau đó chỉ thêm codec bạn muốn bằng --enable-encoder = NAME và --enable-decoder = NAME. In danh sách bằng cách sử dụng ./configure --list-encoders --list-decoders. xem ./configure --help để biết thêm thông tin. (Libavcodec cuối cùng của tôi có kích thước 4Mo)
+1

ffmpeg là một thư viện rất lớn với nhiều chức năng (nhiều codec khác nhau, v.v.) nên không có gì ngạc nhiên khi các tệp đầu ra lớn. Bạn có nghĩ rằng kích thước này là không chính xác hoặc ...? –

+1

Tôi nghĩ vì tôi đã đọc rất nhiều chủ đề mà mọi người có libavcodec với kích thước <15 Mo. (ví dụ: http://ffmpeg-users.933282.n4.nabble.com/libavcodec-size-too-large-td4657129.html) . Tôi hiểu rằng nó chứa nhiều codec ... nhưng trên thực tế, tôi chỉ cần một codec: H.264 (x264). Vì vậy, tôi hiện đang tìm kiếm để loại bỏ các codec khác bằng cách sử dụng cờ biên dịch. – user3504221

+0

Nó cũng giúp thêm '-s' vào cờ liên kết. – Antonio

Trả lời

2

Lưu ý rằng libs tĩnh (chẳng hạn như libavcodec.a) chứa tất cả các loại dữ liệu bổ sung sẽ bị ngắt bởi trình liên kết.

Nhưng ngay cả sau đó bạn có thể thêm thông số --enable-small vào ./configure. Khoảng một năm trước, tham số này đã giảm kích thước của libavcodec.so từ 14 đến ~ 3 MByte.

Các vấn đề liên quan