【写在前面】飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适配认证四大板块,旨在共享尖端技术,为开发者提供一个涵盖多领域的开发平台和工具套件。点击这里开始你的技术升级之旅吧
本文分享至飞腾开发者平台《飞腾平台FFmpeg安装使用指南》
1 介绍
FFmpeg是一个免费的软件框架,用于对包括音频和视频在内的多媒体文件进行转码。本指南描述了如何在飞腾平台编译安装带有x264和x265库的FFmpeg以及如何使用FFmpeg进行视频转码测试。
2 环境要求
2.1 硬件环境
硬件环境如下表所示。
项目 | 说明 |
---|---|
CPU | FT-2000+/64、飞腾腾云 S2500、FT-2000/4、飞腾腾锐 D2000 |
网络 | |
存储 | |
内存 |
2.2 软件环境
软件环境如下表所示。
项目 | 版本 | 下载地址 |
---|---|---|
OS | centos8.2、Kylin V10、 Ubuntu19.10 | |
GCC | 9.2.1、7.3.0、8.3.1、9.3.0 | |
GNU Binutils | 2.32、2.33、2.34、2.35 | |
Glibc | 2.28、2.23、2.31、2.30 | |
Yasm | https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz | |
libx264 | https://code.videolan.org/videolan/x264.git | |
libx265 | https://bitbucket.org/multicoreware/x265_git | |
FFmpeg | https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 |
3 部署FFmpeg
3.1 环境搭建
步骤一 创建目录。
$ cd $HOME
$ mkdir ffmpeg_sources //下载所有相关的源文件
$ mkdir ffmpeg_build //构建文件和安装库
$ mkdir bin //安装生成的二进制文件
步骤二 获取依赖项。
# 获取编译所必须的依赖项
$ yum install autoconf automake bzip2 bzip2-devel cmake freetype-devel gcc
gcc-c++ libtool make pkgconfig zlib-devel
3.2 获取Yasm
Yasm是一些库使用的汇编程序,可以加速编译构建的过程。
$ cd $HOME/ffmpeg_sources
$ curl -O -L
https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
$ tar xzvf yasm-1.3.0.tar.gz
$ cd yasm-1.3.0
$ ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
$ make
$ make install
3.3 安装libx264
libx264是H.264视频编码器,在编译ffmpeg时需要配置--enable-gpl --enable-libx264。
$ cd $HOME/ffmpeg_sources
$ git clone --branch stable --depth 1
https://code.videolan.org/videolan/x264.git
$ cd x264
$ PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure
--prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
$ make
$ make install
3.4 安装libx265
libx265是H.265/HEVC视频编码器,在编译ffmpeg时需要配置--enable-gpl --enable-libx265。
$ cd ~/ffmpeg_sources
$ git clone --branch stable --depth 2
https://bitbucket.org/multicoreware/x265_git
$ cd ~/ffmpeg_sources/x265_git/build/linux
$ cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build"
-DENABLE_SHARED:bool=off ../../source
$ make
$ make install
3.5 构建FFmpeg
$ cd $HOME/ffmpeg_sources
$ curl -O -L https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
$ tar xjvf ffmpeg-snapshot.tar.bz2
$ cd ffmpeg
$ PATH="\$HOME/bin:\$PATH"
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure
--prefix="$HOME/ffmpeg_build" \
--pkg-config-flags="--static" \
--extra-cflags="-I$HOME /ffmpeg_build/include" \
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \
--extra-libs=-lpthread \
--extra-libs=-lm \
--bindir="$HOME/bin ”\
--enable-gpl \
--enable-libx264 \
--enable-libx265 \
--enable-nonfree
$ make
$ make install
4 FFmpeg测试
在FFmpeg中,预设决定了编码速度(以压缩效率为代价),可选的预设选项为ultrafast, superfast, veryfast, faster, fast,medium, slow, slower, veryslow,如果选择ultrafast,编码过程将运行的很快,与medium相比,文件大小会更大,但视觉效果是相同的。
视频比特率是视频数据随时间传输的速率,比特率越高,质量越好,但编码需要更长的时间,这会与之前选择的预设类型一起影响视频的编码速度和质量。
测试使用ffmpeg将y4m格式的视频输入编码到x264和x265文件,输入的y4m视频源由此下载:https://media.xiph.org/video/derf/
步骤一 下载视频源。
$ cd $HOME
$ mkdir ffmpeg_video
$ cd ffmpeg_video
$ wget https://media.xiph.org/video/derf/y4m/in_to_tree_1080p50.y4m
步骤二 ffmpeg测试。
测试指令:
$ ffmpeg -i in.y4m -codec:v libx264 -preset <preset> -b:v <bitrate> -maxrate <bitrate> -bufsize <2*bitrate> -tune psnr out.264
$ ffmpeg -i in.y4m -codec:v libx265 -preset <preset> -b:v <bitrate> -maxrate <bitrate> -bufsize <2*bitrate> -tune psnr out.265
使用以下配置来测试ffmepg:
$ ffmpeg -i in_to_tree_1080p50.y4m -codec:v libx264 -preset faster -b:v 5M -maxrate 5M -bufsize 10M -tune psnr in_to_tree_1080p50_faster.264
$ ffmpeg -i in_to_tree_1080p50.y4m -codec:v libx265 -preset faster -b:v 5M -maxrate 5M -bufsize 10M -tune psnr in_to_tree_1080p50_faster.265
在ffmpeg测试脚本运行完成后会在ffmpeg_video目录下出现相应in_to_tree_1080p50_faster.264与in_to_tree_1080p50_faster.265文件。
推荐阅读
欢迎广大开发者来飞腾开发者平台获取更多前沿技术文档及资料
如开发者在使用飞腾产品有任何问题可通过在线工单联系我们
版权所有。飞腾信息技术有限公司 2023。保留所有权利。
未经本公司同意,任何单位、公司或个人不得擅自复制,翻译,摘抄本文档内容的部分或全部,不得以任何方式或途径进行传播和宣传。
商标声明
Phytium和其他飞腾商标均为飞腾信息技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意
本文档的内容视为飞腾的保密信息,您应当严格遵守保密任务;未经飞腾事先书面同意,您不得向任何第三方披露本文档内容或提供给任何第三方使用。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,飞腾在现有技术的基础上尽最大努力提供相应的介绍及操作指引,但飞腾在此明确声明对本文档内容的准确性、完整性、适用性、可靠性的等不作任何明示或暗示的保证。
本文档中所有内容,包括但不限于图片、架构设计、页面布局、文字描述,均由飞腾和/或其关联公司依法拥有其知识产权,包括但不限于商标权、专利权、著作权等。非经飞腾和/或其关联公司书面同意,任何人不得擅自使用、修改,复制上述内容。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。