• libfaad2 主机编译和交叉编译


    前言

    安装这个是为了解决mplayer安装失败的问题。

    下载地址:

    https://www.linuxfromscratch.org/blfs/view/svn/multimedia/faad2.html

    也可以使用wget下载:

    wget https://github.com/knik0/faad2/archive/2_10_0/faad2-2_10_0.tar.gz

    或者用迅雷下载

    https://github.com/knik0/faad2/archive/2_10_0/faad2-2_10_0.tar.gz

    一 ubuntu编译脚本

    1 使用默认的系统安装目录

    1. make clean
    2. ./bootstrap
    3. ./configure --disable-static
    4. make
    5. sudo make install

    2 指定自己安装目录

    1. mkdir $(pwd)/_x86 -p
    2. make clean
    3. ./bootstrap
    4. ./configure --prefix=$(pwd)/_x86 --disable-static
    5. make
    6. sudo make install

    二 交叉编译脚本

    1. export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
    2. mkdir $(pwd)/_arm -p
    3. make clean
    4. ./bootstrap
    5. ./configure --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc --prefix=$(pwd)/_arm --disable-static
    6. make
    7. make install

    编译后生成的文件目录:

    1. tree
    2. .
    3. ├── bin
    4. │   └── faad
    5. ├── include
    6. │   ├── faad.h
    7. │   └── neaacdec.h
    8. ├── lib
    9. │   ├── libfaad_drm.la
    10. │   ├── libfaad_drm.so -> libfaad_drm.so.2.0.0
    11. │   ├── libfaad_drm.so.2 -> libfaad_drm.so.2.0.0
    12. │   ├── libfaad_drm.so.2.0.0
    13. │   ├── libfaad.la
    14. │   ├── libfaad.so -> libfaad.so.2.0.0
    15. │   ├── libfaad.so.2 -> libfaad.so.2.0.0
    16. │   ├── libfaad.so.2.0.0
    17. │   └── pkgconfig
    18. │   └── faad2.pc
    19. └── share
    20. └── man
    21. └── man1
    22. └── faad.1
    23. 7 directories, 13 files

    三 从git下载

    git clone https://github.com/knik0/faad2/

    下载完毕后,会看到faad2文件夹,在其中创建编译脚本,脚本如下所示,x86.sh:

    1. make clean
    2. ./bootstrap
    3. ./configure --disable-static
    4. make
    5. sudo make install

    并执行

    从编译安装信息中可知道

    lib库安装路径:/usr/local/lib

    1. /usr/bin/mkdir -p '/usr/local/lib'
    2. /bin/bash ../libtool --mode=install /usr/bin/install -c libfaad.la libfaad_drm.la '/usr/local/lib'
    3. libtool: install: /usr/bin/install -c .libs/libfaad.so.2.0.0 /usr/local/lib/libfaad.so.2.0.0
    4. libtool: install: (cd /usr/local/lib && { ln -s -f libfaad.so.2.0.0 libfaad.so.2 || { rm -f libfaad.so.2 && ln -s libfaad.so.2.0.0 libfaad.so.2; }; })
    5. libtool: install: (cd /usr/local/lib && { ln -s -f libfaad.so.2.0.0 libfaad.so || { rm -f libfaad.so && ln -s libfaad.so.2.0.0 libfaad.so; }; })
    6. libtool: install: /usr/bin/install -c .libs/libfaad.lai /usr/local/lib/libfaad.la
    7. libtool: install: /usr/bin/install -c .libs/libfaad_drm.so.2.0.0 /usr/local/lib/libfaad_drm.so.2.0.0
    8. libtool: install: (cd /usr/local/lib && { ln -s -f libfaad_drm.so.2.0.0 libfaad_drm.so.2 || { rm -f libfaad_drm.so.2 && ln -s libfaad_drm.so.2.0.0 libfaad_drm.so.2; }; })
    9. libtool: install: (cd /usr/local/lib && { ln -s -f libfaad_drm.so.2.0.0 libfaad_drm.so || { rm -f libfaad_drm.so && ln -s libfaad_drm.so.2.0.0 libfaad_drm.so; }; })
    10. libtool: install: /usr/bin/install -c .libs/libfaad_drm.lai /usr/local/lib/libfaad_drm.la
    11. libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/sbin" ldconfig -n /usr/local/lib
    12. ----------------------------------------------------------------------
    13. Libraries have been installed in:
    14. /usr/local/lib

    头文件路径 /usr/local/include

    usr/bin/mkdir -p '/usr/local/include'

    可执行程序路径 /usr/local/bin

    1. /usr/bin/mkdir -p '/usr/local/bin'
    2. /bin/bash ../libtool --mode=install /usr/bin/install -c faad '/usr/local/bin'

    安装信息路径 /usr/local/lib/pkgconfig

    1. /usr/bin/mkdir -p '/usr/local/lib/pkgconfig'
    2. /usr/bin/install -c -m 644 faad2.pc '/usr/local/lib/pkgconfig'

    man手册路径 /usr/local/share/man/man1/faad.1

    1. /usr/bin/mkdir -p '/usr/local/share/man/man1'
    2. /usr/bin/install -c -m 644 'faad.man' '/usr/local/share/man/man1/faad.1'

    安装完毕后,查看版本

    1. $ faad -v
    2. faad: error while loading shared libraries: libfaad.so.2: cannot open shared object file: No such file or directory

    竟然提示找不到库,添加库的目录到环境变量

    export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib

    再次执行faad

     faad
    1. lkmao@lkmao-virtual-machine:~/faad2/faad/faad2$ faad
    2. *********** Ahead Software MPEG-4 AAC Decoder V2.10.0 ******************
    3. Build: Sep 20 2022
    4. Copyright 2002-2004: Ahead Software AG
    5. http://www.audiocoding.com
    6. bug tracking: https://sourceforge.net/p/faac/bugs/
    7. Floating point version
    8. This program is free software; you can redistribute it and/or modify
    9. it under the terms of the GNU General Public License.
    10. **************************************************************************
    11. Usage:
    12. faad [options] infile.aac
    13. Options:
    14. -h Shows this help screen.
    15. -i Shows info about the input file.
    16. -a X Write MPEG-4 AAC ADTS output file.
    17. -t Assume old ADTS format.
    18. -o X Set output filename.
    19. -f X Set output format. Valid values for X are:
    20. 1: Microsoft WAV format (default).
    21. 2: RAW PCM data.
    22. -b X Set output sample format. Valid values for X are:
    23. 1: 16 bit PCM data (default).
    24. 2: 24 bit PCM data.
    25. 3: 32 bit PCM data.
    26. 4: 32 bit floating point data.
    27. 5: 64 bit floating point data.
    28. -s X Force the samplerate to X (for RAW files).
    29. -l X Set object type. Supported object types:
    30. 1: Main object type.
    31. 2: LC (Low Complexity) object type.
    32. 4: LTP (Long Term Prediction) object type.
    33. 23: LD (Low Delay) object type.
    34. -d Down matrix 5.1 to 2 channels
    35. -w Write output to stdio instead of a file.
    36. -g Disable gapless decoding.
    37. -q Quiet - suppresses status messages.
    38. -j X Jump - start output X seconds into track (MP4 files only).
    39. Example:
    40. faad infile.aac
    41. faad infile.mp4
    42. faad -o outfile.wav infile.aac
    43. faad -w infile.aac > outfile.wav
    44. faad -a outfile.aac infile.aac
    45. lkmao@lkmao-virtual-machine:~/faad2/faad/faad2$

    测试faad命令

    下载测试文件

    wget https://www.nch.com.au/acm/sample.aac

    使用mplayer播放这段音乐

    mplayer sample.aac 

    将aac转换成wav,不明白这么做的目的。

    faad -o sample.wav sample.aac
    1. faad -o sample.wav sample.aac
    2. *********** Ahead Software MPEG-4 AAC Decoder V2.10.0 ******************
    3. Build: Sep 20 2022
    4. Copyright 2002-2004: Ahead Software AG
    5. http://www.audiocoding.com
    6. bug tracking: https://sourceforge.net/p/faac/bugs/
    7. Floating point version
    8. This program is free software; you can redistribute it and/or modify
    9. it under the terms of the GNU General Public License.
    10. **************************************************************************
    11. sample.aac file info:
    12. ADTS, 4.608 sec, 13 kbps, 16000 Hz
    13. ---------------------
    14. | Config: 2 Ch |
    15. ---------------------
    16. | Ch | Position |
    17. ---------------------
    18. | 00 | Left front |
    19. | 01 | Right front |
    20. ---------------------
    21. Decoding sample.aac took: 0.00 sec. 0.00x real-time.

    再播放这段音乐

    mplayer sample.wav 

    几乎一样,对比两个文件可以猜出aac是压缩音频,而wav是非压缩音频。faad的作用是音频解压。

    1. ls -lsh sample.*
    2. 8.0K -rw-rw-r-- 1 lkmao lkmao 7.2K Jun 17 2014 sample.aac
    3. 284K -rw-rw-r-- 1 lkmao lkmao 281K Sep 20 14:59 sample.wav

    总结

            安装完毕后mplayer确实能用了。

  • 相关阅读:
    第十三届蓝桥杯JavaB组国赛E题——迷宫 (AC)
    制作macOS Ventura U盘启动盘教程
    算法-贪心算法
    Docker技术入门|L1简介及安装
    ChatGPT HTML JS Echarts实现热力图展示
    GPDB7-新特性-角色创建
    计算机毕业设计Java无人值守台球厅智能管理监控系统(源码+系统+mysql数据库+Lw文档)
    java获取文件路径总结
    在Linux系统中,使用OpenSSL生成私有证书文件,并提取私钥的步骤如下:
    外汇危机使生产成本提高30%以上
  • 原文地址:https://blog.csdn.net/yueni_zhao/article/details/126952445