Accelerated Decode with ffmpeg ¶
The NVIDIA
ffmpeg
package supports hardware-accelerated decode on
NVIDIA
®
Jetson™
device.
An application can use accelerated decode to read video files in the following elementary formats and container formats and dump them in YUV 420 format:
-
H.264
-
H.265
-
VP8
-
VP9
-
MPEG2
-
MPEG4
Note
The
ffmpeg
package does not support MPEG4 container files.
To install the ffmpeg binary package ¶
-
Enter this command:
$ sudo apt install ffmpeg
To get source files for the ffmpeg package ¶
-
Enter this command:
$ apt source ffmpeg
To include the ffmpeg library in Jetson Linux builds ¶
-
Add the following lines to /etc/apt/sources.list:
$ echo "deb https://repo.download.nvidia.com/jetson/ffmpeg main main" | sudo tee -a /etc/apt/sources.list $ echo "deb-src https://repo.download.nvidia.com/jetson/ffmpeg main main" | sudo tee -a /etc/apt/sources.list
-
Enter this command:
$ sudo apt update
Decode Functional Flow ¶
This section describes the function flow of the
ffmpeg
decoding process:
-
Call
nvv4l2dec_init_decoder()
to create a new V4L2 Video Decoder object on the device node/dev/nvhost-nvdec
. -
Call
subscribe_event()
to subscribe to resolution change events. -
Call
set_output_plane_format()
to set the format on the output plane. -
Call
capture_thread()
to start a capture thread. -
Call
set_capture_plane_format()
to set the format on the capture plane. -
Call
nvv4l2dec_decode()
to read buffers from ffmpeg and start the decode process. -
Call
nvv4l2dec_decoder_get_frame()
to get the hardware-accelerated decoded data and pass it toffmpeg
for dumping. -
Call
nvv4l2dec_decoder_close()
to destroy the buffers and close the device.
The following table describes the key structure.
Element |
Description |
---|---|
nvPacket |
Contains information about input packets. |
nvFrame |
Contains information about decoded frames. |
nvCodingType |
Specifies a different codec type. |
BufferPlane |
Holds the buffer plane parameters. |
Buffer |
Holds the buffer information. |
context_t |
Defines the decoder context. |
This table describes the key function:
Element |
Description |
---|---|
nvv4l2dec_create_decoder |
Creates a new V4L2 Video Decoder object on the
device node
|
subscribe_event |
Subscribes to resolution change events. |
set_output_plane_format |
Sets the format on the output plane. |
req_buffers_on_output_plane |
Requests buffers on the output plane to be filled from the input bit stream. |
dq_buffer |
Dequeues the V4L2 buffer. |
q_buffer |
Queues the V4L2 buffer. |
capture_thread |
Starts the capture thread. |
dq_event |
Dequeues an event reported by the V4L2 device. |
req_buffers_on_capture_plane |
Requests buffers on the capture plane. |
set_capture_plane_format |
Sets the capture plane format. |