我是靠谱客的博主 粗犷嚓茶,最近开发中收集的这篇文章主要介绍ffmpeg在linux安装实现视频转换,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.2 ffmpeg安装

1.2.1安装环境

Ø         操作系统:Linux

Ø         安装程序:ffmpeg  版本为:ffmpeg-0.6

1.2.2音频、视频包安装

Ø         gpl

Ø         libmp3lame

实现了ffmpeg中的mp3lame功能,可以把音频流也转换出来

Ø         libvorbis

MP3是有损压缩格式,因此压缩后的数据与标准的CD音乐相比是有损失的。VORBIS也是有损压缩,但通过使用更加先进的声学模型去减少损失,因此,同 样位速率(Bit Rate)编码的OGGvorbis与MP3相比听起来更好一些。

libvorbis是开源的音频音乐编码解码函数库。libvorbis在处理畸形格式的OGG文件时存在漏洞,远程攻击者可能利用此漏洞控制用户系统。如果特制的OGG文件包含有codebook维度为0的话,打开该文件就会导致使用libvorbis库的应用程序崩溃、出现死循环或堆溢出。如果使用libvorbis库的应用程序打开了特制的OGG文件的话,在处理residue分区值和计算quantvals及quantlist所需空间时可能会出现整数溢出,最终会导致堆溢出。

Ø         libxvid 需要安装xvidcore-1.1.3.tar.gz

下载地址:http://www.filewatcher.com/m/xvidcore-1.1.3.tar.gz.739591.0.0.html

XviD是目前世界上最常用的视频编码解码器 (codec),而且是第一个真正开放源代码的,通GPL协议发布。在很多次的codec比较中,XviD的表现令人惊奇的好,总体来说是目前最优秀、最全能的codec。

Ø         libfaac

是在MP3基础上开发出来的,所以两者的编码系统有一些相同之处。但是对比一下两者的编码流程图,你会发现AAC的编码工序更为复杂。

Ø         libfaad

faac也是一种音频流编码,当在转换的时候如果不支持faac就会使用faad音频编码。

Ø         libfaadbin

Ø         pthreads

linux 上的线程机制

Ø         libx264 安装yasm-0.8.0.tar.gz x264需要用yasm来编译 并且x264版本为:x264-snapshot-20100904-2245.tar

x264下载地址:http://ftp.nc.debian.org/pub/videolan/x264/snapshots/

yasm下载地址:http://www.tortall.net/projects/yasm/wiki/Download

Yasm是一个完全重写的NASM汇编。目前,它支持x86和AMD64指令集,接受NASM和气体汇编语法,产出二进制,ELF32 , ELF64 , COFF , Mach - O的( 32和64 ) , RDOFF2 ,的Win32和Win64对象的格式,并生成STABS调试信息的来源,DWARF 2 ,CodeView 8格式。

x264是一种免费的、具有更优秀算法的H.264 /MPEG-4 AVC视频压缩编码格式。它同xvid一样都是开源项目,但x264是采用H.264标准的,而xvid是采用MPEG-4早期标准的。由于H.264是 2003年正式发布的最新的视频编码标准,因此,在通常情况下,x264压缩出的视频文件在相同质量下要比xvid压缩出的文件要小,或者也可以说,在相同体积下比xvid压缩出的文件质量要好。它符合GPL许可证

 

Ø         libopencore-amrnb 安装opencore-amr-0.1.2.tar.gz

窄带语音编码源程序 linux中使用-amr

Ø         libopencore-amrwb 安装opencore-amr-0.1.2.tar.gz

宽带语音编码源程序 linux中使用-amr

下载地址:http://sourceforge.net/projects/opencore-amr/

Ø         small

Ø         bzlib

Ø         libdirac

一个开源的视频编码工具

Ø         zlib

Ø         libspeex 安装speex-1.2rc1.tar.gz

下载地址:http://www.filewatcher.com/m/speex-1.2rc1.tar.gz.1061882.0.0.html

Speex编解码器的libspeex包囊括了所有的语音编码和解码函数。在Linux系统中连接时,必须在编译器命令行中加入-lspeex –lm。需要知道的是,虽然libspeex的函数调用是可重入的,但不是线程安全的,所以在多线程调用时,如果使用共享资源需要进行互斥保护。

Ø         libschroedinger schroedinger-1.0.6.tar.gz 需要安装liboil这个软件版本是1.6以上

libschroedinger下载地址:http://diracvideo.org/download/schroedinger/

liboil是一种可用于多种CPU优化的简单的函数库。

Liboil下载地址:http://liboil.freedesktop.org/download/

1.2.3 视频转换命令

ffmpeg -i /home/fengbo/output/test4.avi -ab 56 -ar 22050 -qscale 8 -r 15 -s 400x300 /home/fengbo/output/test4.swf

1.2.4转换参数

1.2.4.1通用选项

Ø         -L license

Ø         -h 帮助

Ø         -fromats 显示可用的格式,编解码的,协议的...

Ø         -f fmt 强迫采用格式fmt

Ø         -I filename 输入文件

Ø         -y 覆盖输出文件

Ø         -t duration 设置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持

Ø         -ss position 搜索到指定的时间 [-]hh:mm:ss[.xxx]的格式也支持

Ø         -title string 设置标题

Ø         -author string 设置作者

Ø         -copyright string 设置版权

Ø         -comment string 设置评论

Ø         -target type 设置目标文件类型(vcd,svcd,dvd) 所有的格式选项(比特率,编解码以及缓冲区大小)自动设置,只需要输入如下的就可以了:ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg

Ø         -hq 激活高质量设置

Ø         -itsoffset offset 设置以秒为基准的时间偏移,该选项影响所有后面的输入文件。该偏移被加到输入文件的时戳,定义一个正偏移意味着相应的流被延迟了 offset秒。 [-]hh:mm:ss[.xxx]的格式也支持

 

1.2.4.2视频选项

Ø         -b bitrate 设置比特率,缺省200kb/s

Ø         -r fps 设置帧频 缺省25

Ø         -s size 设置帧大小 格式为WXH 缺省160X128.下面的简写也可以直接使用:Sqcif 128X96 qcif 176X144 cif 252X288 4cif 704X576

Ø         -aspect aspect 设置横纵比 4:3 16:9  1.3333 1.7777

Ø         -croptop size 设置顶部切除带大小 像素单位

Ø         -cropbottom size –cropleft size –cropright size

Ø         -padtop size 设置顶部补齐的大小 像素单位

Ø         -padbottom size padleft size padright size padcolor color 设置补齐条颜色(hex,616进制的数,红:绿:兰排列,比如 000000代表黑色)

Ø         -vn 不做视频记录

Ø         -bt tolerance 设置视频码率容忍度kbit/s

Ø         -maxrate bitrate设置最大视频码率容忍度

Ø         -minrate bitreate 设置最小视频码率容忍度

Ø         -bufsize size 设置码率控制缓冲区大小

Ø         -vcodec codec 强制使用codec编解码方式。如果用copy表示原始编解码数据必须被拷贝。

Ø         -sameq 使用同样视频质量作为源(VBR

Ø         -pass n 选择处理遍数(1或者2)。两遍编码非常有用。第一遍生成统计信息,第二遍生成精确的请求的码率

Ø         -passlogfile file 选择两遍的纪录文件名为file

1.2.4.3高级视频选项

Ø         -g gop_size 设置图像组大小

Ø         -intra 仅适用帧内编码

Ø         -qscale q 使用固定的视频量化标度(VBR)

Ø         -qmin q 最小视频量化标度(VBR)

Ø         -qmax q 最大视频量化标度(VBR)

Ø         -qdiff q 量化标度间最大偏差 (VBR)

Ø         -qblur blur 视频量化标度柔化(VBR)

Ø         -qcomp compression 视频量化标度压缩(VBR)

Ø         -rc_init_cplx complexity 一遍编码的初始复杂度

Ø         -b_qfactor factor pb帧间的qp因子

Ø         -i_qfactor factor pi帧间的qp因子

Ø         -b_qoffset offset pb帧间的qp偏差

Ø         -i_qoffset offset pi帧间的qp偏差

Ø         -rc_eq equation 设置码率控制方程 默认tex^qComp

Ø         -rc_override override 特定间隔下的速率控制重载

Ø         -me method 设置运动估计的方法 可用方法有 zero phods log x1 epzs(缺省) full

Ø         -dct_algo algo 设置dct的算法 可用的有 0 FF_DCT_AUTO 缺省的DCT 1 FF_DCT_FASTINT 2 FF_DCT_INT 3 FF_DCT_MMX 4 FF_DCT_MLIB 5 FF_DCT_ALTIVEC

Ø         -idct_algo algo 设置idct算法。可用的有 0 FF_IDCT_AUTO 缺省的IDCT 1 FF_IDCT_INT 2 FF_IDCT_SIMPLE 3 FF_IDCT_SIMPLEMMX 4 FF_IDCT_LIBMPEG2MMX 5 FF_IDCT_PS2 6 FF_IDCT_MLIB 7 FF_IDCT_ARM 8 FF_IDCT_ALTIVEC 9 FF_IDCT_SH4 10 FF_IDCT_SIMPLEARM

Ø         -er n 设置错误残留为n 1 FF_ER_CAREFULL 缺省 2 FF_ER_COMPLIANT 3 FF_ER_AGGRESSIVE 4 FF_ER_VERY_AGGRESSIVE

Ø         -ec bit_mask 设置错误掩蔽为bit_mask,该值为如下值的位掩码 1 FF_EC_GUESS_MVS (default=enabled) 2 FF_EC_DEBLOCK (default=enabled)

Ø         -bf frames 使用frames B 帧,支持mpeg1,mpeg2,mpeg4

Ø         -mbd mode 宏块决策 0 FF_MB_DECISION_SIMPLE 使用mb_cmp 1 FF_MB_DECISION_BITS 2 FF_MB_DECISION_RD

Ø         -4mv 使用4个运动矢量 仅用于mpeg4

Ø         -part 使用数据划分 仅用于mpeg4

Ø         -bug param 绕过没有被自动监测到编码器的问题

Ø         -strict strictness 跟标准的严格性

Ø         -aic 使能高级帧内编码 h263+

Ø         -umv 使能无限运动矢量 h263+

Ø         -deinterlace 不采用交织方法

Ø         -interlace 强迫交织法编码仅对mpeg2mpeg4有效。当你的输入是交织的并且你想要保持交织以最小图像损失的时候采用该选项。可选的方法是不交织,但是损失更大

Ø         -psnr 计算压缩帧的psnr

Ø         -vstats 输出视频编码统计到vstats_hhmmss.log

Ø         -vhook module 插入视频处理模块 module 包括了模块名和参数,用空格分开

1.2.4.4音频选项

Ø         -ab bitrate 设置音频码率

Ø         -ar freq 设置音频采样率

Ø         -ac channels 设置通道 缺省为1

Ø         -an 不使能音频纪录

Ø         -acodec codec 使用codec编解码

1.2.4.5音频/视频捕获选项

Ø         -vd device 设置视频捕获设备。比如/dev/video0

Ø         -vc channel 设置视频捕获通道 DV1394专用

Ø         -tvstd standard 设置电视标准 NTSC PAL(SECAM)

Ø         -dv1394 设置DV1394捕获

Ø         -av device 设置音频设备 比如/dev/dsp

1.2.4.6高级选项

Ø         -map file:stream 设置输入流映射

Ø         -debug 打印特定调试信息

Ø         -benchmark 为基准测试加入时间

Ø         -hex 倾倒每一个输入包

Ø         -bitexact 仅使用位精确算法 用于编解码测试

Ø         -ps size 设置包大小,以bits为单位

Ø         -re 以本地帧频读数据,主要用于模拟捕获设备

-loop 循环输入流(只工作于图像流,用于ffserver测试)

 

安装程序代码

./configure --prefix=/usr --enable-gpl --enable-shared --enable-libmp3lame --enable-libvorbis --enable-libxvid --enable-nonfree --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-pthreads --disable-ffserver --disable-ffplay --enable-libx264 --enable-libopencore-amrnb --enable-version3 --enable-libopencore-amrwb --enable-small --enable-bzlib --enable-libdirac --enable-zlib --disable-debug --enable-libspeex --enable-libvorbis

最后

以上就是粗犷嚓茶为你收集整理的ffmpeg在linux安装实现视频转换的全部内容,希望文章能够帮你解决ffmpeg在linux安装实现视频转换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部