FFMPEG Tips

来自Jack's Lab
跳转到: 导航, 搜索

Window/MacOS: https://ffmpeg.zeranoe.com/builds/

目录

1 Overview

原记载于 openray 的个人blog 发表日期: 2007-04-20 18:42

1. encode yuv file

ffmpeg -s cif -vcodec mpeg4 -i paris.yuv paris.avi

-s 指定帧大小 cif 为 352x288,qcif 为 176x144,4cif 为 704x576 -vcodec 指定采用的编码器 -i 指定输入文件


2. output raw YUV420P file

ffmpeg -i paris.avi paris0.yuv


3. 将一段视频输出为图片序列

ffmpeg -i 1.avi cat%d.png -vcode png


-vcodec mjpeg
-vcodec ppm


ffmpeg -i 1.avi cat%04d.jpg -vcodec mjpeg -ss 0:1:2 -t 0:0:1

将1.avi视频 1分02秒 处开始,持续1秒长的视频输出为jpg的序列


ffmpeg -vcodec mjpeg -i 1.flv test%02d.jpg -ss 0:0:2 -t 0.001

-t 表示持续时间为0.001秒,这个命令相当于截取开始2秒处的一幅jpeg的图片


4. 多输入单输出

ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg


5. 单输入多输出

ffmpeg -i /tmp/a.wav -ab 64 /tmp/a.mp2 -ab 128 /tmp/b.mp2 -map 0:0 -map 0:0

-map file:stream_index 指定哪一个输入流用于输出流,顺序对应


6. DVD to mpeg4

ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800 -g 300 -bf 2 -acodec mp2 -ab 128 snatch.avi

压制高品质mp4的参考参数:

'-mbd rd -flags +4mv+trell+aic -cmp 2 -subcmp 2 -g 300 -pass 1/2'

可以试试: '-bf 2', '-flags qprd', '-flags mv0', '-flags skiprd'


7. encode mpeg1/mpeg2

ffmpeg -i 1.avi -vcodec mpeg2video 2.mpg

注意mpeg2的codec为 mpeg2video

其他codec可以使用 ffmpeg -formats 查看

压制高品质mp1/mp2的参考参数:

'-mbd rd -flags +trell -cmp 2 -subcmp 2 -g 100 -pass 1/2'

注意,加 '-g 100' 可能会使某些解码器没法解码

可以试试: '-bf 2', '-flags qprd', '-flags mv0', '-flags skiprd'


8. encode flv

ffmpeg -i 1.avi -ab 56 -ar 22050 -b 500 -r 15 1.flv


9. X 屏幕录像

FFmpeg can grab the X11 display.

ffmpeg -f x11grab -i :0.0 /tmp/out.mpg

0.0 is display.screen number of your X11 server, same as the DISPLAY environment variable.


ffmpeg -f x11grab -i :0.0+10,20 /tmp/out.mpg

0.0 is display.screen number of your X11 server, same as the DISPLAY environment variable.

10 is the x-offset and 20 the y-offset for the grabbing.


10. 音视频采集

ffmpeg -f audio_device -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg

Note that you must activate the right video source and channel before launching FFmpeg with any TV viewer such as xawtv (http://bytesex.org/xawtv/) by Gerd Knorr. You also have to set the audio recording levels correctly with a standard mixer.


12. 快速合并视频文件

mencoder -oac copy -ovc copy -idx -o output.avi video1.avi video2.avi video3.avi


13. Split AVI Files

mencoder -ovc copy -oac copy -endpos 0:50:00 -o foo-part1.avi foo.avi
mencoder -ovc copy -oac copy -ss 0:50:00 -o foo-part2.avi foo.avi


14. RecordMyDesktop 记录的 ogv 格式转换

mencoder -ovc lavc -oac copy -lavcopts vcodec=mpeg4 -o out.avi record.ogv  # mpeg4 格式
mencoder -ovc lavc -oac copy -lavcopts vcodec=ffv1 -o out.avi record.ogv   # 无损格式


2 常用选项

-i filename 输入文件
-f fmt 强迫采用格式fmt
-y 覆盖输出文件
-ss position 搜索到指定的时间处开始 [-]hh:mm:ss[.xxx]的格式也支持
-b bitrate 设置比特率,缺省200kb/s
-r fps 设置帧频 缺省25
-s size 设置帧大小 格式为WXH 缺省160X128.下面的简写也可以直接使用:
    sqcif 128X96 qcif 176X144 cif 352X288 4cif 704X576

-vcodec codec 强制使用codec编解码方式。 如果用copy表示原始编解码数据必须被拷贝。
-sameq 使用同样视频质量作为源(VBR)
-g gop_size 设置图像组大小
-intra 仅适用帧内编码
-bf frames 使用frames B 帧,支持mpeg1,mpeg2,mpeg4
-ab bitrate 设置音频码率
-ar freq 设置音频采样率
-ac channels 设置通道 缺省为1
-an 不使能音频纪录
-acodec codec 使用codec编解码
-benchmark 为基准测试加入时间
-hex 倾倒每一个输入包


3 音频提取

$ ffmpeg -i 3.mp4 -vn -y -acodec copy 3.aac
$ ffmpeg -i 3.mp4 -vn -y -acodec copy 3.m4a

# 查看音视频文件信息命令
$ ffmpeg -i 3.aac
$ ffmpeg -i 3.m4a
  • aac 全称 Advanced Audio Coding,后缀名一般在 m4a、aac、mp4、mkv 中,其中 mp4、mkv 为视频格式,采样率一般为44.1khz,码率一般是 64kbps 到 192kbps,声道一般为双声道立体声。基于MPEG-2的音频编码技术,最高支持96KHz的采样率,128Kbps的AAC立体声音乐被专家认为不易察觉到与原来未压缩音源的区别。由Fraunhofer IIS、杜比实验室、AT&T、索尼等公司共同开发,目的是取代MP3格式。2000年,MPEG-4标准出现后,AAC重新集成了其特性,加入了SBR技术和PS技术,为了区别于传统的MPEG-2 AAC又称为MPEG-4 AAC。
  • ac3 全称 (Dolby) Audio Codec 3,一般出现在 DVD 视频格式中,后缀名为 vob,采样率一般为48khz,码率一般是 192kbps 到 384kbps,声道为双声道或 6 声道


4 音频格式转换

# mp4 转 mp3
$ ffmpeg -i a.mp4 -f MP3 a1.mp3

# mp4 转 flac   
$ ffmpeg -i a.mp4  -f flac -acodec flac -ac 1 -ar 16000 a.flac

# mp3 转 flac
$ ffmpeg -y -i 11.mp3 -f flac -acodec flac -ac 1 -ar 16000 11.flac

# mp3 转 pcm
$ ffmpeg -y -i a.mp3 -acodec pcm_s16le -f s16le -ac 1 -ar 16000 a.pcm



个人工具
名字空间

变换
操作
导航
工具箱