yum安装及源代码安装ffmpeg视频截图软件[附java调用方法]

一、yum安装

确保网卡IPDNS 可以畅通访问外网

安装环境:Redhat6.4

如果可以安装 GCC基本的软件,则不必更改yum源(如果有无用的repos,妨碍的话,可以更改后缀.bak 使之无效)

1、CentOS-Aliyum安装

否则,在/etc/yum.repos.d 下建立:CentOS-Aliyum.repo

[CentOS-Aliyum]

name=CentOS-$releasever - Aliyum

baseurl=http://mirrors.aliyun.com/centos/6.5/os/$basearch

enabled=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

2、安装适合ffmpegyum源:

rpm -Uvh

http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

yum install ffmpeg ffmpeg-devel

安装过过程中,下载的包过多,可能会受网络速度的原因,如果部分包没有下载到,请重复执行 yum install ffmpeg ffmpeg-devel

查看安装到哪里了: whereis ffmpeg


3、可能出现的问题:

yum'GPG key retrieval failed'问题

cd /etc/pki/rpm-gpg

wget http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

yum update

较长时间的下载后,报错:

warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e8562897

GPG key retrieval failed: [Errno 6] OSError: [Errno 2] No such file or directory: '/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6'

这是因为:指定的文件/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5在本地不存在导致的。

解决:

1.去官网http://mirror.centos.org/centos/下载相应文件

cd /etc/pki/rpm-gpg

wget http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

2.引用rpm --import /etc/pki/rpm-gpg/RPM*


4、小知识

4.1、GNU隐私卫士(GnuPG).

GnuPG 是一个开放源程序的与OpenPGP 标准兼容的加密系统. 为使该系统完全免费和自由, 避免了使用RSA 和其他获得专利的算法

Gnu 隐私卫士 (GnuPG) 袖珍 HOWTO (中文版)

https://www.gnupg.org/howtos/zh/index.html

4.2、GPGLinux上的应用主要是实现官方发布的包的签名机制

GPG分为公钥及私钥。

公钥:顾名思意,即可共享的密钥,主要用于验证私钥加密的数据及签名要发送给私钥方的数据。

私钥:由本地保留的密钥,用于签名本地数据及验证用公钥签名的数据。

实现原理(Red Hat签名为例)

1>RH在发布其官方的RPM包时(如本地RHEL光盘及FTP空间包),会提供一个GPG密钥文件,即所谓的公钥。

2>用户下载安装这个RPM包时,引入RH官方的这个RPM GPG公钥,用来验证RPM包是不是RH官方签名的。

导入GPG-KEY:

可以去https://www.redhat.com/security/team/key//etc/pki/rpm-gpg查找相应的GPG密钥,并导入到RPM:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY

签名及加密概念:

签名与加密不是一个概念。

签名类似于校验码,用于识别软件包是不是被修改过,最常用的的就是我们的GPGMD5签名,原方使用一定的字符(MD5)或密码(GPG私钥)与软件进行相应的运算并得到一个定长的密钥,。

加密是用一定的密钥对原数据进行修改,即使程序在传输中被截获,只要它不能解开密码,就不能对程序进行修改,除非破坏掉文件,那样我们就知道软件被修改过了。

RPM验证方法:

1>验证安装的整个软件包的文件

rpm -V crontabs-1.10-8

2>验证软件包中的单个文件

rpm -Vf /etc/crontab

如果文件没有被修改过,则不输出任何信息。

3>验证整个软件包是否被修改过

rpm -Vp AdobeReader_chs-7.0.9-1.i386.rpm

.......T   /usr/local/Adobe/Acrobat7.0/Reader/GlobalPrefs/reader_prefs

S.5....T   /usr/local/Adobe/Acrobat7.0/bin/acroread

4>验证签名

rpm -K AdobeReader_chs-7.0.9-1.i386.rpm

AdobeReader_chs-7.0.9-1.i386.rpm: sha1 md5 OK

验证结果含意:

S file Size differs

M Mode differs (includes permissions and file type)

5 MD5 sum differs

D Device major/minor number mis-match

L readLink(2) path mis-match

U User ownership differs

G Group ownership differs

T mTime differs

4.3、Rpmyum的区别:

rpm是由红帽公司开发的软件包管理方式,使用rpm我们可以方便的进行软件的安装、查询、卸载、升级等工作。但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时。

Yum(全称为 Yellow dog Updater, Modified)是一个在FedoraRedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

rpm 执行安装包

二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。

4.4、rpm常用命令组合:

ivh:安装显示安装进度--install--verbose--hash

Uvh:升级软件包--Update

qpl:列出RPM软件包内的文件信息[Query Package list]

qpi:列出RPM软件包的描述信息[Query Package install package(s)]

qf:查找指定文件属于哪个RPM软件包[Query File]

Va:校验所有的RPM软件包,查找丢失的文件[View Lost]

e:删除包

二、源代码安装

redhat5.7测试通过

1、下载

从官网(http://www.ffmpeg.org/)下载最新ffmpeg源代码安装包

http://ffmpeg.org/releases/ffmpeg-2.4.3.tar.bz2

放到/usr/src 下面

2、解压

使用tar –jxvf ffmpeg-2.4.3.tar.bz2 解压,得到ffmpeg文件夹

cd ffmpeg

3、编译

./configure --enable-shared --disable-yasm --prefix=/usr/local/ffmpeg

(注意:因为ffmpeg中为了提高效率用到了汇编指令,比如MMX和SSE,所以需要yasm汇编编译器,我这里禁止了汇编使用)

其中:--enable-shared 是允许其编译产生动态库,在以后的编程中要用到这个几个动态库。--prefix设置的安装目录。

4、安装

make && make install

5、结果

安装之后在/usr/local/ffmpeg会看到有三个目录

lib 动态链接库位置

include 编程要用到头文件

bin 执行文件所在的目录

6、确保执行可以找到动态链接库

1ldconfig

2cat /etc/ld.so.conf (查看是否有/usr/local/ffmpeg/lib)

3、(如果没有则)echo "/usr/local/ffmpeg/lib" >> /etc/ld.so.conf

4ldconfig

备注:ldconfig命令的用途, 主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下, 搜索出可共享的动态链接库(格式如lib*.so*), 进而创建出动态装入程序(ld.so)所需的连接和缓存文件. 缓存文件默认为/etc/ld.so.cache, 此文件保存已排好序的动态链接库名字列表. Linux中的动态链接库和java 的jar包很相似。

7、获得位置

最后,获得ffmpeg可执行文件的位置:/usr/local/ffmpeg/bin/ffmpeg

java调用方法,请参考:

ffmpeg视频截图及时间获取(java版)代码

一叶浮萍
分享到:
共 0 条  此列表为空  当前1/1页

© 2014 究问社区 copyRight 豫ICP备13003319号-1