##はじめに
こんにちは streampack チームのメディです。
https://cloudpack.jp/service/option/streampack.html
##Copyrights
Big Buck Bunny
© copyright 2008, Blender Foundation | www.bigbuckbunny.org
##Objective ・ 目的
Learning how to compile FFMPEG with nvidia hardware acceleration on an Ubuntu EC2 instance.
Ubuntu EC2インスタンス上でnvidiaハードウェアアクセラレーションを使ってFFMPEGをコンパイルする方法を学ぶ。
We will use a gs3.xlarge Ec2 instance.
gs3.xlarge Ec2インスタンスを使用します。
This kind of EC2 instance is using a nvidia Tesla M60 card. This graphic card has been released in 2015.
This card will increase FFMPEG video encoding speed.
この種のEC2インスタンスは、nvidia Tesla M60カードを使用しています。 このグラフィックカードは2015年に発売されました。
このカードはFFMPEGビデオのエンコード速度を上げます。
##Pricing ・ 料金
0.75 USD by hour.
1時間で0.75 USDです。
Check the latest price・最新の価格を確認
https://aws.amazon.com/ec2/pricing/on-demand/
Select the instance type・インスタンスタイプを選択
Machine Linux Image : Ubuntu Server 18.04 LTS
Instance type : g3s.xlarge
Connect to your instance・インスタンスに接続する
ssh -i yourKeyFile.pem ubuntu@YourServerIP
Update the OS ・ OSをアップデートする
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install yasm
Update the sources list ・ ソースリストを更新する
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
List drivers ・ドライバ一覧
sudo apt install ubuntu-drivers-common
ubuntu-drivers devices
Install the nvidia-driver (v 415) for the Tesla M60
sudo ubuntu-drivers autoinstall
Reboot ・ リブート
You need to reboot the Ec2 instance.
Ec2インスタンスを再起動する必要があります。
sudo shutdown -r now
nvidia driver version ・ nvidiaカードとドライバのバージョンを表示
Did you really reboot your instance ?
インスタンスを本当に再起動しましたか?
nvidia-smi
List CUDA paths ・ CUDAパスをリストする
ldconfig -p | grep cuda
nvidia toolkit
sudo apt install nvidia-cuda-toolkit
sudo shutdown -r now
Don't forget to reboot your instance !
インスタンスを再起動することを忘れないでください。
Checking nvidia toolkit
nvcc -V
NVIDIA CODECS ・ NVIDIAコーデック
Caution・注意
Because the Tesla M60 card is a little bit old, we cannot use the latest version of nvidia codecs.
Tesla M60カードは少し古いため、最新バージョンのnvidiaコーデックを使用することはできません。
For drivers 415.x and older versions
415.xドライバ以前のバージョン用
cd
mkdir nvcodec
cd nvcodec
git init
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers/
git checkout n8.2.15.7
make && sudo make install
Caution
The n8.2.15.7
version of the nv codecs
works fine with the 415.xx
version of the nvidia driver.
If you are using a different version of the driver, please refer to the official nvidia codecs project website.
注意
n 8.2.15.7
バージョンの nv codecs
は、 415.xx
バージョンのnvidiaドライバとうまく動作します。
別のバージョンのドライバを使用している場合は、公式のnvidiaコーデックプロジェクトのWebサイトを参照してください。
I found this solution on GitHub but I cannot retrieve the link, sorry.
GitHubでこの解決策を見つけましたが、申し訳ありませんが、リンクを取得できません。
Compiling FFMPEG with CUDA enabled ・CUDAを有効にしてFFMPEGをコンパイルする
Before compiling ・ コンパイルする前に
sudo apt-get install nasm
sudo apt-get install mingw-w64
Compiling / installing ・ コンパイル / インストール
cd
mkdir ffmpeg
cd ffmpeg
git init
git clone https://github.com/FFmpeg/FFmpeg.git
cd FFmpeg
./configure --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64
make -j10
sudo make install
List the encoders ・ エンコーダを一覧表示する
All encoders・全エンコーダ
ffmpeg -encoders
nvidia encoders・nvidia エンコーダ
ffmpeg -encoders | grep nv
Testing ・テスト
###Big Buck Bunny : 4k 2160p 30fps
cd
mkdir videos
cd videos
wget http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_2160p_30fps_normal.mp4
Hardware accelerated encoding with nvenc_h264 ・ nvenc_h264によるハードウェアアクセラレーションエンコーディング
4K --> 2K
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i ~/videos/bbb_sunflower_2160p_30fps_normal.mp4 -vf scale_npp=1920:1280 -c:v h264_nvenc ~/videos/out_nvenc.mp4
Download the transcoded file ・ トランスコードファイルをダウンロードする
Open a new terminal window:
新しいターミナルウィンドウを開いてください。
scp -i yourKey.pem ubuntu@yourServerIp:/home/ubuntu/videos/out_nvenc.mp4 .
Software encoding with libx264 ・ libx264によるソフトウェアのエンコーディング
We will use a static build of FFMPEG.
FFMPEGの静的ビルドを使用しています。
4K --> 2K
cd
mkdir static_ffmpeg
cd static_ffmpeg
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
tar xf ffmpeg-release-amd64-static.tar.xz
cd ffmpeg-4.1.1-amd64-static
./ffmpeg -i ~/videos/bbb_sunflower_2160p_30fps_normal.mp4 -vf scale=1920:1280 -c:v libx264 ~/videos/out_soft.mp4
Download the transcoded file ・ トランスコードファイルをダウンロードする
Open a new terminal window :
新しいターミナルウィンドウを開いてください。
scp -i yourKey.pem ubuntu@yourServerIp:/home/ubuntu/videos/out_soft.mp4 .
####Results ・ 結果
To convert a video from 4k to 2k, hardware accelerated encoding is in average 7 times faster than software encoding.
ビデオを4kから2kに変換するために、ハードウェアアクセラレーションエンコーディングはソフトウェアエンコーディングよりも平均7倍高速です。
##Information sources ・ 情報源
https://images.nvidia.com/content/tesla/pdf/188417-Tesla-M60-DS-A4-fnl-Web.pdf
https://www.nvidia.com/object/tesla-m60.html
https://developer.nvidia.com/ffmpeg
https://en.wikipedia.org/wiki/Nvidia_Tesla
http://bbb3d.renderfarming.net/download.html
https://qiita.com/clerk67/items/d8897b97b5cd93b2d752
https://powersj.github.io/post/ubuntu-server-nvidia-cuda/
https://gist.github.com/Brainiarc7/4b49f463a08377530df6cecb8171306a
https://linuxconfig.org/how-to-install-the-nvidia-drivers-on-ubuntu-18-04-bionic-beaver-linux