ffmpeg编解码应用
http://blog.csdn.net/shendan00/article/details/18839793
1命令语法
使用语法 ffmpeg[[options][`-i' input_file]]... {[options] output_file}...
2基本选项
常用选项
编解码类 |
功能 |
-f |
指定格式,包括视频和音频 |
-i |
输入文件名 |
-title string |
标题 |
-timestamp time |
时间戳 |
-author string |
作者 |
-copyright string |
版权信息 |
-comment string |
评论 |
输出打印类 |
功能 |
-h |
打印基本选项 |
-h long |
打印更多选项 |
-h full |
打印所有的选项,包括格式和编码。 |
-version |
显示版本 |
-formats |
显示可以使用的格式 |
-codecs |
显示可用编码 |
-decoders |
显示解码器 |
-encoders |
显示编码器 |
-bsfs |
显示可用位流过滤器 |
-protocols |
显示可用协议 |
-filters |
显示可用过滤器 |
-pix_fmts |
显示可用点格式 |
-layouts |
显示标准通道布局 |
-sample_fmts |
显示可用音频采样格式 |
全局选项 |
功能 |
-loglevel loglevel |
set logging level |
-v loglevel |
set logging level |
-report |
generate a report |
-max_alloc bytes |
set maximum size of a single allocated block |
-y |
overwrite output files |
-n |
do not overwrite output files |
-stats |
print progress report during encoding |
-bits_per_raw_sample number |
设置每个采样点的位数 |
-vol volume |
改变音量 (256=normal) |
单个文件的主要选项 |
功能 |
-f fmt |
force format |
-c codec |
codec name |
-codec codec |
codec name |
-pre preset |
preset name |
-map_metadata outfile[,metadata]:infile[,metadata] |
set metadata information of outfile from infile |
-t duration |
持续时间 |
-to time_stop |
record or transcode stop time |
-fs limit_size |
set the limit file size in bytes |
-ss time_off |
set the start time offset |
-timestamp time |
set the recording timestamp ('now' to set the current time) |
-metadata string=string |
add metadata |
-target type |
specify target file type ("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", "ntsc-svcd", ...) |
-frames number |
set the number of frames to record |
-filter filter_graph |
set stream filtergraph |
-filter_script filename |
read stream filtergraph description from a file |
-reinit_filter |
reinit filtergraph on input parameter changes |
Video options: |
0 |
-vframes number |
set the number of video frames to record |
-r rate |
set frame rate (Hz value, fraction or abbreviation) |
-s size |
set frame size (WxH or abbreviation) |
-aspect aspect |
set aspect ratio (4:3, 16:9 or 1.3333, 1.7777) |
-bits_per_raw_sample number |
set the number of bits per raw sample |
-vn |
disable video |
-vcodec codec |
force video codec ('copy' to copy stream) |
-timecode hh:mm:ss[:;.]ff |
set initial TimeCode value. |
-pass n |
select the pass number (1 to 3) |
-vf filter_graph |
set video filters |
-b bitrate |
video bitrate (please use -b:v) |
-dn |
disable data |
Audio options: |
|
-aframes number |
set the number of audio frames to record |
-aq quality |
set audio quality (codec-specific) |
-ar rate |
set audio sampling rate (in Hz) |
-ac channels |
set number of audio channels |
-an |
disable audio |
-acodec codec |
force audio codec ('copy' to copy stream) |
-vol volume |
change audio volume (256=normal) |
-af filter_graph |
set audio filters |
Subtitle options: |
|
-s size |
set frame size (WxH or abbreviation) |
-sn |
disable subtitle |
-scodec codec |
force subtitle codec ('copy' to copy stream) |
-stag fourcc/tag |
force subtitle tag/fourcc |
-fix_sub_duration |
fix subtitles duration |
-canvas_size size |
set canvas size (WxH or abbreviation) |
-spre preset |
set the subtitle options to the indicated preset |
3具体应用
3.1.图片合成视频
将图片进行命名排序
输入命令
ffmpeg -f image2 -i pic\%04.jpg –r 5 a.flv
注:图片格式,输入文件,每秒5帧。
3.2.ARM9 USB摄像头摄像
ffmpeg -f v4l2 -s 320*240 -r 2 -i/dev/video0 -vcodec mpeg4 /home/f.mp4
ffmpeg -f v4l2 -s 320*240 -r 8 -i/dev/video0 -vcodec h263 -f rtp rtp://192.168.1.6:5060 > /tmp/ffmpeg.sdp
以上命令表示:采集10秒钟视频,对video4linux2视频设备进行采集,采集QCIF(176*144)的视频,每秒8帧,视频设备为 /dev/video0,视频编码为h263,输出格式为RTP,后面定义了IP地址及端口,将该码流所对应的SDP文件重定向到/tmp /ffmpeg.sdp中,将此SDP文件上传到流媒体服务器就可以实现直播了。
./ffmpeg -t 10 -f video4linux2 -s 176*144-r 10 -vpre libx264-hq.ffpreset -i /dev/video0-vcodec libx264 -f rtp rtp://192.168.1.105:6060 > /tmp/x264.sdp
3.3.视频截图
ffmpeg -i test.asf -f image2 -t 0.001 -s352x240 a.jpg
3.4.视频截取动态图
ffmpeg -i test.asf -vframes 30 -f gif a.gif
3.5.转换文件为3GP格式
ffmpeg -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 -acodec aac-ac 2 -ar 22500 -ab 24 -f 3gp test.3gp
ffmpeg -i test.wmv -ac 1 -acodec libamr_nb -ar 8000 -ab 12200 -s 176x144 -b 128-r 15 test.3gp
注:如果要转换为3GP格式,则ffmpeg在编译时必须加上–enable-amr_nb –enable-amr_w。
3.6.转换文件到FLV格式
ffmpeg.exe -i test.mp4 -ab 56 -ar 22050 -b500 -r 15 -s 320x240 f:\test.flv
3.7.将一段音频与一段视频混合
ffmpeg -i son.wav -i video_origine.avivideo_finale.mpg
3.8.将视频转换为图片
ffmpeg -i video.mpg image%d.jpg
3.9.录像屏幕
ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300-vd x11:0,0 -s 1024x768 ./test.avi
注:使用ffmpeg其中,-vd x11:0,0 指录制所使用的偏移为 x=0 和 y=0,-s 1024×768 指录制视频的大小为 1024×768。
3.10.压制H.264视频
ffmpeg-threads 4 -i INPUT -r 29.97 -vcodec libx264 -s 480x272 -flags +loop -cmp+chroma -deblockalpha 0 -deblockbeta 0 -crf 24 -bt 256k -refs 1 -coder 0 -meumh -me_range 16 -subq 5 -partitions +parti4x4+parti8x8+partp8x8 -g 250-keyint_min 25 -level 30 -qmin 10 -qmax 51 -trellis 2 -sc_threshold 40-i_qfactor 0.71 -acodec libfaac -ab 128k -ar 48000 -ac 2
注:使用该指令可以压缩出比较清晰,而且文件转小的H.264视频文件
3.11.获取PCM数据
ffmpeg -i input.mpg -f s16le -ar 44100-acodec pcm_s16le output.pcm
3.12.Windows摄像
./ffmpeg -t 10 -f vfwcap -i 0 -r 8 -f mp4cap.mp4
说明:我们采集10秒,采集设备为vfwcap类型设备,第0个vfwcap采集设备(如果系统有多个vfw的视频采集设备,可以通过-i num来选择),每秒8帧,输出方式为文件,格式为mp4。
ffmpeg -f vfwcap -s 320x240 -r 25 -i 0 -b400K -vcodec mpeg4 new.mp4
ffmpeg -r 15 -s 352x288 -f vfwcap -i 0 http://localhost:8090/feed1.ffm
有任何意见或问题的请留言,希望能帮到你!
ruihanL@126.com
2014/1/9
1命令语法
使用语法 ffmpeg[[options][`-i' input_file]]... {[options] output_file}...
2基本选项
常用选项
编解码类 |
功能 |
-f |
指定格式,包括视频和音频 |
-i |
输入文件名 |
-title string |
标题 |
-timestamp time |
时间戳 |
-author string |
作者 |
-copyright string |
版权信息 |
-comment string |
评论 |
输出打印类 |
功能 |
-h |
打印基本选项 |
-h long |
打印更多选项 |
-h full |
打印所有的选项,包括格式和编码。 |
-version |
显示版本 |
-formats |
显示可以使用的格式 |
-codecs |
显示可用编码 |
-decoders |
显示解码器 |
-encoders |
显示编码器 |
-bsfs |
显示可用位流过滤器 |
-protocols |
显示可用协议 |
-filters |
显示可用过滤器 |
-pix_fmts |
显示可用点格式 |
-layouts |
显示标准通道布局 |
-sample_fmts |
显示可用音频采样格式 |
全局选项 |
功能 |
-loglevel loglevel |
set logging level |
-v loglevel |
set logging level |
-report |
generate a report |
-max_alloc bytes |
set maximum size of a single allocated block |
-y |
overwrite output files |
-n |
do not overwrite output files |
-stats |
print progress report during encoding |
-bits_per_raw_sample number |
设置每个采样点的位数 |
-vol volume |
改变音量 (256=normal) |
单个文件的主要选项 |
功能 |
-f fmt |
force format |
-c codec |
codec name |
-codec codec |
codec name |
-pre preset |
preset name |
-map_metadata outfile[,metadata]:infile[,metadata] |
set metadata information of outfile from infile |
-t duration |
持续时间 |
-to time_stop |
record or transcode stop time |
-fs limit_size |
set the limit file size in bytes |
-ss time_off |
set the start time offset |
-timestamp time |
set the recording timestamp ('now' to set the current time) |
-metadata string=string |
add metadata |
-target type |
specify target file type ("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", "ntsc-svcd", ...) |
-frames number |
set the number of frames to record |
-filter filter_graph |
set stream filtergraph |
-filter_script filename |
read stream filtergraph description from a file |
-reinit_filter |
reinit filtergraph on input parameter changes |
Video options: |
0 |
-vframes number |
set the number of video frames to record |
-r rate |
set frame rate (Hz value, fraction or abbreviation) |
-s size |
set frame size (WxH or abbreviation) |
-aspect aspect |
set aspect ratio (4:3, 16:9 or 1.3333, 1.7777) |
-bits_per_raw_sample number |
set the number of bits per raw sample |
-vn |
disable video |
-vcodec codec |
force video codec ('copy' to copy stream) |
-timecode hh:mm:ss[:;.]ff |
set initial TimeCode value. |
-pass n |
select the pass number (1 to 3) |
-vf filter_graph |
set video filters |
-b bitrate |
video bitrate (please use -b:v) |
-dn |
disable data |
Audio options: |
|
-aframes number |
set the number of audio frames to record |
-aq quality |
set audio quality (codec-specific) |
-ar rate |
set audio sampling rate (in Hz) |
-ac channels |
set number of audio channels |
-an |
disable audio |
-acodec codec |
force audio codec ('copy' to copy stream) |
-vol volume |
change audio volume (256=normal) |
-af filter_graph |
set audio filters |
Subtitle options: |
|
-s size |
set frame size (WxH or abbreviation) |
-sn |
disable subtitle |
-scodec codec |
force subtitle codec ('copy' to copy stream) |
-stag fourcc/tag |
force subtitle tag/fourcc |
-fix_sub_duration |
fix subtitles duration |
-canvas_size size |
set canvas size (WxH or abbreviation) |
-spre preset |
set the subtitle options to the indicated preset |
3具体应用
3.1.图片合成视频
将图片进行命名排序
输入命令
ffmpeg -f image2 -i pic\%04.jpg –r 5 a.flv
注:图片格式,输入文件,每秒5帧。
3.2.ARM9 USB摄像头摄像
ffmpeg -f v4l2 -s 320*240 -r 2 -i/dev/video0 -vcodec mpeg4 /home/f.mp4
ffmpeg -f v4l2 -s 320*240 -r 8 -i/dev/video0 -vcodec h263 -f rtp rtp://192.168.1.6:5060 > /tmp/ffmpeg.sdp
以上命令表示:采集10秒钟视频,对video4linux2视频设备进行采集,采集QCIF(176*144)的视频,每秒8帧,视频设备为 /dev/video0,视频编码为h263,输出格式为RTP,后面定义了IP地址及端口,将该码流所对应的SDP文件重定向到/tmp /ffmpeg.sdp中,将此SDP文件上传到流媒体服务器就可以实现直播了。
./ffmpeg -t 10 -f video4linux2 -s 176*144-r 10 -vpre libx264-hq.ffpreset -i /dev/video0-vcodec libx264 -f rtp rtp://192.168.1.105:6060 > /tmp/x264.sdp
3.3.视频截图
ffmpeg -i test.asf -f image2 -t 0.001 -s352x240 a.jpg
3.4.视频截取动态图
ffmpeg -i test.asf -vframes 30 -f gif a.gif
3.5.转换文件为3GP格式
ffmpeg -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 -acodec aac-ac 2 -ar 22500 -ab 24 -f 3gp test.3gp
ffmpeg -i test.wmv -ac 1 -acodec libamr_nb -ar 8000 -ab 12200 -s 176x144 -b 128-r 15 test.3gp
注:如果要转换为3GP格式,则ffmpeg在编译时必须加上–enable-amr_nb –enable-amr_w。
3.6.转换文件到FLV格式
ffmpeg.exe -i test.mp4 -ab 56 -ar 22050 -b500 -r 15 -s 320x240 f:\test.flv
3.7.将一段音频与一段视频混合
ffmpeg -i son.wav -i video_origine.avivideo_finale.mpg
3.8.将视频转换为图片
ffmpeg -i video.mpg image%d.jpg
3.9.录像屏幕
ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300-vd x11:0,0 -s 1024x768 ./test.avi
注:使用ffmpeg其中,-vd x11:0,0 指录制所使用的偏移为 x=0 和 y=0,-s 1024×768 指录制视频的大小为 1024×768。
3.10.压制H.264视频
ffmpeg-threads 4 -i INPUT -r 29.97 -vcodec libx264 -s 480x272 -flags +loop -cmp+chroma -deblockalpha 0 -deblockbeta 0 -crf 24 -bt 256k -refs 1 -coder 0 -meumh -me_range 16 -subq 5 -partitions +parti4x4+parti8x8+partp8x8 -g 250-keyint_min 25 -level 30 -qmin 10 -qmax 51 -trellis 2 -sc_threshold 40-i_qfactor 0.71 -acodec libfaac -ab 128k -ar 48000 -ac 2
注:使用该指令可以压缩出比较清晰,而且文件转小的H.264视频文件
3.11.获取PCM数据
ffmpeg -i input.mpg -f s16le -ar 44100-acodec pcm_s16le output.pcm
3.12.Windows摄像
./ffmpeg -t 10 -f vfwcap -i 0 -r 8 -f mp4cap.mp4
说明:我们采集10秒,采集设备为vfwcap类型设备,第0个vfwcap采集设备(如果系统有多个vfw的视频采集设备,可以通过-i num来选择),每秒8帧,输出方式为文件,格式为mp4。
ffmpeg -f vfwcap -s 320x240 -r 25 -i 0 -b400K -vcodec mpeg4 new.mp4
ffmpeg -r 15 -s 352x288 -f vfwcap -i 0 http://localhost:8090/feed1.ffm
有任何意见或问题的请留言,希望能帮到你!
ffmpeg编解码应用相关推荐
- ffmpeg 编解码 码率设置问题 CBR 、VBR
之前都是利用硬件进行视频流的编解码 最近 在利用ffmpeg 编解码在CPU上进行软解软编码 之前别的硬件平台设置码率和vbr cbr的时候 提供了接口直接设置一下就可以 但是ffmpeg这里 并没有 ...
- FFmpeg编解码常用API和数据结构
一.简述 本文主要介绍FFmpeg 编程中用到的基础知识,包含常见音视频概念,常用API函数,常用结构体,解封装流程,解复用器流程以及注册等. 二.常见音视频概念 容器/文件( Conainer/Fi ...
- 【FFmpeg】FFmpeg编解码H264产生马赛克、伪影的解决方法
1.问题描述 使用FFmpeg编码H264,再解码显示时,产生马赛克:有时是在画面静止时,静止时间越长,马赛克.伪影越多:有时是在画面切入切出时:有时是在网络带宽不够时 2.原因分析 2.1 丢帧 网 ...
- ffmpeg编解码详细过程
1. 注册所有容器格式和CODEC:av_register_all() 2. 打开文件:av_open_input_file() 3. 从文件中提取流信息:av_find_stream_info() ...
- 视频直播流程以及ffmpeg编解码流程
去年最流行的非视频直播莫属,出现了几百家的直播平台,毕竟自己也是在直播平台做开发的,然后就写一篇关于直播的文章.这里只说流程,具体的实现就不说了,应付面试应该还是可以的. 先上一张简单的流程图: 上面 ...
- ffmpeg 编解码流程
去年最流行的非视频直播莫属,出现了几百家的直播平台,毕竟自己也是在直播平台做开发的,然后就写一篇关于直播的文章.这里只说流程,具体的实现就不说了,应付面试应该还是可以的. 先上一张简单的流程图: 上面 ...
- FFmpeg编解码处理1-转码全流程简介
https://www.cnblogs.com/leisure_chn/p/10584901.html
- FFmpeg编解码过程(五)
下面我针对学习路线中的各部分单独做一下介绍视音频基础知识:视频.图像.音频的格式.这里的"格式"是一个广义的概念,既包括MP4,FLV这样的封装格式,也包括H264, MPEG2这 ...
- ffmpeg编解码格式
首先要分清楚媒体文件和编码的区别: 文件是既包括视频又包括音频.甚至还带有脚本的一个集合,也可以叫容器: 文件当中的视频和音频的压缩算法才是具体的编码. 也就是说一个.avi文件,当中的视频可能是编码 ...
最新文章
- 读书笔记:理论生态学原理及应用(一)——合作的机制
- 【计算理论】可判定性 ( 计算模型与语言 | 区分 可计算语言 与 可判定语言 | 证明 通用图灵机语言是 可计算语言 | 通用任务图灵机 与 特殊任务图灵机 )
- 转:linux的源码查看, c++语法 查看网站
- 河中跳房子(noiopenjudge,noip2015)
- 计算机组装与维护补考论文,探讨《计算机组装与维护》课程教学论文
- Java面向对象之继承、super关键字、方法重写
- java面试要点---基础部分CoreJava,基础及语法
- java gpu hash_比特币 GPU 挖矿 Sha256 Hash实现(OpenCL)
- 金庸群侠传修改器链接服务器,《金庸群侠传》6合1版修改器
- MATLAB人脸识别系统
- 修复鹏城开发者云硬盘扩容报错 fdisk: cannot write disk label: Invalid argument
- html清除span的text,使用jquery删除字符串中的span标签
- 浏览器利用框架BeEF测试
- 工业互联网是不是很难学对于女生而言?
- Nvidia jetson tx2 ubuntu16.04插入128GB内存卡报错:Unable to access/mount “128 GB Volume”
- 基于Autoware制作高精地图(二)
- BRAT的安装、配置、标注操作
- 激光器发射光功率饱和值
- 开关电源补偿环路设计(1):基础部分-以Buck 为例
- Qt编写可视化大屏电子看板系统30-模块8物料管理
热门文章
- 升级至4K超高清12G-SDI接口时需要考虑的三件事
- 假如腾讯跟360之战是一场阴谋联想到的
- 一本超越期待的 C++ 书——简评《Boost程序库完全开发指南:深入C++“准”标准库》...
- 如何防止CDN防护被绕过
- 光电玻璃LED透明屏是黑科技?揭秘玻璃LED透明屏原理
- maven依赖的添加
- 厦门考计算机竞赛保送北大清华名单,优秀!厦门这些学生将保送清华北大等名校...
- 宝马将自动驾驶和打车服务结合,最快明年在德国上路
- .resource文件如何打开
- [转]JQuery Mobile 手机显示页面偏小_se7en3_新浪博客