mp4提取mp3
经常简单微博上分享的歌曲合集是mp4的,很烦恼,如何提取mp3:
ffmpeg.exe -i input.mp4 -vn -b:v 211k -b:a 128k -ar 44.1k -c:a mp3 output.mp3
经常简单微博上分享的歌曲合集是mp4的,很烦恼,如何提取mp3:
ffmpeg.exe -i input.mp4 -vn -b:v 211k -b:a 128k -ar 44.1k -c:a mp3 output.mp3
我们知道在ffmpeg已经有了很多lib,比如avcode avdevice avutil等。
如果我们要现有的makefile框架中新增加一个lib叫做a.so,该如何修改?
本文基于ffmpeg4.3.4,如果验证版本有变,请自行调整。
NAME = a
DESC = FFmpeg new demo library
HEADERS = a.h version.h
OBJS = a.o
FFLIBS := avutil a
# this list should be kept in linking order
LIBRARY_LIST="
avdevice
avfilter
swscale
postproc
avformat
avcodec
swresample
avresample
avutil
a
"
ALLFFLIBS = avcodec avdevice avfilter avformat avresample avutil postproc swscale swresample a
至此,只要a配置正确的makefile就应该能正确编译了。
上面介绍了如何扩展lib,假如ffmpeg原有的lib 叫 x.so, 我们二次开发了一个基于x.so的 a.so, 那么如何让a.so能正确调用到x.so?
configure:
# libraries, in any order
avenc_deps="ava"
说明上面的av是沿用ffmpeg默认命令习惯
TOOLS_DIR=toolchain/bin
./configure --enable-shared \
--disable-static \
--disable-x86asm \
--enable-cross-compile \
--strip=$TOOLS_DIR/llvm-strip \
--extra-cflags="-I$(pwd)/install/include" \
--extra-ldflags="-L$(pwd)/install/libs" \
--prefix=$(pwd)/install \
--target-os=linux \
TOOLS_DIR=ndk-toolchain/bin
./configure --enable-shared \
--disable-static \
--disable-x86asm \
--enable-cross-compile \
--cc=$TOOLS_DIR/armv7a-linux-androideabi26-clang \
--cxx=$TOOLS_DIR/armv7a-linux-androideabi26-clang++ \
--strip=$TOOLS_DIR/llvm-strip \
--extra-cflags="-I$(pwd)/install/include" \
--extra-ldflags="-L$(pwd)/install/libs" \
--arch=arm \
--prefix=$(pwd)/install \
--target-os=android \