Stay Hungry , Stay Foolish

君子生非异也,善假于物也

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

ffmpeg命令行使用

将JPG格式图片转成YUV420P格式: ffmpeg -i Z:\demo\pic.jpg -s 720x480 Z:\demo\pic.yuv

解码H265成YUV420 ffmpeg -i E:\video\input.h265 -s 1920x1080 E:\video\1920x1080_ffmpeg.yuv

MP4转YUV420 ffmpeg.exe -i E:\video\视频\video_640x480_4.mp4 -r 20 -vframes 500 E:\video\yuv_640x480\video_640x480_4.yuv

参考资料

[总结]FFMPEG视音频编解码零基础学习方法   特别详细的关于FFmpeg技术总结

雷霄骅(leixiaohua1020)的专栏  中国传媒大学雷霄骅博士CSDN主页,对视频处理技术有较深的研究,其博客也十分有参考阅读的价值

FFmpeg的Android平台移植—编译篇

ubuntu+ndk编译ffmpeg

附录

编译android系统下ffmpeg开源库脚本文件,ubuntu系统下编译!!!

解压ffmpeg.tar.gz,将该脚本复制到configure同级路径下,然后执行该脚本。生成的动态库位于android/arm/lib路径下。

#!/bin/bash
NDK="/home/alchen/android-ndk-r9d"
TARGET="android-19"
SYSROOT="$NDK/platforms/$TARGET/arch-arm"
TOOLCHAIN="$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64"

function build_one
{
./configure \
    --prefix=$PREFIX \
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
    --target-os=linux \
    --enable-decoder=h264 \
    --enable-shared \
    --enable-version3 \
    --enable-gpl \
    --enable-nonfree \
    --enable-protocol=file \
    --enable-cross-compile \
    --enable-asm \
    --enable-neon \
    --enable-armv5te \
    --disable-static \
    --disable-decoders \
    --disable-doc \
    --disable-htmlpages \
    --disable-manpages \
    --disable-podpages \
    --disable-txtpages \
    --disable-muxers \
    --disable-avdevice \
    --disable-avformat \
    --disable-avfilter \
    --disable-postproc \
    --disable-network \
    --disable-dwt \
    --disable-error-resilience \
    --disable-lsp \
    --disable-lzo \
    --disable-mdct \
    --disable-rdft \
    --disable-fft \
    --disable-faan \
    --disable-pixelutils \
    --disable-demuxers \
    --disable-bsfs \
    --disable-indevs \
    --disable-outdevs \
    --disable-filters \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffserver \
    --disable-debug \
    --disable-random \
    --disable-valgrind-backtrace \
    --disable-ffprobe \
    --disable-encoders \
    --disable-devices \
    --disable-protocols \
    --disable-network \
    --disable-avdevice \
    --arch=arm \
    --sysroot=$SYSROOT \
    --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
    --extra-ldflags="$ADDI_LDFLAGS" \
    $ADDITIONAL_CONFIGURE_FLAG
    make clean
    make
    make install
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one

windwos下编译ffmpeg动态库

在windos下编译ffmpeg动态库需用使用到MinGW+Msys工具, msys安装路径为${MinGW}根目录下。在Cygwin环境下,也可以编译出ffmepg动态库,但依赖其他的cyg的库,例如cygwin.dll等,更重要的是由于平台的不兼容性,导致在cygwin下编译出来的库在VS2010的工程环境中,某些函数的调用抛出异常,导致程序中断退出。

在MinGW环境下编译时注意检查gcc工具是否可用,如果提示找不到命令,将${MinGW}/bin路径配置到MinGW的PATH环境变量中。export PATH=$PATH:/c/MinGW/bin; 如下所示:

image

image

进入ffmpeg源代码路径,执行配置脚本

./configure  --enable-shared \
--disable-decoders --enable-decoder=h264 \
--disable-encoders \
--disable-filters --enable-filter=h264 \
--disable-muxers --enable-muxer=h264 \
--disable-parsers --enable-parser=h264 \
--disable-demuxers --enable-demuxer=h264 \
--disable-protocols \
--disable-yasm \
--prefix=/F/libs/ffmpeg_mingw/install

然后执行 make, make install命令进行编译安装,可能make install过程产生错误,但不影响ffmepg动态库生成。

最后,进入源代码对应的库路径下,获取对应的动态库。

 

3 Release模式崩溃

Mingw编译动态库时,生成的lib文件是用Mingw下的libtool生成的,是有些问题的。在VS的Debug模式下运行是没有问题的,但Release模式下就会崩溃。原因是Release模式下,工程配置项里 linker/optimization 的 Reference选项是打开的,即选了Yes (/OPT:REF),此时由libtool生成的lib就会有问题。

解决方法:用VS自带的lib.exe 来重新生成lib文件即可解决。
步骤如下:
1.  打开Visual Studio Command Prompt,然后切换到需要生成lib文件的dll的目录
2.  执行  lib /machine:i386 /def:avcodec-54.def /out:avcodec-54.lib
3.  用上面生成的lib文件重新编译工程即可解决问题

posted on 2016-01-12 10:53  octocat  阅读(780)  评论(0编辑  收藏  举报