linux服务器怎么安装ffmpeg

linux服务器怎么安装ffmpeg,第1张

1、下载ffmpeg。

2、解压缩 tar -zxvf ffmpeg.tar.gz

3、编辑profile文件

vi /etc/profile

在文件末尾加上两句话:

export FFMPEG_HOME=/usr/local/ffmpeg

export PATH=$FFMPEG_HOME/bin:$PATH

4、配置安装路径之类的:

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

--enable-shared 参数据说是允许其编译产生动态库,在以后的编程中要用到这个几个动态库。

如果出现异常,提示因为缺少yasm,需要添加参数,再执行以下命令:

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

如果执行结果不对,可以根据提示信息,并查看帮助,解决问题

./configure --help

5、编译安装

make

make install

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

bin 执行文件目录

lib 静态,动态链接库目录

include 编程用到的头文件

7、为了防止执行程序找不到库文件,

可以将/usr/local/ffmpeg/lib目录设置到LD_LIBRARY_PATH环境变量

8、若出现error while loading shared libraries: libavdevice.so.52的错误

修改/etc/ld.so.conf 在最后一行加上/usr/local/ffmpeg/lib

ldconfig -v

并修改 /usr/local/ffmpeg/lib目录下的文件权限为777

最近忙于新产品技术点突破,针对架构摸索暂时停住。目前需要解决的问题是如何从视频流中截取一张图。

在安防领域有各种视频监控产品,它们遵循的通讯协议也不尽相同,归纳起来主要遵循GB/T 28181、ONVIF、PSIA等协议。

其通信协议如下所示

在CentOS7上安装ffmpeg

脚本正确调用,接下来就通过Java调用远程服务器上脚本实现视频流截图,在此借助 Ganymed SSH-2 for Java ,实现SSH远程执行脚本。

通过SSH远程执行脚本有点简单粗暴,何不将这截图功能做成服务,向外发布,更加灵活方便。故后期工作如下:

准备一台图片服务器,其主要职责有

1.图片文件存储

2.响应终端的抓图请求,并将图片保存到指定文件夹目录下

3.响应终端的合图请求,以上两者做成服务的形式,终端通过分布式调用服务,完成操作并返回结果状态

4.接收终端上传的图片

硬件需求:

1.因图片服务器上安装ffmpeg工具,其需要对视频流进行解码,并按照png格式组织编码,对计算性能要求高,所以CPU性能要好

2.作为图片文件存储服务器,存储容量要大

3.接受多终端设备连接,网口带宽要大

因为要接收反馈结果,cmd命令可以这样写

当ffmpeg执行正确时,会输出succeeded,当ffmpeg不能正确执行时,会输出failed

新建目录文件夹,将截图文件放入指定文件夹中

看什么框架, 什么操作系统了。 一般可以直接system把脚本字符串当做参数处理。 这个方法坏处是会开新进程。 还有一个方法就是把ffmpeg编译进项目(建议把main函数改成一个可调用的函数)可以写一个service, 里面负责调度ffmpeg, 每一个请求开一个新的ffmpeg解码线程。 需要注意的是ffmpeg对内存的需求很高, 所以线程不肯能无限增加。 所以需要自己写一个线程池来维护线程数量。 超过线程数量的请求会被block知道一个线程释放。 这样还是有问题, 因为视频流是长期处理过程, 所以资源有限的情况下是不够处理高并发的。 最后一个方法是用nginx rtmp什么的负责多个视频流的连接, 然后就把不同的视频包都扔到同一个线程队列处理,然后解码分发。这样高并发性能也许会好一点, 缺点是可能会出现所有人都卡顿的情况


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/481067.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-08
下一篇2023-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存