centos7下FFmpeg环境部署记录

随着视频在网站上的应用越来越多,越来越多的网站服务器需要支持视频转码,视频压缩,FFmpeg是目前最好用的网站服务器后台转码程序,应用最多。FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。下面介绍下在Centos7下针对FFmpeg的部署记录:

1)安装EPEL Release,因为安装需要使用其他的repo源,所以需要EPEL支持
[root@qd-vpc-op-snapshot01 ~]# yum install -y epel-release 
[root@qd-vpc-op-snapshot01 ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7          //如果出现缺少Code提示,就执行此条命令。
[root@qd-vpc-op-snapshot01 ~]# yum repolist            //安装完成之后,可以查看是否安装成功

2)安装Nux-Dextop源
[root@qd-vpc-op-snapshot01 ~]# rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro         //导入一个Code
[root@qd-vpc-op-snapshot01 ~]# rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm         //安装nux-dextop 源
[root@qd-vpc-op-snapshot01 ~]# yum repolist      #查看repo源是否安装成功

3)安装ffmpeg
[root@qd-vpc-op-snapshot01 ~]# yum install -y ffmpeg
[root@qd-vpc-op-snapshot01 ~]# ffmpeg -version
ffmpeg version 2.6.8 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-4)
configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' --enable-bzlib --disable-crystalhd --enable-gnutls --enable-ladspa --enable-libass --enable-libcdio --enable-libdc1394 --enable-libfaac --enable-nonfree --enable-libfdk-aac --enable-nonfree --disable-indev=jack --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-openal --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libx264 --enable-libx265 --enable-libxvid --enable-x11grab --enable-avfilter --enable-avresample --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect
libavutil      54. 20.100 / 54. 20.100
libavcodec     56. 26.100 / 56. 26.100
libavformat    56. 25.101 / 56. 25.101
libavdevice    56.  4.100 / 56.  4.100
libavfilter     5. 11.102 /  5. 11.102
libavresample   2.  1.  0 /  2.  1.  0
libswscale      3.  1.101 /  3.  1.101
libswresample   1.  1.100 /  1.  1.100
libpostproc    53.  3.100 / 53.  3.100

为了方面后续的安装,特意编写一个shell脚本,进行一键安装

[root@qd-vpc-op-snapshot01 ~]# cat ffmpeg_install.sh
#!/bin/bash
yum install -y vim
yum install -y epel-release
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
yum repolist
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
yum repolist
yum update -y
yum install -y ffmpeg
ffmpeg -version

FFmpeg常用基本命令

1)分离视频音频流
ffmpeg -i input_file -vcodec copy -an output_file_video  //分离视频流
ffmpeg -i input_file -acodec copy -vn output_file_audio  //分离音频流

2)视频解复用
ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264
ffmpeg –i test.avi –vcodec copy –an –f m4v test.264

3)视频转码
ffmpeg –i test.mp4 –vcodec h264 –s 352*278 –an –f m4v test.264              //转码为码流原始文件
ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352*278 –an –f m4v test.264  //转码为码流原始文件
ffmpeg –i test.avi -vcodec mpeg4 –vtag xvid –qsame test_xvid.avi            //转码为封装文件
//-bf B帧数目控制,-g 关键帧间隔控制,-s 分辨率控制

4)视频封装
ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file

5)视频剪切
ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg        //提取图片
ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi    //剪切视频
//-r 提取图像的频率,-ss 开始时间,-t 持续时间

6)视频录制
ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi

7)YUV序列播放
ffplay -f rawvideo -video_size 1920x1080 input.yuv

8)YUV序列转AVI
ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi

主要常用参数说明:
-i 设定输入流
-f 设定输出格式
-ss 开始时间
视频参数:
-b 设定视频流量,默认为200Kbit/s
-r 设定帧速率,默认为25
-s 设定画面的宽与高
-aspect 设定画面的比例
-vn 不处理视频
-vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器
音频参数:
-ar 设定采样率
-ac 设定声音的Channel数
-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器
-an 不处理音频

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

挖洞经验 | 看我如何发现“小火车托马斯”智能玩具APP聊天应用漏洞

最近,我向智能玩具厂商ToyTalk提交了两个APP相关的漏洞并获得了$1750美金奖励,目前,漏洞已被成功修复,在此我打算公开详细的漏洞发现过程,以便其他AP...

25270
来自专栏DevOps时代的专栏

60 个最棒的 DevOps 开源工具

你喜欢免费的东西吗?获得开发者社区支持的自动化,开源的工具是大家梦寐以求的。这里列举了 60+ 款最棒的开源工具,可以帮助你很好的实行 DevOps。

72530
来自专栏FreeBuf

漏洞预警:“毒液(VENOM)”漏洞影响全球数百万虚拟机安全(附POC)

CrowdStrike公司安全研究员称,一个名为“毒液(VENOM)”的QEMU漏洞使数以百万计的虚拟机处于网络攻击风险之中,该漏洞可以造成虚机逃逸,威胁到全球...

21380
来自专栏大魏分享(微信公众号:david-share)

为微服务引入Istio服务网格(上)

2.2K20
来自专栏散尽浮华

云计算和虚拟机基础梳理

云计算介绍 云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池,(资源包括网络、服务器、存储、应用软件、服务...

78660
来自专栏流媒体人生

流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)

         Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议。RTP协议详细说明了在互联...

82430
来自专栏NetCore

开篇有益-解析微软微服务架构eShopOnContainers(一)

为了推广.Net Core,微软为我们提供了一个开源Demo-eShopOnContainers,这是一个使用Net Core框架开发的,跨平台(几乎涵盖了所有...

32460
来自专栏魏艾斯博客www.vpsss.net

Linode 免费升级硬盘容量操作过程记录

41060
来自专栏原创

Gerrit代码Review入门实战

代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但在实际项目执行过程中,却因为种种原因被Delay甚至是忽略。在实践中,给大家推荐一款...

55050
来自专栏FreeBuf

刷机教程:教你如何打造一台渗透测试手机

我们下面会给大家展示怎样打造自己的攻击测试手机,大家可以在上面跑Kali系统和AOPP(安卓开源攻击测试项目)。 简述手机刷机 1. 按照你的手机型号下载Rec...

380100

扫码关注云+社区

领取腾讯云代金券