用ffmpeg转换视频格式

合集下载

ffmpeg高级用法

ffmpeg高级用法

ffmpeg高级用法FFmpeg是一个强大的开源工具,用于处理多媒体内容,包括视频、音频和其他类型的媒体文件。

以下是FFmpeg的一些高级用法:1. **流媒体传输和录制**:使用FFmpeg进行实时视频和音频流的传输和录制,可以用于网络直播、在线会议等场景。

通过使用`-f`参数指定输出格式,`-i`参数指定输入源,可以实现实时传输和录制。

2. **视频转码和格式转换**:使用FFmpeg进行视频的转码和格式转换,可以方便地将视频文件转换为不同的格式,例如MP4、AVI、FLV 等。

通过指定输出格式和参数,可以实现视频的转码和格式转换。

3. **音频提取和处理**:使用FFmpeg提取和处理音频文件,可以实现音频的剪辑、合并、混音等操作。

通过指定输入音频文件和参数,可以实现音频的处理和编辑。

4. **字幕处理**:使用FFmpeg进行字幕的处理和添加,可以方便地为视频添加字幕或进行字幕的编辑。

通过指定字幕文件和参数,可以实现字幕的添加和处理。

5. **滤镜效果**:使用FFmpeg的滤镜效果,可以对视频进行各种处理,例如缩放、裁剪、旋转等。

通过指定滤镜和参数,可以实现视频的滤镜效果处理。

6. **多流录制**:使用FFmpeg进行多流录制,可以同时录制多个视频流,例如同时录制摄像头和屏幕。

通过指定多个输入源和参数,可以实现多流录制。

7. **编码器和容器格式支持**:FFmpeg支持大量的编码器和容器格式,可以方便地处理各种类型的媒体文件。

通过指定编码器和容器格式,可以实现媒体文件的处理和编辑。

这只是FFmpeg的一些高级用法示例,实际上,FFmpeg还有更多的功能和选项可以用于更复杂的媒体处理任务。

FFMPEG常用命令-格式转换-持续更新中

FFMPEG常用命令-格式转换-持续更新中

FFMPEG常⽤命令-格式转换-持续更新中---恢复内容开始---ffmpeg是⼀个强⼤的⼯具,在⼯作中各种格式转换,编码,提取视频中的帧需要⽤到,记录下⼯作中常⽤的⼀些ffmpeg命令,持续更新中...将输⼊的infile视频⽂件通过avc编码成h264的视频流ffmpeg -i infile.mp4 -an -vcodec libx264 -crf 23 outfile.h264-i input file -an disable audio -vcodec 指定编码类型 -crf 采⽤cf的编码⽅式并设定level为23(CRF和QP的区别详见)将输⼊的handshake视频⽂件转码成dest1视频⽂件ffmpeg -i handshake.avi -c:v libx264 -preset slow -qp 37 -c:a copy dest1.mp4-i input file -c:v 和-codec:v以及-vcodec是⼀个意思,设置video的codec⽅式-preset 设置⼀些编码参数,有很多levelultrafastsuperfastveryfastfasterfastmedium – default presetslowslowerveryslowplacebo(⼀般不⽤)可以省略,默认是"medium",越慢质量越⾼-qp 设置固定的量化参数 -c:a 等同于-acodec和-codec:a 设置audio的codec⽅式是copy将⼀个⽂件夹的所有视频每隔⼀定帧数提取出图⽚for %%i in (*.mov) do (ffmpeg -i %%i -vf "select=not(mod(n\,50))" -vsync vfr "%%~ni_%%03d.bmp")for %%i in (*.mov) 遍历⽂件夹中所有mov为后缀的⽂件-i input video -vf 等同于-filter:v 具体信息参见 select选择哪些输⼊帧会输出,这边选择的是所有整除50的需要输出第0,50,100... -vsync 设置视频的同步⽅式这⾥的vfr是指传timestamp,如果两帧相同的timestamp需要丢掉最后"%%~ni_%%03d.bmp"是指输出的bmp的名字是输⼊的video的名字后⾯加上001 002 003等从⼀个input raw 视频中抽取出每⼀帧ffmpeg -f rawvideo -framerate 25 -s 1280x720 -pixel_format yuv420p -i in.yuv -c copy -f segment -segment_time 0.01 frames%d.yuv-f 指定输⼊的format为rawvideo -framerate设置帧率 -s 设置输⼊视频的分辨率 -pixel_format设置输⼊视频的格式 -i 输⼊的raw视频 -c 设置输⼊到输出的codec⽅式,这⾥为copy,不需要编解码 -f 指定输出格式,把输⼊的video分成好多个⼩段,只要后⾯设置的segment_time(0.01)⽐⼀帧的时间短(这⾥是1/25=0.04),就会把⼀帧分成⼀段,然后存⼊到yuv中---恢复内容结束---ffmpeg是⼀个强⼤的⼯具,在⼯作者各种格式转换,编码,提取视频中的帧需要⽤到,记录下⼯作中常⽤的⼀些ffmpeg命令,持续更新中...将输⼊的infile视频⽂件通过avc编码成h264的视频流ffmpeg -i infile.mp4 -an -vcodec libx264 -crf 23 outfile.h264-i input file -an disable audio -vcodec 指定编码类型 -crf 采⽤cf的编码⽅式并设定level为23(CRF和QP的区别详见)将输⼊的handshake视频⽂件转码成dest1视频⽂件ffmpeg -i handshake.avi -c:v libx264 -preset slow -qp 37 -c:a copy dest1.mp4-i input file -c:v 和-codec:v以及-vcodec是⼀个意思,设置video的codec⽅式-preset 设置⼀些编码参数,有很多levelultrafastsuperfastveryfastfasterfastmedium – default presetslowslowerveryslowplacebo(⼀般不⽤)可以省略,默认是"medium",越慢质量越⾼-qp 设置固定的量化参数 -c:a 等同于-acodec和-codec:a 设置audio的codec⽅式是copy将⼀个⽂件夹的所有视频每隔⼀定帧数提取出图⽚for %%i in (*.mov) do (ffmpeg -i %%i -vf "select=not(mod(n\,50))" -vsync vfr "%%~ni_%%03d.bmp")for %%i in (*.mov) 遍历⽂件夹中所有mov为后缀的⽂件-i input video -vf 等同于-filter:v 具体信息参见 select选择哪些输⼊帧会输出,这边选择的是所有整除50的需要输出第0,50,100... -vsync 设置视频的同步⽅式这⾥的vfr是指传timestamp,如果两帧相同的timestamp需要丢掉最后"%%~ni_%%03d.bmp"是指输出的bmp的名字是输⼊的video的名字后⾯加上001 002 003等从⼀个input raw 视频中抽取出每⼀帧ffmpeg -f rawvideo -framerate 25 -s 1280x720 -pixel_format yuv420p -i in.yuv -c copy -f segment -segment_time 0.01 frames%d.yuv-f 指定输⼊的format为rawvideo -framerate设置帧率 -s 设置输⼊视频的分辨率 -pixel_format设置输⼊视频的格式 -i 输⼊的raw视频 -c 设置输⼊到输出的codec⽅式,这⾥为copy,不需要编解码 -f 指定输出格式,把输⼊的video分成好多个⼩段,只要后⾯设置的segment_time(0.01)⽐⼀帧的时间短(这⾥是1/25=0.04),就会把⼀帧分成⼀段,然后存⼊到yuv中利⽤ffmpeg计算ssim/psnrffmpeg -s 1920x1080 -i F1.yuv -s 1920x1080 -i F2.yuv -lavfi"ssim="stats_file=stats_ssim.log";[0:v][1:v]"psnr="stats_psnr.log"-f null -F1.yuv为需要计算ssim的视频 F2.yuv为参考视频 -s设置分辨率 -i设置input视频ffmpeg-filters.html-lavfi是跟-filter_complex⼀个意思,设置滤波器,ffmpeg⽀持的filter有很多种类型,在下载的ffmpeg的包⾥⾯有⼀个叫做ffmpeg-filters.htm的⽹页就是讲的⽀持的各种filter, 详见ssim是其中⽀持的⼀个filter,在使⽤ssim的时候,要求输⼊的两个video要有相同的format resolution,⽽且帧数要⼀样每⼀帧都会算⼀个ssim的值。

ffmpeg命令参数说明

ffmpeg命令参数说明

ffmpeg命令参数说明FFmpeg是一个强大的音视频处理工具,可以实现音视频文件的格式转换、剪辑、合并、压缩等多种功能。

本文将详细介绍FFmpeg 常用的命令参数及其说明,帮助读者更好地理解和使用此工具。

1. -i 输入文件:指定待处理的音视频文件。

该参数后面接要处理的文件路径,可以是绝对路径或相对路径。

例如,-i input.mp4表示处理当前目录下的input.mp4文件。

2. -vcodec 视频编码器:指定输出视频的编码格式。

常用的视频编码格式有h264、h265、vp9等。

例如,-vcodec h264表示输出视频使用h264编码。

3. -acodec 音频编码器:指定输出音频的编码格式。

常用的音频编码格式有aac、mp3、opus等。

例如,-acodec aac表示输出音频使用aac编码。

4. -s 分辨率:指定输出视频的分辨率。

分辨率可以使用具体的像素值,也可以使用简写形式表示,如720x480或hd720等。

例如,-s 1280x720表示输出视频的分辨率为1280x720。

5. -r 帧率:指定输出视频的帧率。

帧率表示每秒钟显示的画面数量,常用的帧率有24、30、60等。

例如,-r 30表示输出视频的帧率为30帧/秒。

6. -b 码率:指定输出视频的码率。

码率表示每秒钟传输的数据量,常用的码率有500k、1M、2M等。

例如,-b 1M表示输出视频的码率为1Mbps。

7. -ss 起始时间:指定剪辑视频的起始时间。

起始时间可以使用具体的时间值,也可以使用时间偏移量表示,如00:01:30或-30表示从视频的第1分30秒开始剪辑。

例如,-ss 00:01:30表示从视频的第1分30秒开始剪辑。

8. -t 持续时间:指定剪辑视频的持续时间。

持续时间可以使用具体的时间值,也可以使用时间偏移量表示,如00:00:30或30表示剪辑30秒。

例如,-t 00:00:30表示剪辑30秒的视频。

ffmpeg常用的命令

ffmpeg常用的命令

ffmpeg常用的命令ffmpeg是一个强大的多媒体处理工具,它可以处理视频、音频和图像等多种多媒体格式。

本文将介绍一些ffmpeg常用的命令及其用法。

一、视频处理命令1. 视频格式转换ffmpeg -i input.mp4 output.avi这个命令将把input.mp4转换为output.avi的格式。

其中,input.mp4是要转换的视频文件,output.avi是转换后的视频文件。

2. 视频剪切ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:30 -c copy output.mp4这个命令将从input.mp4中剪切出从第10秒开始,时长为30秒的视频,并保存为output.mp4。

其中,-ss参数指定开始剪切的时间,-t参数指定剪切的时长,-c copy参数表示直接复制视频流,不进行重新编码。

3. 视频合并ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" output.mp4这个命令将把input1.mp4和input2.mp4两个视频文件合并为一个output.mp4。

其中,-filter_complex参数指定复杂的滤镜图,[0:v][0:a][1:v][1:a]表示两个视频文件的视频流和音频流,concat=n=2:v=1:a=1[outv][outa]表示合并后的视频流和音频流。

-map参数指定输出的视频流和音频流。

二、音频处理命令1. 音频格式转换ffmpeg -i input.mp3 output.wav这个命令将把input.mp3转换为output.wav的格式。

FFMPEG的音视频格式转换设计

FFMPEG的音视频格式转换设计

Abs t r a c t: The d e ma n d f o r a u d i o a nd v i d e o c o n v e r s i o n,wh i c h c a n b e a c h i e v e d b y u s i n g t he f r e e,o p e n s o u r c e s o t- f wa r e F FMP EG,wi d e l y e x i s t s i n o u r l i f e . Ho we v e r ,i t l a c k s o f t he e n c o d e r s H2 6 4 a n d MP 3 whi c h a r e c o mmo n l y u s e d. I t c a n b e c o mp e n s a t e d b y u s i n g e x t e r n a l f u n c t i o n l i b r a r y. I n o r d e r t o s o l v e t he pr o b l e m ,f i r s t ,c o mp i l e o f FF MPEG i s n e c e s s a y ;b r e s i d e s,b y a d d i n g l i b x 26 4 a n d l i b mp 3 1 a me d u r i n g t h e i ns t a l l a t i o n a n d c o mp i l e,a v i de o
丁峰 , 刁鸣
哈 尔滨工程大学 信 息与通信 工程 学院,黑龙江 哈 尔滨 1 5 0 0 0 1

要: 视频格式转换的需求普遍存在 , 通过 F F MP E G这个开源免费的软件可 以很好地实现, 但是这个软件 中缺少 H 2 6 4和

ffmpeg视频格式转换代码

ffmpeg视频格式转换代码
pCodecDec=avcodec_find_decoder(pCodecCtxDec->codec_id);
if(pCodecDec==NULL)
return ; // Codec not found
// Inform the codec that we can handle truncated bitstreams -- i.e.,
// bitstreams where frame boundaries can fall in the middle of packets
//if(pCodecDec->capabilities & CODEC_CAP_TRUNCATED)
// pCodecCtxDec->flags|=CODEC_FLAG_TRUNCATED;
if(!strcmp(pFormatCtxEnc->oformat->name, "mp4") || !strcmp(pFormatCtxEnc->oformat->name, "mov") || !strcmp(pFormatCtxEnc->oformat->name, "3gp"))
pCodecCtxEnc->flags |= CODEC_FLAG_GLOBAL_HEADER;
{
// Is this a packet from the video stream?
if(packet.stream_index==videoStream)
{
// Decode video frame
avcodec_decode_video(pCodecCtxDec, pFrameDec, &frameFinished, packet.data, packet.size);

Ffmpeg常用转码命令

Ffmpeg常用转码命令

Ffmpeg常⽤转码命令H264视频转ts视频流ffmpeg -i test.h264 -vcodec copy -f mpegts test.tsH264视频转mp4ffmpeg -i test.h264 -vcodec copy -f mp4 test.mp4ts视频转mp4ffmpeg -i test.ts -acodec copy -vcodec copy -f mp4 test.mp4mp4视频转flvffmpeg -i test.mp4 -acodec copy -vcodec copy -f flv test.flv转换⽂件为3GP格式ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 -acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp转换⽂件为3GP格式 v2ffmpeg -y -i test.wmv -ac 1 -acodec libamr_nb -ar 8000 -ab 12200 -s 176x144 -b 128 -r 15 test.3gp使⽤ ffmpeg 编码得到⾼质量的视频ffmpeg.exe -i "D:\Video\Fearless\Fearless.avi" -target film-dvd -s 720x352 -padtop 64 -padbottom 64 -maxrate 7350000 -b 3700000 -sc_threshold 1000000000 -trellis -cgop -g 12 -bf 2 -qblur 0.3 -qcomp 0.7 -me full -dc 10 -mbd 2 -aspect 16:9 -pass 2 -passlogfile"D:\Video\ffmpegencode" -an -f mpeg2video "D:\Fearless.m2v"转换指定格式⽂件到FLV格式ffmpeg.exe -i test.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flvffmpeg.exe -i test.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv转码解密的VOBffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800 -g 300 -bf 2 -acodec mp3 -ab 128 snatch.avi(上⾯的命令⾏将vob的⽂件转化成avi⽂件,mpeg4的视频和mp3的⾳频。

ffmpeg视频格式转换,带进度条

ffmpeg视频格式转换,带进度条

private void Form1_Load(object sender, EventArgs e){label1.Text = DateTime.Now.ToString();System.Timers.Timer t = new System.Timers.Timer(1000);//实例化Timer类,设置间隔时间为毫秒就是秒;t.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件;t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;Thread tt = new Thread(new ThreadStart(video));tt.Start();// Bind();}public void theout(object source, System.Timers.ElapsedEventArgs e){this.Invoke(new TextOption(f));//invok 委托实现跨线程的调用}delegate void TextOption();//定义一个委托void f(){label1.Text = DateTime.Now.ToString();//调用内容,并用lable1显示出来。

}private void video(){string path = System.AppDomain.CurrentDomain.BaseDirectory;string _path = @"E:\freehost\tongyingjufu3g\web\_temp\";string _path2 = @"E:\freehost\tongyingjufu3g\web\_temp2\";string where = " -vcodec libx264 -acodec aac ";bel4.Text = "第次刷新";try{// dt = info_list("SELECT top 1 guid,title,(select mobile from Users where uid=db_erid) as mobile,name,files,addtime,zhuanhuan FROM [db_geci] where files is not null and zhuanhuan=0");dt = info_list("SELECT top 1 guid,title,name,files,addtime,zhuanhuan FROM [db_geci] where files is not null and zhuanhuan=0");if (dt.Rows.Count > 0){string guid = dt.Rows[0]["guid"].ToString();string files = dt.Rows[0]["files"].ToString();if (File.Exists(_path + files)){string _guid = System.Guid.NewGuid().ToString("N");Process p = new Process();//建立外部调用线程Sql("UPDATE [db_geci] SET [zhuanhuan] =1 WHERE guid=" + guid);p.StartInfo.FileName = path + @"ffmpeg.exe";//要调用外部程序的绝对路径// p.StartInfo.Arguments = "-y -i " + gvFilepath + " -vcodec h263 -f 3gp " +@"E:\Fromffmpeg\WindowsFfmpeg\WindowsFfmpeg\bin\Debug\test.mp4"; ;//参数(这里就是FFMPEG的参数了)p.StartInfo.Arguments = " -i " + _path + files + where + _path + _guid + ".mp4 "; ;//参数(这里就是FFMPEG的参数了)eShellExecute = false;//不使用操作系统外壳程序启动线程(一定为FALSE,详细的请看MSDN)p.StartInfo.RedirectStandardError = true;//把外部程序错误输出写到StandardError流中(这个一定要注意,FFMPEG的所有输出信息,都为错误输出流,用StandardOutput是捕获不到任何消息的...这是我耗费了个多月得出来的经验...mencoder就是用standardOutput来捕获的)p.StartInfo.CreateNoWindow = true;//不创建进程窗口p.ErrorDataReceived += new DataReceivedEventHandler(Output);p.Start();//启动线程p.BeginErrorReadLine();//开始异步读取p.WaitForExit();//等待完成// p.StandardError.ReadToEnd();//开始同步读取p.Close();//关闭进程p.Dispose();//释放资源Sql("UPDATE [db_geci] SET [files] = '" + _guid + ".mp4',[zhuanhuan] =2 WHERE guid=" + guid);string OrignFile = _path + files;string NewFile = _path2 + files;File.Move(OrignFile, NewFile);}else{Sql("UPDATE [db_geci] SET [files] ='NULL' WHERE guid=" + guid);}}this.progressBar1.Maximum = 0;progressBar1.Value = 0;dt = info_list("SELECT COUNT(*) AS NUM FROM [db_geci] where files is not null and zhuanhuan!=2");if (dt.Rows.Count > 0){if (!string.IsNullOrEmpty(dt.Rows[0]["NUM"].ToString())){bel5.Text = "剩余" + dt.Rows[0]["NUM"].ToString() + "项";}}Thread t = new Thread(new ThreadStart(video));Thread.Sleep(10000);t.Start();count=count+1;bel4.Text = "第" + count + "次刷新";// Bind();}catch (Exception ex){string str = "";string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";if (ex != null){str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",ex.GetType().Name, ex.Message, ex.StackTrace);}else{str = string.Format("应用程序线程错误:{0}", ex);}this.richTextBox1.Text += str;}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用ffmpeg转换视频格式deanraccoon@
2011年5月9日
目录
1实用fffmpeg命令
转自
/blog/19-ffmpeg-commands-for-all-needs
转自
/spip.php?article36
1.1查看视频文件信息
ffmpeg-i video.avi
1.2N个图片转化视频
ffmpeg-f image2-i image%d.jpg video.mpg
这个命令把当前文件夹下所有图片转成视频文件
1.3视频转化图片
ffmpeg video.mpg image%d.jpg
图片格式包括:PGM,PPM,PAM,PGMYUV,JPEG,GIF,PNG,TIFF,SGI
1.4视频转为iphone可播放的格式
ffmpeg source_video.avi input-acodec aac-ab128kb-vcodec mpeg4-b1200kb-mbd2-flags
+4mv+trell-aic2-cmp2-subcmp2-s320x180-title X final_video.mp4
参数含义:
•源文件:source video.avi
•音频编码:aac
•音频的比特率:128kb/s
•视频编码:mpeg4
•视频比特率:1200kb/s
•视频大小:320px par180px
•结果文件:final video.mp4
1.5视频转换成psp格式
ffmpeg-i source_video.avi-b300-s320x240-vcodec xvid-ab32-ar24000-acodec aac final_video.mp4参数含义:
•源文件:source video.avi
•音频编码:aac
•音频比特率:32kb/s
•视频编码:xvid
•视频比特率:1200kb/s
•视频大小:320px par180px
•结果文件:final video.mp4
1.6提取视频音轨
ffmpeg source_video.avi-vn-ar44100-ac2-ab192-f mp3sound.mp3
参数含义:
•源文件:source video.avi
•音频比特率:192kb/s
•输出格式:mp3
•结果文件:sound.mp3
1.7wav转成mp3
ffmpeg-i son_origine.avi-vn-ar44100-ac2-ab192-f mp3son_final.mp3
1.8avi转mpg
ffmpeg video_origine.avi video_finale.mpg
1.9mpg转avi
ffmpeg video_origine.mpg video_finale.avi
1.10avi转gif(无压缩)
ffmpeg video_origine.avi gif_anime.gif
1.11混合视频和音频
ffmpeg-i son.wav-i video_origine.avi video_finale.mpg
1.12avi转flv
ffmpeg video_origine.avi-ab56-ar44100-b200-r15-s320x240-f flv video_finale.flv
1.13avi转dv
ffmpeg video_origine.avi-s pal-r pal-aspect4:3-ar48000-ac2video_finale.dv
或者:
ffmpeg-i video_origine.avi-target pal-dv video_finale.dv
1.14avi转dvd players
ffmpeg-i source_video.avi-target pal-dvd-ps2000000000-aspect16:9finale_video.mpeg
参数解释:
•target pal-dvd:输出文件格式
•ps2000000000:限制输出文件的占用最大空间(单位bits,这里是表示2G比特,换算成字节是250M字节)
•aspect16:9:宽高比16:9表示是宽屏幕,如果是普通屏幕,是4:3
1.15avi转divx
ffmpeg video_origine.avi-s320x240-vcodec msmpeg4v2video_finale.avi
1.16ogm转mpeg dvd
ffmpep film_sortie_cinelerra.ogm-s720x576-vcodec mpeg2video-acodec mp3film_termin.mpg 1.17avi转SVCD mpeg2
ffmpeg-i video_origine.avi-target ntsc-svcd video_finale.mpg
1.18avi转VCD mpeg2
NTSC制式(日本,美国)
ffmpeg-i video_origine.avi-target ntsc-vcd video_finale.mpg
PAL制式(欧洲,中国)
ffmpeg-i video_origine.avi-target pal-vcd video_finale.mpg。

相关文档
最新文档