【写在前面】飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适配认证四大板块,旨在共享尖端技术,为开发者提供一个涵盖多领域的开发平台和工具套件。点击这里开始你的技术升级之旅吧

image.png

本文分享至飞腾开发者平台《飞腾平台FFmpeg安装使用指南》

1 介绍

  FFmpeg是一个免费的软件框架,用于对包括音频和视频在内的多媒体文件进行转码。本指南描述了如何在飞腾平台编译安装带有x264和x265库的FFmpeg以及如何使用FFmpeg进行视频转码测试。

2 环境要求

2.1 硬件环境

  硬件环境如下表所示。

项目说明
CPUFT-2000+/64、飞腾腾云 S2500、FT-2000/4、飞腾腾锐 D2000
网络
存储
内存

2.2 软件环境

  软件环境如下表所示。

项目版本下载地址
OScentos8.2、Kylin V10、 Ubuntu19.10
GCC9.2.1、7.3.0、8.3.1、9.3.0
GNU Binutils2.32、2.33、2.34、2.35
Glibc2.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和其他飞腾商标均为飞腾信息技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

本文档的内容视为飞腾的保密信息,您应当严格遵守保密任务;未经飞腾事先书面同意,您不得向任何第三方披露本文档内容或提供给任何第三方使用。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,飞腾在现有技术的基础上尽最大努力提供相应的介绍及操作指引,但飞腾在此明确声明对本文档内容的准确性、完整性、适用性、可靠性的等不作任何明示或暗示的保证。

本文档中所有内容,包括但不限于图片、架构设计、页面布局、文字描述,均由飞腾和/或其关联公司依法拥有其知识产权,包括但不限于商标权、专利权、著作权等。非经飞腾和/或其关联公司书面同意,任何人不得擅自使用、修改,复制上述内容。


飞腾开发者
6 声望3 粉丝

飞腾开发者技术小助手,定期分享飞腾技术文档,助力开发者打怪升级。更多材料获取:[链接]