In this tutorial, we investigate the NVIDIA GPU Acceleration mechanism to post-process a video. Although terminal execution is pretty easy and straightforward, for educational purposes, the pure Pythonic approach has been chosen.
Introduction
FFmpeg
is one of the most famous multimedia frameworks which is widely used for processing videos. In order to encode the video, certainly, a video encoder must be used. The x264
here
. documentation on NVENC can be here
here
this github repository
In this tutorial, the main goal is to show how to do video rotation with GPU-accelerated libraries in Linux. In this tutorial, we do not use the terminal commands directly for employing the FFmpeg with NVENC support. Instead, the python interface is being used to run commands in the terminal. This can be done using the this documentation
The assumption of this tutorial is that the FFmpeg is already installed with NVENC support. The installation guide can be found in the FFMPEG WITH NVIDIA ACCELERATION ON UBUNTU LINUX
documentation provided by NVIDIA.
Data Indicator
This tutorial is customized for processing multiple videos. The assumption is that the full path of each video is stored in a .txt
file in a “.txt”
file is as below:

As a guidance if a recursive search for specific files in a directory and its sub-directories with extension “.png”
is desired, the following method in command line is useful and it saves the output as a “.txt”
file:

Video Rotation
From now on the assumption is that the “.txt” file is ready and well-formatted. The python script for processing videos is as below:

Overall Code Description
videos.txt
.txt”
file and stores each line as an item of a list called files_list. The loop starts at line 17 process each file with the subprocess.call
command. In each loop, the folder of the input file is found and the output file will be stored in the same directory but with the different naming convention which is explained by the comments in the code. Each, in subprocess.call

FFMPEG Encoder
The command executed by FFmpeg needs to be described. Each of the elements started by — are calling specific operations and the command follows by them execute the desired operation. For example -vcodec indicator will specify the codec to be used by FFmpeg
and nvenc
which follows by that point to the codec. More details can be found at FFmpeg Filters Documentation
. The following Table, summarize the indicators:

The -vf
is the main command which its full documentation is available at here
and it has the filter options.
Code Execution
In order to run the python file we go to the terminal and execute the following:

As a consideration, if we are working on any specific virtual environment it has to be activated at first.
Conclusion
In this post, we investigated the NVIDIA GPU Acceleration mechanism to post-process a video. Although terminal execution is pretty easy and straightforward, for educational purposes, the pure Pythonic approach has been chosen.