标签:
FFmpeg的使用及常用参数
一.下载:
二.demo:
1 class Program
2 {
3 static void Main(string[] args)
4 {
5 string srcFileName = @"F:\资料\Demo\FFmpeg_Demo\videoold\PROMO.wmv";
6 string destFileName = @"F:\资料\Demo\FFmpeg_Demo\videonew\PROMO.mp4";
7
8 Process p = new Process();
9 p.StartInfo.FileName = @"F:\资料\Demo\FFmpeg_Demo\mencoder\ffmpeg.exe";
10 p.StartInfo.UseShellExecute = false;
11
12 p.StartInfo.Arguments = "-i " + srcFileName + GenerateDefaultSetting() + destFileName;
13
14
15 p.StartInfo.RedirectStandardInput = true;
16 p.StartInfo.RedirectStandardOutput = true;
17 p.StartInfo.RedirectStandardError = true;//把外部程序错误输出写到StandardError流中
18 p.ErrorDataReceived += new DataReceivedEventHandler(p_ErrorDataReceived);
19 p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
20 p.Start();
21 p.BeginErrorReadLine();//开始异步读取
22 p.WaitForExit();//阻塞等待进程结束
23 p.Close();//关闭进程
24 p.Dispose();//释放资源
25 Console.WriteLine("ok");
26 Console.ReadKey();
27 }
28 private static void p_ErrorDataReceived(object sender, DataReceivedEventArgs e)
29 {
30 Console.WriteLine(e.Data);
31 }
32 private static void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
33 {
34 Console.WriteLine(e.Data);
35 }
36
37 private static string GenerateDefaultSetting()
38 {
39 string setting = string.Empty;
40 setting += " -y ";
41 //setting += " -b 800 ";//-b大于0就模糊【?】
42 setting += " -ab 56 ";
43 setting += " -ar 22050 ";
44 setting += " -qscale 4 ";
45 setting += " -r " + 29.970;
46 setting += " -ac 2 ";
47 setting += " -s " + 640 + "x" + 480 + " ";
48 return setting;
49 }
50 }
三.参数:
1.常用参数:
-ab bitrate 设置音频码率
-acodec codec 使用codec编解码
-ac channels 设置通道,缺省为1
-ar freq 设置音频采样率
-r fps 设置帧频,缺省25
-b bitrate 设置比特率,缺省200kb/s
-qscale 6或4 使用动态码率来设置
-vcodec libx264 这个应该是个编码设置,网上查到 libx264.dll
fmpeg作为Linux下的LGPL开源程序,在Windows下编译需要特殊的工具。我这里提供的版本,使用MinGW编译,只有一个可执行文件,可直接运行(命令行程序)。
FLV向其它格式(avi(mpeg4)、asf、mpeg)转换的简易方法:(圆括号内必填,方括号内可选)
转换成wmv/asf
ffmpeg -i (要转换的flv文件完整路径) -f asf -vcodec (wmv1或wmv2) [-b 视频码率] -acodec mp3 [-ab 音频码率] (输出的asf/wmv文件完整路径)
转换成mpeg1
ffmpeg -i (要转换的flv文件完整路径) -f mpeg -vcodec mpeg1video [-b 视频码率] -acodec mp2 [-ab 音频码率] (输出的mpg文件完整路径)
转换成avi(msmpeg4)
ffmpeg -i (要转换的flv文件完整路径) -f avi -vcodec (msmpeg4或msmpeg4v1或msmpeg4v2) [-b 视频码率] -acodec mp3 [-ab 音频码率] (输出的avi文件完整路径)
ffmeg的7个技巧:
1 音频转换
ffmpeg -i my_audio.wav my_audio.mp3-i 后为要转换的音频文件,my_audio.mp3为目的音频文件
2 视频转换
ffmpeg -i my_video.mpeg -s 500×500 my_video.flv-i 后为源视频文件, -s 表示设置目标视频文件的分辨率 my_video.flv为目的视频文件
3 从视频中截取图片
ffmpeg -i test.mpg image%d.jpg默认1s截取25张图片,可以通过-r设置每秒截取的图片数量
-r fps 设置帧率,也就是每秒截取图片的数量(默认25)
ffmpeg -i test.mpg -r 1 image%d.jpg这样子每1s截取1张图片
还可以设置截取间隔,起止
-ss 设定时间位置,语法:hh:mm:ss[.xxx]
-t 时长:限制转码/捕获视频的时间,语法:hh:mm:ss[.xxx]
ffmpeg -i test.mpg -r 25 -ss 00:00:10 -t 00:00:05 images%05d.png在第10秒开始,以每秒截取25张图片的速度,截取5秒时长的图片
4 从视频中采集音频
ffmpeg -i video.avi -f mp3 audio.mp3-f 强制选择格式
ffmpeg -i video.avi -vn audio.mp3-vn 取消截取视频(也就是只输出音频文件)
5 创建截屏视频
ffmpeg -f x11grab -r 25 -s wxga -i :0.0 /tmp/outputFile.mpg0.0 是你X11 server的屏幕显示号吗,和DISPLAY一样样的.
此条命令以每秒25帧的速率来截取wxga屏幕视频,当然这里可以用-s 来设置视频分辨率,输出文件是/tmp/outputFile.mpg
6 用图片制作视频
ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg
将`img001.jpg’, `img002.jpg‘这种顺序排列的图片文件转制作为视频
7 从webcam中截取视频
ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 out.mpg
同时截取音频和视频:
ffmpeg -f oss -i /dev/dsp -f video4linux2 -s 320x240 -i /dev/video0 out.mpg
/dev/video0为视频设备 /dev/dsp为音频设备
2.更多参数:
标签:
原文地址:http://www.cnblogs.com/zlp520/p/4442179.html