版权声明:可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2007/09/16/ffmpeg/以及本声明。
昨天因为要将相机拍摄的视频刻录成VCD,于是上网找了好多MPEG的相关工具,如切割、合并、格式转换等,大部分都是共享软件并且还有功能限制。后来实在没办法了,想到了ffmpeg这个工具,抱着试试看的心情看了看帮助,才发现原来真正的工具在这里!支持绝大多数常见的视频音频格式,可以在各种格式之间随意转换,支持视频切割。所以说,真正好用的东西其实都是免费的。
ffmpeg的命令行格式如下:
ffmpeg [输入参数] -i 输入文件 [输出参数] 输出文件
这里仅举几个我用到的例子。
截取1分30秒到1分50秒的视频,格式不变。-ss指定起始时间,-t指定截取长度,-vcodec 和-acodec指定为copy表明不对源视频音频流做任何处理直接复制。
ffmpeg -ss 0:1:30 -t 0:0:20 -i input.mpg -vcodec copy -acodec copy output.mpg
mpg转换成vcd所用的视频格式。-ac 2表示将单声道音频转换成立体声。
ffmpeg -i input.mpg -target pal-vcd -ac 2 output.mpg
VCD要求视频大小为 352×240,而我们的视频大小为320×240,需要在两边加上黑边凑足352像素:
ffmpeg -i input.mpg -padleft 16 -padright 16 -padcolor 000000 -target pal-vcd -ac 2 output.mpg
将字幕合并到视频中,可以利用AviSynth,首先制作好srt格式字幕,然后利用DIO’s RelProducer GUI加载视频和字幕生成avs文件,再利用ffmpeg转换此avs文件:
ffmpeg -i input.avs output.mpg
合并视频流和音频流,可以先利用ffmpeg将mp3转换成wav:
ffmpeg -i input.mp3 output.wav
然后再利用VirtualDub合并之。
* 录音(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 10 -i :0.0+0+0 wheer.avi
其中-f指定x11grab表示屏幕录像(*编译时必须加上–enable-x11grab选项*),-s设定尺寸,写成缩写或1024×768格式均可,-f设定fps,-i中的:0.0表示你的x11屏幕,+0,0表示偏移,如果你想录制某个小窗口,可以用xwininfo -frame来找到具体坐标。
另外还有一堆参数可设,如比特率-b 200000,-vcodec为视频编码,还可加上-f oss -i /dev/dsp同时录音,用aumix将录音源调成麦克风就可以配音了,声音太小了用-vol改~~
* mp3->amr, amr->mp3
ffmpeg -i wheer.mp3 -ab 122000 wheer.amr
ffmpeg -i wheer.amr wheer.mp3
* 从视频中抓取音频
ffmpeg -i movie.rmvb -ss 40 -vn wheer.mp3
ffmpeg -i movie.rmvb -ss 40 -vn -ab 12200 -ar 8000 -ac 1 wheer.amr
均表示从第40s开始抓取,-vn表示不要视频
* 截图或gif动画
ffmpeg -i wheer.avi -t 0.001 -f image2 cap.jpg
ffmpeg -i wheer.avi -ss 10 -t 5 -pix_fmt rgb24 -loop_output 0 -f gif cap.gif
其中第二行表示从第10秒开始截5秒视频为gif动画,并将gif设为无限次重复播放
* 转换为3gp格式(手机上常用)
ffmpeg -i wheer.avi -s 176×144 -b 20000 -acodec amr -ab 12200 out.3gp
新版的ffmpeg和老版的用法还不太一样,如新版就没有-vd(video device)选项,屏幕录制就只能用-f x11grab,另外比特率单位在新版是b/s,在老版是kb/s,等等。。。
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
ffmpeg is a multiplatform, open-source library for video and audio files. I have compiled 19 useful and amazing commands covering almost all needs: video conversion, sound extraction, encoding file for iPod or PSP, and more.
Getting infos from a video file
ffmpeg -i video.avi
Turn X images to a video sequence
ffmpeg -f image2 -i image%d.jpg video.mpg
This command will transform all the images from the current directory (named image1.jpg, image2.jpg, etc…) to a video file named video.mpg.
Turn a video to X images
ffmpeg -i video.mpg image%d.jpg
This command will generate the files named image1.jpg, image2.jpg, …
The following image formats are also availables : PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF, SGI.
Encode a video sequence for the iPpod/iPhone
ffmpeg -i source_video.avi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320×180 -title X final_video.mp4
Explanations :
* Source : source_video.avi
* Audio codec : aac
* Audio bitrate : 128kb/s
* Video codec : mpeg4
* Video bitrate : 1200kb/s
* Video size : 320px par 180px
* Generated video : final_video.mp4
Encode video for the PSP
ffmpeg -i source_video.avi -b 300 -s 320×240 -vcodec xvid -ab 32 -ar 24000 -acodec aac final_video.mp4
Explanations :
* Source : source_video.avi
* Audio codec : aac
* Audio bitrate : 32kb/s
* Video codec : xvid
* Video bitrate : 1200kb/s
* Video size : 320px par 180px
* Generated video : final_video.mp4
Extracting sound from a video, and save it as Mp3
ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3
Explanations :
* Source video : source_video.avi
* Audio bitrate : 192kb/s
* output format : mp3
* Generated sound : sound.mp3
Convert a wav file to Mp3
ffmpeg -i son_origine.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp3
Convert .avi video to .mpg
ffmpeg -i video_origine.avi video_finale.mpg
Convert .mpg to .avi
ffmpeg -i video_origine.mpg video_finale.avi
Convert .avi to animated gif(uncompressed)
ffmpeg -i video_origine.avi gif_anime.gif
Mix a video with a sound file
ffmpeg -i son.wav -i video_origine.avi video_finale.mpg
Convert .avi to .flv
ffmpeg -i video_origine.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320×240 -f flv video_finale.flv
Convert .avi to dv
ffmpeg -i video_origine.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 video_finale.dv
Or:
ffmpeg -i video_origine.avi -target pal-dv video_finale.dv
Convert .avi to mpeg for dvd players
ffmpeg -i source_video.avi -target pal-dvd -ps 2000000000 -aspect 16:9 finale_video.mpeg
Explanations :
* target pal-dvd : Output format
* ps 2000000000 maximum size for the output file, in bits (here, 2 Gb)
* aspect 16:9 : Widescreen
Compress .avi to divx
ffmpeg -i video_origine.avi -s 320×240 -vcodec msmpeg4v2 video_finale.avi
Compress Ogg Theora to Mpeg dvd
ffmpeg -i film_sortie_cinelerra.ogm -s 720×576 -vcodec mpeg2video -acodec mp3 film_terminée.mpg
Compress .avi to SVCD mpeg2
NTSC format:
ffmpeg -i video_origine.avi -target ntsc-svcd video_finale.mpg
PAL format:
ffmpeg -i video_origine.avi -target pal-svcd video_finale.mpg
Compress .avi to VCD mpeg2
NTSC format:
ffmpeg -i video_origine.avi -target ntsc-vcd video_finale.mpg
PAL format:
ffmpeg -i video_origine.avi -target pal-vcd video_finale.mpg
Multi-pass encoding with ffmpeg
ffmpeg -i fichierentree -pass 2 -passlogfile ffmpeg2pass fichiersortie-2
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.