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; 如下所示:

进入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文件重新编译工程即可解决问题

开源项目:FFmpeg的更多相关文章

  1. 一个非常好的开源项目FFmpeg命令处理器FFCH4J

    项目地址:https://github.com/eguid/FFCH4J FFCH4J(原用名:FFmpegCommandHandler4java) FFCH4J项目全称:FFmpeg命令处理器,鉴于 ...

  2. 开源编解码项目FFmpeg迎来20周年生日 凭一己之力养活全球无数播放器!

    近日,开源编解码库项目FFmpeg迎来20周年生日. 2000.12.20-2020.12.20 可能很多人对于FFmpeg不是特别了解,那么以下几个名字是否大家或多或少都用过呢? 暴风影音.PotP ...

  3. iOS 开源项目

    在 Github 上 Star 太多了,有时候很难找到自己想要的开源库,所以在此记录下来.便于自己开发使用,也顺便分享给大家. 动画 awesome-ios-animation收集了iOS平台下比较主 ...

  4. Github上关于iOS的各种开源项目集合(强烈建议大家收藏,查看,总有一款你需要)

    下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. SVPullToRefresh - 下拉刷新控件. MJRefresh - 仅需一行代码就可以为UITableVie ...

  5. 直接拿来用!最火的Android开源项目(完结篇)

    直接拿来用!最火的Android开源项目(完结篇) 2014-01-06 19:59 4785人阅读 评论(1) 收藏 举报 分类: android 高手进阶教程(100) 摘要:截至目前,在GitH ...

  6. C# 开源项目一

    商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK E ...

  7. 直接拿来用!最火的Android开源项目(完结篇)(转)

    摘要:截至目前,在GitHub“最受欢迎的开源项目”系列文章中我们已介绍了40个Android开源项目,对于如此众多的项目,你是Mark.和码友分享经验还是慨叹“活到老要学到老”?今天我们将继续介绍另 ...

  8. iOS及Mac开源项目和学习资料【超级全面】

    UI 下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITable ...

  9. 值得学习的C语言开源项目

    值得学习的C语言开源项目   - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工 ...

  10. GitHub 优秀的 Android 开源项目(转)

    今天查找资源时看到的一篇文章,总结了很多实用资源,十分感谢原作者分享. 转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介 ...

随机推荐

  1. sessionStorage、localStorage简介

    简介 技术一般水平有限,有什么错的地方,望大家指正. sessionStorage.localStorage.cookie这三个是我们在浏览器端用来存储数据的,cookie使用起来较为繁琐以后进行总结 ...

  2. PLSQL_低效SQL的识别和查询汇总(案例)

    2014-12-18 Created By BaoXinjian

  3. c++学习-虚函数

    #include <iostream> using namespace std; class common{ public: virtual void hello(){cout<&l ...

  4. Linux命令(17)du 查看文件和目录磁盘使用情况

    Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 1.命令格式: du [选项][文件] 2.命令功能 ...

  5. python(6)时间戳和北京时间互转,输出当前的时间和推到七天前的日期

    项目发展的需要:(包含时间函数)time datetime 时间戳和北京时间互转 import time import datetime s = '2015-04-17 11:25:30' d = d ...

  6. Hololens开发笔记之使用Unity开发一个简单的应用

    一.Hololens概述 Hololens有以下特性 1.空间映射借助微软特殊定制的全息处理单元(HPU),HoloLens 实现了对周边环境的快速扫描和空间匹配.这保证了 HoloLens能够准确地 ...

  7. 保存恢复临时信-Android 中使用onSaveInstanceState和onRestoreInstanceState

    在Activity中,有两个方法用于临时保存.恢复状态信息,这两个方法是: public void onSaveInstanceState(Bundle savedInstanceState); pu ...

  8. nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)

    启动nginx时报这个错 , 要么用root用户启动 , 要么在配置文件nginx.conf中将server下的listen端口改掉 , 因为在linux中端口号小于1024都是需要root权限的

  9. Linux设置服务自启动(转载)

    From:http://www.cnblogs.com/nerxious/archive/2013/01/18/2866548.html 有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统 ...

  10. 最完美的xslt数值函数与字符串函数(转)

    http://www.cnblogs.com/guoxu/articles/1744007.html 任何的编程语言或者是SQL语句都有内置的函数或方法,而强大灵活的xslt技术也是如此.熟练掌握XS ...