ffmpeg 有用命令 (转载)
转自:http://blog.csdn.net/simongyley/article/details/9984167
1、将h264文件解码为yuv文件
ffmpeg -i file.h264 file.yuv
ffmpeg 转换
D:\ffmpeg\bin>ffmpeg.exe -i C:\Users\pc\Desktop\sp.mp4 -vf scale=500:-1 -t 100 ss.flv
C:\Users\pc\Desttop\sp.mp4 是所需要转换的文件地址
scale=500:-1 表示准换后的视频的宽度为500px -1表示高度自适应,也可以写成500:500,表示宽度和高度都是500px
-t 100 表示截取的视频的时间为100毫秒,
ss.flv表示命名的新文件名,文件存放在D盘.
ffmpeg 截图
ffmpeg -i demo.mp4 -ss 10.1 -t 0.001 1.jpg
截取demo.mp4的视频 从10.1秒开始 -t 0.001表示截取10.1秒的这张图片 保存为 1.jpg
ffmpeg 裁剪
ffmpeg -i demo.mp4 -filter:v "crop=10:20:100:100" out.mp4
crop里的参数依次为: 左边距:右边距:宽度:高度
ffmpeg 相同分辨率转flv
ffmpeg -i demo.mp4 -vcodec copy -acodec copy out.flv
Ipad 可以直接播放mp4,可以用html5的video标签
<video width="555" height="315" controls preload="auto" src="demo.mp4"></video>
ffmpeg 视频合成
因为 ffmpeg 是支持切分 mp4 视频的,所以我就理所当然的以为 ffmpeg 是支持视频合并。直到今天同事找我问方法,才发现一直以为的方法是错误的, mp4 不支持直接 concate(丢人了。。。),赶紧补了一下能量,从网上抓来了多种实现。
注: 这里的 mp4 指的是网上最多见的 h264+aac mpeg4 容器的方式
ffmpeg + ts
这个的思路是先将 mp4 转化为同样编码形式的 ts 流,因为 ts流是可以 concate 的,先把 mp4 封装成 ts ,然后 concate ts 流, 最后再把 ts 流转化为 mp4。
|
1
2
3
|
ffmpeg -i 1.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 1.tsffmpeg -i 2.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 2.tsffmpeg -i "concat:1.ts|2.ts" -acodec copy -vcodec copy -absf aac_adtstoasc output.mp4 |
将 aif 文件转换为 16 位有符号数,小端存储模式,8000 Hz 采样率:
ffmpeg -i test.aif -f s16le -ar 8000 test.pcm
将 44.1KHz 双声道 16 位有符号数小端存储的 PCM 数据编码为 AAC:
ffmpeg -f s16le -ar 44100 -ac 2 -i test.pcm -acodec aac -strict experimental test.aac
将 4:2:0 的 YUV 文件编码为 H.264 ES 流(必须启用 ffmpeg 的 libx264 组件,即配置 ffmpeg 时:--enable-libx264):
ffmpeg -pix_fmt yuv420p -s 176x144 -i test.yuv -f h264 test.264
或
ffmpeg -pix_fmt yuv420p -s 176x144 -i test.yuv test.h264
将 H.264 ES 流解码为 YUV 文件(必须启用 ffmpeg 的 rawvideo 组件,即配置 ffmpeg 时:--enable-encoder=rawvideo):
ffmpeg -i test.264 test.yuv
将 4:2:0 QCIF 大小的 YUV 文件转换为 4:2:2 CIF 大小的 YUV 文件:
ffmpeg -pix_fmt yuv420p -s 176x144 -i foreman_qcif.yuv -pix_fmt yuv422p -s 352x288 test.yuv
将一幅 4:2:0 QCIF 大小的 YUV 图像转换为 CIF 大小的 BMP 文件:
ffmpeg -pix_fmt yuv420p -s 176x144 -i foreman_qcif.yuv -pix_fmt rgb24 -s 352x288 test.bmp
将 y4m 格式的图像序列转换为 4:2:0 的 YUV 图像序列:
ffmpeg -f yuv4mpegpipe -i test.y4m -pix_fmt yuv420p test.yuv
将 AVI 文件转换为 H.264 视频 + AC3 音频的 MP4 文件,码率为 4M,视频量化区间为[10,45](必须启用 ffmpeg 的 libx264 组件,即配置 ffmpeg 时:--enable-libx264):
ffmpeg -i test.avi -vcodec libx264 -b 4096000 -qmin 10 -qmax 45 -acodec ac3 test.mp4
将 YUV 和 PCM 文件经过编码后输出成为 MPEG PS 文件:
ffmpeg -pix_fmt yuv420p -s 720x576 -r 25 -b 8000000 -i test.yuv -f s16le -ac 2 -ar 48000 -ab 384000 -i test.pcm -f vob test.vob
Linux 下采集视频并编码为 H.263 ES 流:
ffmpeg -f video4linux2 -s 352*288
-r 25 -t 30 -i /dev/video0 -vcodec h263 -f h263 test.263
录音(mp3或amr):
ffmpeg -f oss -i /dev/dsp wheer.mp3
ffmpeg -f oss -i /dev/dsp -ar 8000 -ab 10200 wheer.amr
当然你还可以设一堆参数,如调节音量-vol 1024(256是默认值), 设定采样率-ar 8000,设定比特率-ab 122000等等。。。至于你想在麦克和声卡之间切换当然就可以求助于aumix了
另外,在~/.bashrc中定义alias amrec='ffmpeg -f oss -vol 1024 -i /dev/dsp -ar 8000 -ab 10200',以后就用amrec file.amr录音了,压缩率极高,一小时音频才5M多:)
屏幕录像:
ffmpeg -f x11grab -s xga -r 60 -i :0.0+0+0 wheer.avi
其中-f指定x11grab表示屏幕录像(*编译时必须加上--enable-x11grab选项*),-s设定尺寸,写成缩写或
1024x768格式均 可,-r设定fps,-i中的:0.0表示你的x11屏幕,+0,0表示偏移,如果你想录制某个小窗口,可以用xwininfo
-frame来找到具体坐标。
另外还有一堆参数可设,如比特率-b 200000,-vcodec为视频编码,还可加上-f oss -i /dev/dsp同时录音,用aumix将录音源调成麦克风就可以配音了,声音太小了用-vol改~~
视频剪切:
ffmpeg -ss 01:02:30 -t 00:10:00 -i test.mov -vcodec copy -acodec copy out.mov
将视频文件 test.mov 从第1小时2分30秒开始截取10分钟时长,即截取 test.mov 中第1小时2分30秒到第1小时12分30秒之间的内容。
How to capture a webcam input
https://trac.ffmpeg.org/wiki/How to capture a webcam input
Linux¶
On Linux, we can use video4linux2(or shortly "v4l2") input device to capture live input (such as webcamera), like this:
ffmpeg -f video4linux2 -r 25 -s 640x480 -i /dev/video0 out.avi
or
ffmpeg -f v4l2 -r 25 -s 640x480 -i /dev/video0 out.avi
If you need to set some specific parameters of your camera, youcan do that using v4l2-ctltool.
You can find it in the fedora/ubuntu/debian package namedv4l-utils.
Most probably you'll want to know what frame sizes / frame ratesyour camera supports and you can do that using: v4l2-ctl--list-formats-ext
Also, you might want to correct brightness, zoom, focus, etc.with:
v4l2-ctl -L
and
v4l2-ctl -c
=
Streaming a simple RTP audio stream from FFmpeg¶
https://trac.ffmpeg.org/wiki/StreamingGuide
FFmpeg can stream a single stream using the RTPprotocol. In order to avoid buffering problems on the otherhand, the streaming should be done through the -re option, whichmeans that the stream will be streamed in real-time (i.e. it slowsit down to simulate a live streaming source.
For example the following command will generate a signal, andwill stream it to the port 1234 on localhost:
ffmpeg -re -f lavfi -i aevalsrc="sin(400*2*PI*t)" -ar 8000 -f mulaw -f rtp rtp://127.0.0.1:1234
To play the stream with ffplay, run the command:
ffplay rtp://127.0.0.1:1234
Note that rtp by default uses UDP, which, for large streams, cancause packet loss. See the "point to point" section in thisdocument for hints if this ever happens to you.
关于页面视频播放的一些总结
1.如果文件比较大的话一般只能播放流媒体格式的文件,比如flv格式,采用边下载边播放的形式,所以如果文件不是flv格式的话需要按照上面所介绍的转换方式进行转换。
2.文件的码率会影响下载的速度,如果当前网络为1M,那么想要流畅的播放视频文件的话,播放的文件的码率必须在1024Kbps以下,否则就需要进行转换,以达到最佳播放效果。
更多关于Ffmpeg的介绍 http://ffmpeg.org/
更多关于Jplayer的介绍 http://www.jplayer.org/
ffmpeg 有用命令 (转载)的更多相关文章
- 黄聪:ffmpeg参数说明(转载)
ffmpeg.exe -i F:\闪客之家\闪客之歌.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\11.flv ffmpeg -i F:\01.wm ...
- ffmpeg参数说明(转载)
ffmpeg.exe -i F:\闪客之家\闪客之歌.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\11.flv ffmpeg -i F:\01.wm ...
- FFmpeg 常用命令收集
FFmpeg 常用命令 合并视频 ffmpeg -i "KTDS-820A_FHD.mp4" -c copy -bsf:v h264_mp4toannexb -f mpegts i ...
- Linux下的有用命令
在之前的博客<Linux下常用命令与使用技巧>中,介绍了Linux的常用命令,在今天的博客中,给大家介绍其他的有用命令. 1.文本转换命令 在Linux下工作,我们不可避免地要和文件格式做 ...
- 转: FFmpeg功能命令汇总
原文: FFmpeg功能命令汇总 前言 如此强大的FFmpeg,能够实现视频采集.视频格式转化.视频截图.视频添加水印.视频切片.视频录制.视频推流.更改音视频参数功能等.通过终端命令如何实现这些功能 ...
- wav文件格式及ffmpeg处理命令
wav文件头详解 符合RIFF(Resource Interchange File Format)规范的wav文件的文件头记录了音频流的编码参数等基本信息.wav文件由多个块组成,至少包含RIFF标志 ...
- FFmpeg常用命令 (三)流媒体
前言 如此强大的FFmpeg,能够实现视频采集.视频格式转化.视频截图.视频添加水印.视频切片.视频录制.视频推流.更改音视频参数功能等.通过终端命令如何实现这些功能,Richy在本文做一记录,以备之 ...
- FFMpeg 常用命令格式转换,视频合成
FFmpeg都是命令行的,用起来肯定不方便.但是,这对技术宅应该不成问题.下面,我就罗列一些比较实用的使用方法吧. FFmpeg的下载与安装 FFmpeg是开源的.但我们不必去下载它的源代码.下载已经 ...
- ffmpeg常用命令-学习
文章标题:FFmpeg常用命令合集 文章地址:https://blog.csdn.net/lemon_tree12138/article/details/99719520
随机推荐
- BUAA_OO_博客作业四
BUAA_OO_博客作业四 1 第四单元两次作业的架构设计 1.1 第13次作业 类图 作业要求:通过实现UmlInteraction这个官方提供的接口,来实现自己的UmlInteraction解 ...
- 对于BFC(block format context)理解
目录 前言 Box: CSS布局的基本单位&盒模型 什么是BFC?(Block formatting contexts) 元素与盒 正常流 块级与行内级 产生垂直外边距合并的必备条件 前言 什 ...
- 【Codeforces 1086B】Minimum Diameter Tree
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 统计叶子节点个数m 把每条和叶子节点相邻的边权设置成s/cnt就可以了 这样答案就是2*s/m(直径最后肯定是从一个叶子节点开始,到另外一个叶 ...
- 【51NOD1806】wangyurzee的树(Prufer编码,容斥原理,组合计数)
题意:有n个点和m条限制,每条限制限制了一个点的度数不能为某个数. 求合法的树的个数模10^9+7 n<=10^6 m<=17 思路:WYZ作业 首先m<=17显然是2^m容斥 枚举 ...
- 【Eclipse】eclipse中设置tomcat启动时候的JVM参数
主要通过以下的几个jvm参数来设置堆内存的: -Xmx512m 最大总堆内存,一般设置为物理内存的1/4 -Xms512m 初始总堆内存,一般将它设置的和最大堆内存一样大,这样就不需要根据当前堆使用情 ...
- codevs——1039 数的划分
1039 数的划分 2001年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 将整数 ...
- 爱普生L201
http://tech.sina.com.cn/b/2011-03-29/05481698131.shtml
- Java导出jar并运行
1. 创建manifest.mf文件 在工程下创建manifest.mf文件.文件内容为: Manifest-version: 1.0 Main-Class: SqlCheckUtil.java 注意 ...
- 关于Java函数不支持参数默认值的讨论,最后一条亮了 2333
- php设计模式——模板模式
最近打算巩固,整理一下设计模式相关的内容.这篇是关于 ——模板模式! 原文:http://www.jb51.net/article/76052.htm ----------------------- ...