重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
格式转换 (将file.avi 转换成output.flv)
从策划到设计制作,每一步都追求做到细腻,制作可持续发展的企业网站。为客户提供网站设计制作、成都网站设计、网站策划、网页设计、主机域名、网站空间、网络营销、VI设计、 网站改版、漏洞修补等服务。为客户提供更好的一站式互联网解决方案,以客户的口碑塑造优易品牌,携手广大客户,共同发展进步。
C代码
#ffmpeg -i file.avi output.flv
-i 表示输入文件
:现在有个视频video.avi,有个音频 audio.mp3,将其合并成output.avi
两个命令(file.avi 是中间文件,用完可删)
C代码
#ffmpeg -i video.avi -vcodec copy -an video2.avi
#ffmpeg -i video2.avi -i audio.mp3 -vcodec copy -acodec copy output.avi
-i 表示输入文件
-vcodec copy 表示 force video codec (‘copy’ to copy stream) 这个不知怎么译 ,估计是直接copy
-acodec copy 这个说的应该是音频了 跟上面一样
-an:表示 disable audio 估计是audio no 之类的缩写,表示去掉video.avi 原有的音频
Linux下的视频转换:mencoder 制作适合在智能手机和PDA上观看的mpeg4视频。 Linux上有一个很强大的视频音频转换软件,就是Mplayer自带的mencoder (MPlayer's Movie Encoder)。mencoder就象是一台全手动的照相机,可调整的选项非常多,不过这儿只是把最常见的情况说一下。 转换avi文件,并把字幕内嵌到视频中。首先假设一下下列的条件: 文件名:video.avi 字幕文件名:video.srt 目标文件:new.avi 目标文件格式:mpeg4 目标文件视频码率:200 目标文件音频码率:64 目标文件分辨率: 320:240 制作内嵌字幕所需的字体:simsun.ttf (上面各项都可以根据实际情况进行调整) 转换命令如下: mencoder-oac mp3lame -lameopts vbr=3:br=64 -ovc lavc -lavcoptsvcodec=mpeg4:mbd=1:vbitrate=200 -sub video.srt -o new.avi -fontsimsun.ttf video.avi -subcp cp936 -subfont-text-scale 4 -vfscale=320:240 各选项的含义: -oac 编码文件的音频部分。这儿是用lame将音频encode成mp3,即mp3lame。其他可用的选项可以调用mencoder的man page查看。 -lameopts 顾名思义,即lame选项,这儿只需定义一下码率就可以了。 vbr 设定音频码率的方法,格式为vbr=0-4 0 cbr average bitrate 1 mt 2 rh constant bitrate Also forces CBR mode encoding on subsequent ABR presets modes. 3 abr 4 mtrh 在这儿用的是3,abr。 br 就是设定我们所需要的码率值,格式为br=0-1024,只能在vbr为0和3的情况下才能使用该选项。 -ovc 编码文件的视频部分。主要有以下几个选项 -ovc copy 不进行编码,只是复制视频流 -ovc divx4 编码成DivX4/DivX5 -ovc raw 编码成任意不压缩的格式(用‘-vf format’设定具体的格式) -ovc lavc 使用libavcodec进行编码 -lavcopts 就是libavcodec的选项。 vcodec=使用指定的视频编码,下面列一下几个主要的值 h264 H.264 h263 H.263 h263p H.263+ mpeg4 MPEG-4 (DivX 4/5) msmpeg4 DivX 3 msmpeg4v2 MS MPEG4v2 wmv1 Windows Media Video, version 1 (又称 WMV7) wmv2 Windows Media Video, version 2 (又称 WMV8) rv10 旧的RealVideo格式 mpeg1video MPEG-1 video mpeg2video MPEG-2 video mbd 决定视频宏块的算法,这儿只需要mbd=1即可。其余的可以查看man page。 vbitrate 设定视频的码率(默认为800)。 -sub 设定字幕文件 -o 目标视频文件 -font 制作内嵌字幕所需字体的路径 -subcp 字幕的编码,简体中文就是cp936 -subfont-text-scale 字幕字体的大小 -vf scale 视频的分辨率 如果不需要将字幕内嵌入视频文件,只需要去掉-sub、-font、-subcp、-subfont-text-scale这几个选项。将rmvb转换成mpeg4也是如此。 ◆Linux下的视频转换:ffmpeg 格式:ffmpeg [[输入文件选项]- i 输入文件名] {[输入文件选项] 输出文件名} 主要选项: -L 显示ffmpeg的版权说明 -h 显示帮助 -version 显示版本 -formats 显示支持的文件格式,编码和协议 -f 格式名 强制使用格式 -img 文件格式名 强制使用片格式 -i 文件名 待转换文件名字 -y 覆盖同名输出文件 -t 时间 设置影片时间长度 -fs 最大尺寸 设置文件的最大尺寸 -ss 时间点 设置开始转换的时间点 -title 文字 设置标题 -author 文字 设置作者 -copyright 文字 设置版权声明 -comment 文字 设置备注 视频选项: -b 比特率 设置文件比特率 (单位是kbit/s) -r 速度 桢速度 (Hz value) -s 大小 设置大小,宽乘高 -newvideo 在现在的视频流后面加入信的视频流 Audio options: -aframes 数字 设置转换多少桢(frame)的音频 -ab bitrate 设置音乐的比特率(单位:kbit/s) -aq 质量 这只音频质量 (指定编码) -ar 采样率 设置音频采样率 (单位:Hz) -ac 声道数字 设置声道数 -an 取消音频 -acodec 编码 强制音频 编码 ('copy' to copy stream) -vol volume 改变音量 (256为普通) -newaudio 追加音乐
基本选项: -formats 输出所有可用格式 -f fmt 指定格式(音频或视频格式) -i filename 指定输入文件名,在linux下当然也能指定:0.0(屏幕录制)或摄像头 -y 覆盖已有文件 -t duration 记录时长为t -fs limit_size 设置文件大小上限 -ss time_off 从指定的时间(s)开始, [-]hh:mm:ss[.xxx]的格式也支持 -itsoffset time_off 设置时间偏移(s),该选项影响所有后面的输入文件。该偏移被加到输入文件的时戳,定义一个正偏移意味着相应的流被延迟了 offset秒。 [-]hh:mm:ss[.xxx]的格式也支持 -title string 标题 -timestamp time 时间戳 -author string 作者 -copyright string 版权信息 -comment string 评论 -album string album名 -v verbose 与log相关的 -target type 设置目标文件类型("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", "ntsc-svcd", ...) -dframes number 设置要记录的帧数 视频选项: -b 指定比特率(bits/s),似乎ffmpeg是自动VBR的,指定了就大概是平均比特率 -vb 指定视频比特率(bits/s) -vframes number 设置转换多少桢(frame)的视频 -r rate 桢速率(fps) -s size 分辨率 -aspect aspect 设置视频长宽比(4:3, 16:9 or 1.3333, 1.7777) -croptop size 设置顶部切除尺寸(in pixels) -cropbottom size 设置底部切除尺寸(in pixels) -cropleft size 设置左切除尺寸 (in pixels) -cropright size 设置右切除尺寸 (in pixels) -padtop size 设置顶部补齐尺寸(in pixels) -padbottom size 底补齐(in pixels) -padleft size 左补齐(in pixels) -padright size 右补齐(in pixels) -padcolor color 补齐带颜色(000000-FFFFFF) -vn 取消视频 -vcodec codec 强制使用codec编解码方式('copy' to copy stream) -sameq 使用同样视频质量作为源(VBR) -pass n 选择处理遍数(1或者2)。两遍编码非常有用。第一遍生成统计信息,第二遍生成精确的请求的码率 -passlogfile file 选择两遍的纪录文件名为file -newvideo 在现在的视频流后面加入新的视频流 高级视频选项 -pix_fmt format set pixel format, 'list' as argument shows all the pixel formats supported -intra 仅适用帧内编码 -qscale q 以数值质量为基础的VBR,取值0.01-255,约小质量越好 -loop_input 设置输入流的循环数(目前只对图像有效) -loop_output 设置输出视频的循环数,比如输出gif时设为0表示无限循环 -g int 设置图像组大小 -cutoff int 设置截止频率 -qmin int 设定最小质量 -qmax int 设定最大质量 -qdiff int 量化标度间最大偏差 (VBR) -bf int 使用frames B 帧,支持mpeg1,mpeg2,mpeg4 音频选项: -ab 设置比特率(单位:bit/s,也许老版是kb/s) -aframes number 设置转换多少桢(frame)的音频 -aq quality 设置音频质量 (指定编码) -ar rate 设置音频采样率 (单位:Hz) -ac channels 设置声道数 -an 取消音频 -acodec codec 指定音频编码('copy' to copy stream) -vol volume 设置录制音量大小(默认为256) -newaudio 在现在的音频流后面加入新的音频流 字幕选项: -sn 取消字幕 -scodec codec 设置字幕编码('copy' to copy stream) -newsubtitle 在当前字幕后新增 -slang code 设置字幕所用的ISO 639编码(3个字母) Audio/Video 抓取选项: -vc channel 设置视频捕获通道(只对DV1394) -tvstd standard 设置电视标准 NTSC PAL(SECAM)