FFmpegAndroid FFMPEGiOS-FFmpeg音视频开发

视频转 webp 动图

2019-07-01  本文已影响3人  GeorgeMR

视频转 webp 动图

准备工作

编译支持 webp 的 ffmpeg 库

  1. 下载 webp 源码进行编译

    ./configure --prefix=${INSTALL_DIR} \
                        --enable-libwebpmux \
                        --enable-libwebpdemux \ 
                        --enable-libwebpdecoder \ 
                        --enable-libwebpextras \
                        --enable-swap-16bit-csp \ 
                        --enable-static \
                        --disable-shared
    make clean
    make -j4
    make install
    

    INSTALL_DIR 为 webp 编译安装的路径

    编译出的文件:

    • bin: 编译出的可执行文件
    • include : 头文件
    • lib : 需要依赖的库

参照谷歌关于 webp 编译的文档:Compiling the Utilities

  1. 编译 ffmpeg (支持webp encoder)

    FFMPEG_FLAGS="--prefix=${INSTALL_DIR} \
         --disable-shared \
         --enable-static \
         --disable-symver \
         --disable-doc \
         --disable-ffplay \
         --disable-ffprobe \
         --disable-ffserver \
         --enable-pthreads \
         --enable-libx264 \
         --enable-libfdk-aac \
         --enable-libwebp \
         --enable-version3  \
         --enable-gpl \
         --enable-nonfree \
         --enable-protocol=file "
         
    ./configure $FFMPEG_FLAGS --extra-cflags="-I${INSTALL_ROOT}/webp/include" --extra-ldflags="-L${INSTALL_ROOT}/webp/lib"
    

    起始没有指定 webp 的 pkgconfig,出现了如下错误:

    ERROR: libwebp not found using pkg-config
    

    ffmpeg 官方提示可以直接指定 webp 库的方式来绕过 pkgconfig:

    If you don't have pkg-config, you can use the configure option
    --pkg-config=true but
    you will have to provide the library yourself (--extra-libs=-lwebp or similar).
    

    这种方式在 Mac 上可以成功编译,但 linux 环境确导致另外一个问题:

    error while loading shared libraries: libwebp.so.7: cannot open shared object file: No such file or directory
    

    找不到webp对应库,所以只能指定pkgconfig

    export PKG_CONFIG_PATH="${INSTALL_ROOT}/webp/lib/pkgconfig"
    

    到此就成功编译出支持 webp 编码的 ffmpg 库
    修改:由于之前编译的 webp 库为动态库,导致找不到 pkg-config, 以及一些不必要的修改。在编译 webp 时指定 ''--enable-static \ --disable-shared'' , 编译为静态库.

利用 ffmpeg 制作 webp 动图

ffmpeg 命令:

ffmpeg -ss 00:00:00 -t 2 -i input.mp4 -vcodec libwebp -lossless 0 -q:v 75 -loop 0 -an -vsync 0 -vf scale=318:568,fps=5 out.webp

制作 animated webp 命令参数说明:

调整生成动图大小和fps,可以使用 scale、fps 参数

上一篇下一篇

猜你喜欢

热点阅读