一、编译安装

ffmpeg在安装时依赖的包和版本都很让人头疼,不同编译环境也各不相同。公司之前封装了一个又各种出错。

其实办法很简单,就是到官网一步一步按着做就行了:
http://trac.ffmpeg.org/wiki/CompilationGuide
自己系统用的什么系统,就选择什么系统,照着操作就行了。
我选的是“Compiling FFmpeg on CentOS / RHEL / Fedora”唯一的不足就是ffmpeg的git地址不起作用,我使用了下面的地址进行了替换
git clone git://source.ffmpeg.org/ffmpeg.git

参考网址:
http://www.cnblogs.com/wainiwann/p/4128154.html
http://ffmpeg.org/documentation.html

二、使用

ffmpeg的作用
对于图片:
    可以裁剪图片,可以把图片导出成视频,可以把图片嵌入到视频中;
对与视频:
    输入输出流支持文件和各种视频流,比如hls协议的m3u8播放串、udp流等;
    可以对视频进行转码,比如mp4转mpegts,编码率转恒码率等;
    对视频添加各种信息,主要用-metadata字段;
    视频的剪切封装提取图片等等。

主要参数:
-i 设定输入流
-f 设定输出格式
-ss 开始时间 视频参数:
-b 设定视频流量,默认为200Kbit/s
-r 设定帧速率,默认为25
-s 设定画面的宽与高
-aspect 设定画面的比例
-vn 不处理视频
-vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器 音频参数:
-ar 设定采样率
-ac 设定声音的Channel数
-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器
-an 不处理音频
-c copy表示不改变音频视频的格式和内容
-muxrate 表示指定封装的码率
-y 表示指定输出文件

简单的使用说明:

提取图片:
ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg
视频剪切:
ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi
视频录制:
ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi
推送rtmp视频流:
./ffmpeg -re -i "bjqn01.mp4" -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 "rtmp://192.168.15.133:1935/myapplive/test1"
推送udp流:
./ffmpeg -re -i ./test.mp4 -fpre -threads 24 -b:v 1500k -s 720*576 -vsync 0 -ac 2 -ar 48000 -report -loglevel error -f mpegts -y udp://0.0.0.0:10021/test.ts
转码:将MP4转换为mpegts的恒流的码率:
./ffmpeg -i ./test.mp4 -fpre preset -b:v 30000k -b:a 128k -filter:v yadif=deint=interlaced -maxrate 30000k -minrate 30000k -acodec copy -metadata service_name="FFMPEG" -muxrate 32000k -s 3840x2160 -f mpegts -y /mpeg/output/a.ts
preset是一个文本,只是将一些参数封装起来而已
vcodec=libx264
vprofile=high
level=4
preset=superfast
g=25
keyint_min=25
x264-params=force-cfr=1
rc-lookahead=10
sc_threshold=0
refs=4
subq=6
acodec=libfdk_aac
b:a=32k

Linux下源码安装ffmpeg及ffmpeg的简单使用说明的更多相关文章

  1. linux下源码安装netcat

    linux下源码安装netcat http://blog.chinaunix.net/uid-20783755-id-4211230.html 1,下载netcat源码,netcat-0.7.1-13 ...

  2. linux下源码安装软件

    在linux下的很多软件都是通过源码包方式发布的,这样做对于最终用户而言,虽然相对于二进制软件包,配置和编译起来繁琐点,但是它的可移植性却好得多,针对不同的体系结构,软件开发者往往仅需发布同一份源码包 ...

  3. Linux 下源码安装大杂烩

    本文仅以记录平常源码安装部分软件是需注意的关键点. 有时为了方便,如在 Ubuntu 系统中,采用 sudo apt-get install soft-version 来安装某一版本的软件显得更为便捷 ...

  4. Linux下源码安装方式安装MySQL

    1.下载安装包:https://downloads.mysql.com/archives/community/  2.安装开发工具和安装包 因为要把源码编译成二进制数据,所以必须要有编译器和解释器 g ...

  5. linux下源码安装apache服务

    1.搭建静态网站是,我们只需要搭建apache服务即可满足要求. 例如:如果我再客户端游览器输入地址,他会找到192.168.1.100这个服务器,然后根据端口会找到apache服务器.apache他 ...

  6. linux下源码安装rabbitMq

    一.安装erlang前期环境安装1.利用yum安装erlang编译所依赖的环境 yum -y install make gcc gcc-c++ kernel-devel m4ncurses-devel ...

  7. Linux下源码安装MySQL-5.6.25

    从mysql-5.5起,mysql源码安装开始使用cmake了,因此我们得先安装cmake,配置安装目录./configure --perfix=/.....的时候和以前的会有些区别. 一.安装cma ...

  8. Linux下源码安装JDK7

    安装说明 安装环境:Red Hat Enterprise Linux7.1安装方式:源码安装 软件:jdk-7u80-linux-x64.gz 安装 #首先查看系统原有JDK信息 rpm -qa | ...

  9. linux下源码安装

    ●源码的安装(./configure –prefix 命令用法)一般由3个步骤组成:配置(configure).编译(make).安装(make install). Configure是一个可执行脚本 ...

随机推荐

  1. mysql下优化表和修复表命令使用说明(REPAIR TABLE和OPTIMIZE TABLE)

    随着mysql的长期使用,可以修复表来优化,优化时减少磁盘占用空间.方便备份. REPAIR TABLE `table_name` 修复表 OPTIMIZE TABLE `table_name` 优化 ...

  2. TechEd2013 Shanghai Hol Session PPT Share

    上个月去上海参加了TechEd 2013,并且参与了Hands-on-Lab环节,作为讲师引导大家完成<Local DB in WP8>实验的内容.由于实验的内容采用MVVM架构完成,因此 ...

  3. One to One 的数据库模型设计与NHibernate配置

    在数据库模型设计中,最基本的实体关系有三种:一对一.一对多.多对多.关于一对多和多对多使用的情况较多,之前也有过一些讨论,现在来说明一下在数据库中一对一的模型设计. 首先,关系数据库中使用外键来表示一 ...

  4. 万能面试问题大全,教你怎么回答,怎么拿下offer

    一.你对薪资的要求? 回答提示: 说实话,大家找工作,都希望找个高薪的,那我们如何和公司去谈薪酬呢?如果你对薪酬的要求太低,那显然贬低自己的能力:如果你对薪酬的要求太高,那又会显得你分量过重,公司受用 ...

  5. oracle学习笔记系列------oracle 基本操作之表的增删改查

    --创建一个表 CREATE TABLE employee_souvc( id ), name ), gender ), birth DATE, salary ,), job ), deptno ) ...

  6. Linux基础命令之cat使用方法大全

    今天在学习部署安装openstack的时候,看到一个关于cat的奇怪用法,可能是本人的才疏学浅没见过这种写法,于是乎查阅资料了一番,并进行了总结,希望也能够帮助有需要的朋友. 以下是我总结的几种常用方 ...

  7. FastCV安装报错---LaunchAnyWhere错误:载入Java VM时Windows出现错误:2

  8. c++11 新特性之lambda表达式

    写过c#之后,觉得c#里的lambda表达式和delegate配合使用,这样的机制用起来非常爽.c++11也有了lambda表达式,形式上有细小的差异.形式如下: c#:(input paramete ...

  9. 如何在TFS中恢复系统默认查询”已指派给我”的设置(TFS 2013)

    故事是这样开始的,一天开发人员求助说,在浏览器中修改了系统默认的工作项查询"已指派给我"的后,发现这个查询每次都提示超时,并且没有办法恢复到初始的设置状态,因为出现超时提示以后,查 ...

  10. 理解 Linux 网络栈(1):Linux 网络协议栈简单总结

    本系列文章总结 Linux 网络栈,包括: (1)Linux 网络协议栈总结 (2)非虚拟化Linux环境中的网络分段卸载技术 GSO/TSO/UFO/LRO/GRO (3)QEMU/KVM + Vx ...