Using VAAPI's hardware accelerated video encoding on Linux with Intel's hardware on FFmpeg and libav
Hello, brethren :-)
As it turns out, the current version of FFmpeg (version 3.1 released earlier today) and libav (master branch) supports full H.264 and HEVC encode in VAAPI on supported hardware that works reliably well to be termed "production-ready".
Before taking on this manual, the author assumes that:
- The end-user can comfortably install and configure their Linux distribution of choice.
- The end user can install, upgrade, downgrade and resolve both conflicts and dependency resolution of packages on his/her distribution's package manager.
- That the user is comfortable with the Linux terminal, and can navigate through it.
- Basic competence on the shell, such as reading man files, using a text editor of choice, manipulating file operations on the same, etc is assumed.
And as an indemnity clause, I, the author, will not be liable for any damage, implied or otherwise, to your files, hardware or the stability of your machine as a consequence to using these instructions to achieve a similar feat as described in this gist.
It means that when you're encoding content for use with your blogs or some fancy youtube download, you can do it much, much faster on hardware with lower processor utilization (so you can multi-task) , lesser heat output and, as a plus, is significantly faster (As tested on my end, ~8.7x for 1080p and ~4.2x for 4k encodes with reference media) compared to a pure, software-based approach as offered by libx264 and similar implementations, albeit at an acceptable quality compromise.
Here goes:
First, you will need to build ffmpeg (and libav,as per your preferences) with appropriate arguments. --enable-vaapi switch should be enough, though.
Here are my build options (Note that I load ffmpeg and libav via the module system):
FFmpeg's module files are here, and as more versions are compiled, more modules will be added. Libav's module files are here, and as more versions are compiled, more modules will be added.
FFmpeg's configuration switches used:
./configure --enable-nonfree --enable-gpl --enable-version3
--enable-libass --enable-libbluray --enable-libmp3lame
--enable-libopencv --enable-libopenjpeg --enable-libopus
--enable-libfaac --enable-libfdk-aac --enable-libtheora
--enable-libvpx --enable-libwebp --enable-opencl --enable-x11grab
--enable-opengl --cpu=native --enable-nvenc --enable-vaapi
--enable-vdpau --enable-ladspa --enable-libass --enable-libgsm
--enable-libschroedinger --enable-libsmbclient --enable-libsoxr
--enable-libspeex --enable-libssh --enable-libwavpack --enable-libxvid
--enable-libx264 --enable-libx265 --enable-netcdf --enable-openal
--enable-openssl --enable-cuda --prefix=/apps/ffmpeg/git --enable-omx
Libav's configuration switches used:
./configure --prefix=/apps/libav/11.7 --enable-gpl --enable-version3
--enable-nonfree --enable-runtime-cpudetect --enable-gray
--enable-vaapi --enable-vdpau --enable-vda --enable-libmp3lame
--enable-libopenjpeg --enable-libopus --enable-libfaac
--enable-libfdk-aac --enable-libtheora --enable-libvpx
--enable-libwebp --enable-x11grab --cpu=native --enable-vaapi
--enable-vdpau --enable-libgsm --enable-libschroedinger
--enable-libspeex --enable-libwavpack --enable-libxvid
--enable-libx264 --enable-libx265 --enable-openssl --enable-nvenc
--enable-cuda --enable-omx
Then run make and make install
to build and install the toolkits respectively.
Warning: These options are for reference only, a useful FFmpeg build will require you to install appropriate dependencies for some build options as suited to your environment and platform. Modify as needed. Also see the indemnity clause at the top of this document.
Here are the dependencies I had to install on my end (without acounting for the OpenMAX IL bellagio back-end):
sudo apt-get install yasm ladspa-sdk ladspa-foo-plugins ladspalist libass5 libass-dev libbluray-bdj libbluray-bin libbluray-dev libbluray-doc libbluray1 libmp3lame-dev \ libmp3lame-ocaml libmp3lame-ocaml-dev libmp3lame0 libsox-fmt-mp3 libopencv-* opencv-* python-cv-bridge python-image-geometry python-opencv python-opencv-apps gstreamer1.0-vaapi gstreamer1.0-vaapi-doc libopenjp2-* libopenjp2-7-dev libopenjp2-7-dbg libopenjp3d7 libopenjpeg-dev libopenjpeg-java libopenjpeg5 libopenjpeg5-dbg libopenjpip7 openjpeg-tools libopus-dbg libopus-dev libopus-doc libopus0 libtag1-dev libtag1-doc libtag1v5 libtagc0 libtagc0-dev libopus-ocaml libopus-ocaml-dev libopusfile-dev libopusfile-doc libopusfile0 libvorbis-java opus-tools opus-tools-dbg libfaac-dev libfaac0 fdkaac libfdk-aac0 libfdk-aac0-dbg libfdk-aac-dev libtheora-dbg libtheora-dev libtheora-doc libtheora0 libtheora-bin libtheora-ocaml libtheora-ocaml-dev libvpx-dev libvpx-doc libvpx3 libvpx3-dbg libwebp-dev libwebp5 libwebpdemux1 libwebpmux1 opencl-headers mesa-vdpau-drivers libvdpau-va-gl1 vdpauinfo vdpau-va-driver libvdpau-doc libvdpau-dev libvdpau1 libvdpau1-dbg libgsm-tools libgsm0710-0 libgsm0710-dev libgsm0710mux3 libgsm1 libgsm1-dbg libgsm1-dev sox libsox-dev libsox-fmt-all libsox-fmt-alsa libsox-fmt-ao libsox-fmt-base libsox-fmt-mp3 libsox-fmt-oss libsox-fmt-pulse libsox2 libsoxr-dev libsoxr-lsr0 libschroedinger-dev libschroedinger-doc libschroedinger-ocaml libschroedinger-ocaml-dev libschroedinger-1.0-0 libsmbclient libsmbclient-dev smbclient libspeex-dev libspeex1 libspeexdsp-dev libspeexdsp1 libspeex-ocaml libspeex-ocaml-dev libspeex-dbg libssh-4 libssh-dev libssh-dbg libssh-doc libssh-gcrypt-4 libssh2-1 libssh2-1-dev libwavpack-dev libwavpack1 libxvidcore-dev libxvidcore4 libx265-dev libx265-79 libx265-doc libx264-148 libx264-dev libnetcdf-* netcdf-* libopenal-* openal-info openssl
When done, you may then create and load the appropriate environment modules for both ffmpeg and libav as your choices go. Don't load both at the same time, though :-) (Mark them as module conflicts to ensure that if this is set up on a cluster, library conflicts do not occur when users inadvertently load both of them by accident in the same session).
Now, we get to the interesting bits:
You'll notice that we pass several arguments to ffmpeg as indicated below:
ffmpeg -loglevel debug -hwaccel vaapi -vaapi_device /dev/dri/renderD128 -i "input
file" -vf 'format=nv12,hwupload' -map 0:0 -map 0:1 -threads 8 -aspect
16:9 -y -f matroska -acodec copy -b:v 12500k -vcodec h264_vaapi
"output file"
Let's break down these arguments to their meaning:
(a) .-loglevel tells ffmpeg to log ffmpeg events as debug output. This will be very verbose, and is completely optional. You can disregard this.
(b). -vaapi_device: This is important. You must select a valid VAAPI H/W context device to which you will upload textures to via hwupload, formatted in the NV12 colorspace. This points to a /dev/dri/render*_ file on your Linux system.
(c). -vf : This is an inbuilt ffmpeg option that allows you to specify codec options/arguments to be passed to our encoder, in this case, h264_vaapi (Remember, we built this when we passed --enable-vaapi at the configuration stage). Here, we tell ffmpeg to convert all textures to one colorspace, NV12 (As it's the one accepted by Intel's QuickSync hardware encoder) and to also use hwupload, an ffmpeg intrinsic, that tells the program to asynchronously copy the converted pixel data to VAAPI's surfaces.
(d). - threads : Specifies the number of threads that FFmpeg should use. By default, use the number of logical processors available on your processor here. On Intel processors that support Hyperthreading, multiply the number of cores your processor has by 2.
(e). -f : Specifies the container format specification you can use. This can be Matroska, webm, mp4, etc. Take your pick (as per your container constraints).
(f). -acodec: Specifies the audio codec to use when transcoding the video's audio stream. In the example given above, we use ffmpeg's muxers to copy the audio stream as is, untouched.
(g). -vcodec: Selects the video encoder to use. In this case, we selected h264_vaapi, our key point of interest here.
(h).-hwaccel vaapi: This instructs ffmpeg to use VAAPI based hardware accelerated decode (for supported codecs, see platform limits), and it can drastically lower the processor load during the process. Note that you should only use this option if your hardware supports hardware-accelerated decoding via VAAPI for the source fornat being encoded.
(i). Using the vaapi_scaler
in the video filters: It is possible to use Intel's QuickSync hardware via VAAPI for resize and scaling (when up-or downscaling the input source to a higher or lower resolution), using a filter snippet such as the one shown below:
vf 'format=nv12,hwupload,scale_vaapi=w=1920:h=1080'
You may specify a different resolution by changing the dimensions in =w=
and :h=
to suit your needs.
See an example of this filter snippet used above in the two-pass example in FFmpeg below.
(j). -hwaccel_output_format : This option should be used every time you declare the -hwaccel method as vaapi , so that the decode stage takes place entirely in hardware. This option generates decode output directly on VAAPI hardware surfaces, speeding up decode performance significantly.
You may confirm supported decode formats on your setup by running vainfo:
vainfo
Sample output on a Haswell testbed:
libva info: VA-API version 0.39.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_39
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.39 (libva 1.7.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Haswell Mobile - 1.7.0
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264MultiviewHigh : VAEntrypointVLD
VAProfileH264MultiviewHigh : VAEntrypointEncSlice
VAProfileH264StereoHigh : VAEntrypointVLD
VAProfileH264StereoHigh : VAEntrypointEncSlice
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc
VAProfileJPEGBaseline : VAEntrypointVLD
Supported encode formats are appended with the VAEntrypointEncSlice
fields, and all decode formats(s) for your SKU will be listed under the VAEntryPointVLD
and VAEntrypointVideoProc
fields.
To interpret the output above, we can learn that the Haswell SKU above supports VAAPI - based hardware-accelerated decode for H.264 Simple, Main and Stereo High profiles (I'd assume that the Stereo High profile infers to H.264's Multi-view coding encode mode, useful for encoding 3D Blurays and similar media, implying feature parity with Windows-based implementations where MVC encodes and decodes are supported by Intel QuickSync. Need to test that sometime).
The other arguments are pretty standard to FFmpeg and need no introduction :-)
You may also use extra options such as QP mode (for constant-rate quality encoding) with this codec in ffmpeg as shown:
ffmpeg -loglevel debug -vaapi_device /dev/dri/renderD128 -i "input file" -vf 'format=nv12,hwupload' -map 0:0 -map 0:1 -threads 8 -aspect 16:9 -y -f matroska -acodec copy -vcodec h264_vaapi -qp 19 -bf 2 "output file"
Here, you'll notice that we've added a few extra options to the arguments passed to the selected video encoder, h264_vaapi
, and they are as follows:
(a). -qp: This option selects Fixed QP of P frames, and is ignored if bit-rate is set instead. Particularly useful for CRF-based encodes where a constant quality is required without bit-rate constraints. For a standard reference, a QP value of ~18 gives an approximate visual quality value similar to lossless compression, and going higher (~51) will give you way worse visual quality.
(b). -bf: This option toggles the maximum number of B-frames (bi-directional) between P-(progressive) frames. You may pump this higher than the default (2) if your selected encoder profile is High or better. Recommended: Leave this at the default (2).
In my tests, it's also possible to do two-pass encoding with this encoder (h264_vaapi
) in ffmpeg, as illustrated in the example below:
ffmpeg -loglevel debug -hwaccel vaapi -hwaccel_output_format vaapi -i "input-file" -vaapi_device /dev/dri/renderD129 -vf 'format=nv12,hwupload,scale_vaapi=w=1920:h=1080' -pass 1 -qp:v 19 -b:v 10.5M -c:v h264_vaapi -bf 4 -threads 4 -aspect 16:9 -an -y -f mp4 "/dev/null" && ffmpeg -loglevel debug -hwaccel vaapi -hwaccel_output_format vaapi -i "phfx4k.mkv" -vaapi_device /dev/dri/renderD129 -vf 'format=nv12,hwupload,scale_vaapi=w=1920:h=1080' -pass 2 -acodec copy -c:v h264_vaapi -bf 4 -qp:v 19 -b:v 10.5M -threads 4 -aspect 16:9 -y -f mp4 "output.mp4"
Let's break that down:
With ffmpeg (and libav also), you must specify both passes sequentially (-pass 1 and -pass 2) because ffmpeg does not reiterate over input files for multiple passes. Secondly, this allows the user to tune the two-pass encoding as he/she sees fit, for example, by skipping audio processing in the first pass (-an) and only copying/muxing the audio stream from the input file's container specification into the output file's container (-acodec copy), as illustrated in the examples above.
And now we move on to libav's options for a similar encode:
avconv -v 55 -y -vaapi_device /dev/dri/renderD128 -hwaccel vaapi -hwaccel_output_format vaapi -i input.mkv \
-c:a copy -vf 'format=nv12|vaapi,hwupload' -c:v h264_vaapi -bf 2 -b 12500k output.mkv
Let's break down these arguments to their meaning:
(a) .-v : This defines avconv's verbosity level. This one is completely optional, though its' regarded as good practice to leave it enabled and set to a reasonable verbosity level as desired for troubleshooting and diagnostics purposes.
(b). -vaapi_device: This is important. You must select a valid VAAPI H/W context device to which you will upload textures to via hwupload, formatted in the NV12 colorspace. This points to a /dev/dri/render*_ file on your Linux system.
(c). -hwaccel: This option allows you to select the hardware - based accelerated decoding to use for the encode session. In our case above, we are picking vaapi as this has a positive impact on encoder performance. A nice freebie.
(d). -hwaccel_output_format : This option should be used every time you declare the -hwaccel method as vaapi , so that the decode stage takes place entirely in hardware. This option generates decode output directly on VAAPI hardware surfaces, speeding up decode performance significantly.
(e). -vf : This is an inbuilt libav option that allows you to specify video filter options to be passed to our encoder, in this case, h264_vaapi (Remember, we built this when we passed --enable-vaapi at the configuration stage). Here, we tell libav to convert all textures to one colorspace, NV12 (As it's the one accepted by Intel's QuickSync hardware encoder) and to also use hwupload, a libav intrinsic, that tells the program to asynchronously copy the converted pixel data to VAAPI's surfaces. This argument also includes the hardware accelerated decode output format we requested earlier, raw VAAPI hardware surfaces.
(f). -bf : Specifies the bframe setting to use. Sane values for Intel 's Quick Sync encode hardware should be between 2 and 4. Test and report back.
(g). -c:a: Specifies the audio codec to use when transcoding the video's audio stream. In the example given above, we use libav's muxers to copy the audio stream as is, untouched.
(h). -c:v: Selects the video encoder to use. In this case, we selected h264_vaapi, our key point of interest here. (i). -b: Selects the video stream's bitrate passed to the encoder, h264_vaapi.
You may see the original documentation on Libav's website here on build instructions, using the alternate hevc_vaapi on supported hardware, encoder limitations, caveats, etc.
If all well according to plan, your video file should be encoded to H.264, muxed into the selected container and be done with.
See the screen-shot library here.
You can always view the build configuration of your Ffmpeg pipeline at any times by running:
For FFmpeg:
lin@mjanja:~$ ffmpeg -buildconf
ffmpeg version N-80785-g0fd76d7 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.3.1 (Ubuntu 5.3.1-14ubuntu2.1) 20160413
configuration: --enable-nonfree --enable-gpl --enable-version3 --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-libfaac --enable-libfdk-aac --enable-libtheora --enable-libvpx --enable-libwebp --enable-opencl --enable-x11grab --enable-opengl --cpu=native --enable-nvenc --enable-vaapi --enable-vdpau --enable-ladspa --enable-libass --enable-libgsm --enable-libschroedinger --enable-libsmbclient --enable-libsoxr --enable-libspeex --enable-libssh --enable-libwavpack --enable-libxvid --enable-libx264 --enable-libx265 --enable-netcdf --enable-openal --enable-openssl --prefix=/apps/ffmpeg/git --enable-omx
libavutil 55. 27.100 / 55. 27.100
libavcodec 57. 48.101 / 57. 48.101
libavformat 57. 40.101 / 57. 40.101
libavdevice 57. 0.102 / 57. 0.102
libavfilter 6. 46.102 / 6. 46.102
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
libpostproc 54. 0.100 / 54. 0.100
configuration:
--enable-nonfree
--enable-gpl
--enable-version3
--enable-libass
--enable-libbluray
--enable-libmp3lame
--enable-libopencv
--enable-libopenjpeg
--enable-libopus
--enable-libfaac
--enable-libfdk-aac
--enable-libtheora
--enable-libvpx
--enable-libwebp
--enable-opencl
--enable-x11grab
--enable-opengl
--cpu=native
--enable-nvenc
--enable-vaapi
--enable-vdpau
--enable-ladspa
--enable-libass
--enable-libgsm
--enable-libschroedinger
--enable-libsmbclient
--enable-libsoxr
--enable-libspeex
--enable-libssh
--enable-libwavpack
--enable-libxvid
--enable-libx264
--enable-libx265
--enable-netcdf
--enable-openal
--enable-openssl
--prefix=/apps/ffmpeg/git
--enable-omx
On help and documentation:
List all formats:
ffmpeg -formats
Display options specific to, and information about, a particular muxer:
ffmpeg -h muxer=matroska
Display options specific to, and information about, a particular demuxer:
ffmpeg -h demuxer=gif
Codecs (encoders and decoders):
List all codecs:
ffmpeg -codecs
List all encoders:
ffmpeg -encoders
List all decoders:
ffmpeg -decoders
Display options specific to, and information about, a particular encoder:
ffmpeg -h encoder=mpeg4
Display options specific to, and information about, a particular decoder:
ffmpeg -h decoder=aac
Reading the results
There is a key near the top of the output that describes each letter that precedes the name of the format, encoder, decoder, or codec:
$ ffmpeg -encoders
[…]
Encoders:
V..... = Video
A..... = Audio
S..... = Subtitle
.F.... = Frame-level multithreading
..S... = Slice-level multithreading
...X.. = Codec is experimental
....B. = Supports draw_horiz_band
.....D = Supports direct rendering method 1
------
[…]
V.S... mpeg4 MPEG-4 part 2
In this example V.S... indicates that the encoder mpeg4 is a Video encoder and supports Slice-level multithreading.
Extra notes for AMD hardware supporting VCE:
If you have a supported GCN+ AMD GPU running on Linux with the mesa driver stack, you may be able to use the AMD VCE Block via VAAPI with an example such as the one shown below:
DRI_PRIME=1 LIBVA_DRIVER_NAME=radeonsi ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 -hwaccel_output_format vaapi \
-framerate 30 -video_size 1920x1200 -f x11grab -i :0.0 -f pulse -ac 2 -i 1 \
-vf 'format=nv12,hwupload' -threads 8 \
-vcodec h264_vaapi -bf 0 -acodec pcm_s16le output.mkv
Where we capture from the screen via x11grab
and the audio from a pulseaudio
device.
You must set the LIBVA_DRIVER_NAME
and the DRI_PRIME=1
environment variables to radeonsi
prior to using VAAPI on VCE, and ensure that the -vaapi_device
points to the correct renderer.
Note that with AMD hardware, we generally disable B-Frame support as newer SKUs such as the RX 460/470/480 and their rebrands (Polaris-based) do not support B-Frames in H.264 encoding. See this issue on Github for more details.
Sure
pas@pas-To-be-filled-by-O-E-M:$ sudo ./ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 -rtsp_flags listen -threads:v 2 -threads:a 4 -filter_complex_threads 4 -filter_threads 4 -i rtsp://0.0.0.0:2222/live.sdp -filter_complex "[0:v]split=2[a][b]; [a]format=nv12|vaapi,hwupload,scale_vaapi=w=1280:h=720[k0]; [b]format=nv12|vaapi,hwupload,scale_vaapi=w=1080:h=720[k1]" -c:a aac -b: a:0 512k -b : a:1 256k -b: v:0 4000k -minrate: v:0 4000k -maxrate : v:0 4000k -bufsize: v:0 533k -c: v:0 hevc_vaapi -qp: v:0 19 -profile: v:0 high -rc_mode: v:0 2 -level: v:0 4.1 -r: v :0 29.970 -g: v:0 60 -bf: v:0 3 -b: v:1 2500k -minrate: v:1 2500k -maxrate: v:1 2500k -bufsize: v:1 333k -c: v:1 hevc_vaapi -qp: v:1 19 -profile: v:1 high -rc_mode: v:1 2 -level: v:1 4.1 -r : v:0 29.970 -g: v:0 60 -bf: v:1 3 -flags +global_header+low_delay -fflags +genpts -map "[k0]" -map "[k1]" -map 0:a -map 0:a -f hls -hls_init_time 3 -hls_list_size 10 -hls_flags delete_segments -var_stream_map "v:0,a:0 v:1,a:1" -master_pl_name "new.m3u8" -hls_segment_filename "/var/www/html/v-%d-%v.ts" "/var/www/html/v_%v.m3u8" -loglevel debug
ffmpeg version N-93468-g6bc800d Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-27ubuntu1~18.04)
configuration: --prefix=/home/pas/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/pas/ffmpeg_build/include --extra-ldflags=-L/home/pas/ffmpeg_build/lib --extra-libs='-lpthread -lm' --bindir=/home/pas/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
libavutil 56. 26.100 / 56. 26.100
libavcodec 58. 47.105 / 58. 47.105
libavformat 58. 26.101 / 58. 26.101
libavdevice 58. 7.100 / 58. 7.100
libavfilter 7. 48.100 / 7. 48.100
libswscale 5. 4.100 / 5. 4.100
libswresample 3. 4.100 / 3. 4.100
libpostproc 55. 4.100 / 55. 4.100
Splitting the commandline.
Reading option '-hwaccel' ... matched as option 'hwaccel' (use HW accelerated decoding) with argument 'vaapi'.
Reading option '-vaapi_device' ... matched as option 'vaapi_device' (set VAAPI hardware device (DRM path or X11 display name)) with argument '/dev/dri/renderD128'.
Reading option '-rtsp_flags' ... matched as AVOption 'rtsp_flags' with argument 'listen'.
Reading option '-threads:v' ... matched as AVOption 'threads :v' with argument '2'.
Reading option '-threads:a' ... matched as AVOption 'threads :a' with argument '4'.
Reading option '-filter_complex_threads' ... matched as option 'filter_complex_threads' (number of threads for -filter_complex) with argument '4'.
Reading option '-filter_threads' ... matched as option 'filter_threads' (number of non-complex filter threads) with argument '4'.
Reading option '-i' ... matched as input url with argument 'rtsp://0.0.0.0:2222/live.sdp'.
Reading option '-filter_complex' ... matched as option 'filter_complex' (create a complex filtergraph) with argument '[0:v]split=2[a][b]; [a]format=nv12|vaapi,hwupload,scale_vaapi=w=1280:h=720[k0]; [b]format=nv12|vaapi,hwupload,scale_vaapi=w=1080:h=720[k1]'.
Reading option '-c: a' ... matched as option 'c' (codec name) with argument 'aac'.
Reading option '-b : a:0' ... matched as option 'b' (video bitrate (please use -b :v)) with argument '512k'.
Reading option '-b : a:1' ... matched as option 'b' (video bitrate (please use -b :v)) with argument '256k'.
Reading option '-b: v:0' ... matched as option 'b' (video bitrate (please use -b :v)) with argument '4000k'.
Reading option '-minrate: v:0' ... matched as AVOption 'minrate: v:0' with argument '4000k'.
Reading option '-maxrate: v:0' ... matched as AVOption 'maxrate: v:0' with argument '4000k'.
Reading option '-bufsize: v:0' ... matched as AVOption 'bufsize: v:0' with argument '533k'.
Reading option '-c: v:0' ... matched as option 'c' (codec name) with argument 'hevc_vaapi'.
Reading option '-qp: v:0' ... matched as AVOption 'qp: v:0' with argument '19'.
Reading option '-profile: v:0' ... matched as option 'profile' (set profile) with argument 'high'.
Reading option '-rc_mode: v:0' ... matched as AVOption 'rc_mode: v:0' with argument '2'.
Reading option '-level: v:0' ... matched as AVOption 'level: v:0' with argument '4.1'.
Reading option '-r: v:0' ... matched as option 'r' (set frame rate (Hz value, fraction or abbreviation)) with argument '29.970'.
Reading option '-g: v:0' ... matched as AVOption 'g: v:0' with argument '60'.
Reading option '-bf: v:0' ... matched as AVOption 'bf: v:0' with argument '3'.
Reading option '-b: v:1' ... matched as option 'b' (video bitrate (please use -b: v)) with argument '2500k'.
Reading option '-minrate: v:1' ... matched as AVOption 'minrate: v:1' with argument '2500k'.
Reading option '-maxrate: v:1' ... matched as AVOption 'maxrate: v:1' with argument '2500k'.
Reading option '-bufsize: v:1' ... matched as AVOption 'bufsize: v:1' with argument '333k'.
Reading option '-c: v:1' ... matched as option 'c' (codec name) with argument 'hevc_vaapi'.
Reading option '-qp: v:1' ... matched as AVOption 'qp: v:1' with argument '19'.
Reading option '-profile: v:1' ... matched as option 'profile' (set profile) with argument 'high'.
Reading option '-rc_mode: v:1' ... matched as AVOption 'rc_mode: v:1' with argument '2'.
Reading option '-level: v:1' ... matched as AVOption 'level: v:1' with argument '4.1'.
Reading option '-r:v :0' ... matched as option 'r' (set frame rate (Hz value, fraction or abbreviation)) with argument '29.970'.
Reading option '-g:v :0' ... matched as AVOption 'g: v:0' with argument '60'.
Reading option '-bf: v:1' ... matched as AVOption 'bf: v:1' with argument '3'.
Reading option '-flags' ... matched as AVOption 'flags' with argument '+global_header+low_delay'.
Reading option '-fflags' ... matched as AVOption 'fflags' with argument '+genpts'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '[k0]'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '[k1]'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '0:a'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '0:a'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'hls'.
Reading option '-hls_init_time' ... matched as AVOption 'hls_init_time' with argument '3'.
Reading option '-hls_list_size' ... matched as AVOption 'hls_list_size' with argument '10'.
Reading option '-hls_flags' ... matched as AVOption 'hls_flags' with argument 'delete_segments'.
Reading option '-var_stream_map' ... matched as AVOption 'var_stream_map' with argument 'v:0,a:0 v:1,a:1'.
Reading option '-master_pl_name' ... matched as AVOption 'master_pl_name' with argument 'new.m3u8'.
Reading option '-hls_segment_filename' ... matched as AVOption 'hls_segment_filename' with argument '/var/www/html/v-%d-%v.ts'.
Reading option '/var/www/html/v_%v.m3u8' ... matched as output url.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option vaapi_device (set VAAPI hardware device (DRM path or X11 display name)) with argument /dev/dri/renderD128.
[AVHWDeviceContext @ 0x55c0238b8200] Opened VA display via DRM device /dev/dri/renderD128.
[AVHWDeviceContext @ 0x55c0238b8200] libva: VA-API version 1.1.0
[AVHWDeviceContext @ 0x55c0238b8200] libva: va_getDriverName() returns 0
[AVHWDeviceContext @ 0x55c0238b8200] libva: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
[AVHWDeviceContext @ 0x55c0238b8200] libva: Found init function __vaDriverInit_1_1
[AVHWDeviceContext @ 0x55c0238b8200] libva: va_openDriver() returns 0
[AVHWDeviceContext @ 0x55c0238b8200] Initialised VAAPI connection: version 1.1
[AVHWDeviceContext @ 0x55c0238b8200] Format 0x32315659 -> yuv420p.
[AVHWDeviceContext @ 0x55c0238b8200] Format 0x30323449 -> yuv420p.
[AVHWDeviceContext @ 0x55c0238b8200] Format 0x3231564e -> nv12.
[AVHWDeviceContext @ 0x55c0238b8200] Format 0x32595559 -> yuyv422.
[AVHWDeviceContext @ 0x55c0238b8200] Format 0x59565955 -> uyvy422.
[AVHWDeviceContext @ 0x55c0238b8200] Format 0x48323234 -> yuv422p.
[AVHWDeviceContext @ 0x55c0238b8200] Format 0x58424752 -> rgb0.
[AVHWDeviceContext @ 0x55c0238b8200] Format 0x58524742 -> bgr0.
[AVHWDeviceContext @ 0x55c0238b8200] Format 0x30313050 -> p010le.
[AVHWDeviceContext @ 0x55c0238b8200] VAAPI driver: Intel i965 driver for Intel(R) Skylake - 2.1.0.
[AVHWDeviceContext @ 0x55c0238b8200] Driver not found in known nonstandard list, using standard behaviour.
Applying option filter_complex_threads (number of threads for -filter_complex) with argument 4.
Applying option filter_threads (number of non-complex filter threads) with argument 4.
Applying option filter_complex (create a complex filtergraph) with argument [0:v]split=2[a][b]; [a]format=nv12|vaapi,hwupload,scale_vaapi=w=1280:h=720[k0]; [b]format=nv12|vaapi,hwupload,scale_vaapi=w=1080:h=720[k1].
Applying option loglevel (set logging level) with argument debug.
Successfully parsed a group of options.
Parsing a group of options: input url rtsp://0.0.0.0:2222/live.sdp.
Applying option hwaccel (use HW accelerated decoding) with argument vaapi.
Successfully parsed a group of options.
Opening an input file: rtsp://0.0.0.0:2222/live.sdp.
[tcp @ 0x55c0238dbf80] No default whitelist set
[rtsp @ 0x55c0238d9d40] SDP: v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 127.0.0.1
t=0 0
a=tool:libavformat 58.26.101
m=video 0 RTP/AVP 96
a=rtpmap:96 H265/90000
a=fmtp:96 sprop-vps=QAEMAf//AWAAAAMAkAAAAwAAAwB4ugJA; sprop-sps=QgEBAWAAAAMAkAAAAwAAAwB4oAPAgBEHy5bpKTC8BAQAAAMABAAAAwBkIA==; sprop-pps=RAHAcYMS
a=control:streamid=0
m=audio 0 RTP/AVP 97
b=AS:96
a=rtpmap:97 MPEG4-GENERIC/48000/2
a=fmtp:97 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3; config=119056E500
a=control:streamid=1
[rtsp @ 0x55c0238d9d40] video codec set to: hevc
[rtsp @ 0x55c0238d9d40] audio codec set to: aac
[rtsp @ 0x55c0238d9d40] audio samplerate set to: 48000
[rtsp @ 0x55c0238d9d40] audio channels set to: 2
[rtsp @ 0x55c0238d9d40] setting jitter buffer size to 0
Last message repeated 1 times
Failed to parse interval end specification ''
[hevc @ 0x55c0238dd400] nal_unit_type: 32(VPS), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0x55c0238dd400] nal_unit_type: 33(SPS), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0x55c0238dd400] nal_unit_type: 34(PPS), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0x55c0238dd400] Decoding VPS
[hevc @ 0x55c0238dd400] Main profile bitstream
[hevc @ 0x55c0238dd400] Decoding SPS
[hevc @ 0x55c0238dd400] Main profile bitstream
[hevc @ 0x55c0238dd400] Decoding VUI
[hevc @ 0x55c0238dd400] Decoding PPS
[hevc @ 0x55c0238dd400] nal_unit_type: 32(VPS), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0x55c0238dd400] nal_unit_type: 33(SPS), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0x55c0238dd400] nal_unit_type: 34(PPS), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0x55c0238dd400] Decoding VPS
[hevc @ 0x55c0238dd400] Main profile bitstream
[hevc @ 0x55c0238dd400] Decoding SPS
[hevc @ 0x55c0238dd400] Main profile bitstream
[hevc @ 0x55c0238dd400] Decoding VUI
[hevc @ 0x55c0238dd400] Decoding PPS
[hevc @ 0x55c0238dd400] nal_unit_type: 20(IDR_N_LP), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0x55c0238dd400] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0, temporal_id: 0
Last message repeated 1 times
[rtsp @ 0x55c0238d9d40] first_dts -6990 not matching first dts NOPTS (pts NOPTS, duration 3600) in the queue
[hevc @ 0x55c0238dd400] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0, temporal_id: 0
Last message repeated 18 times
[rtsp @ 0x55c0238d9d40] All info found
Input #0, rtsp, from 'rtsp://0.0.0.0:2222/live.sdp':
Metadata:
title : No Name
Duration: N/A, start: -0.139000, bitrate: N/A
Stream #0:0, 22, 1/90000: Video: hevc (Main), 1 reference frame, yuv420p(tv), 1920x1080 (1920x1088) [SAR 1:1 DAR 16:9], 0/1, 25 fps, 25 tbr, 90k tbn, 25 tbc
Stream #0:1, 42, 1/48000: Audio: aac (LC), 48000 Hz, stereo, fltp
Successfully opened the file.
[Parsed_split_0 @ 0x55c0238e6380] Setting 'outputs' to value '2'
[Parsed_format_1 @ 0x55c0238e2f40] Setting 'pix_fmts' to value 'nv12|vaapi'
[Parsed_scale_vaapi_3 @ 0x55c0238f0d40] Setting 'w' to value '1280'
[Parsed_scale_vaapi_3 @ 0x55c0238f0d40] Setting 'h' to value '720'
[Parsed_format_4 @ 0x55c0238efd40] Setting 'pix_fmts' to value 'nv12|vaapi'
[Parsed_scale_vaapi_6 @ 0x55c0238f3940] Setting 'w' to value '1080'
[Parsed_scale_vaapi_6 @ 0x55c0238f3940] Setting 'h' to value '720'
Parsing a group of options: output url /var/www/html/v_%v.m3u8.
Applying option c :a (codec name) with argument aac.
Applying option b : a:0 (video bitrate (please use -b :v)) with argument 512k.
Applying option b : a:1 (video bitrate (please use -b :v)) with argument 256k.
Applying option b: v:0 (video bitrate (please use -b :v)) with argument 4000k.
Applying option c: v:0 (codec name) with argument hevc_vaapi.
Applying option profile: v:0 (set profile) with argument high.
Applying option r: v:0 (set frame rate (Hz value, fraction or abbreviation)) with argument 29.970.
Applying option b: v:1 (video bitrate (please use -b:v)) with argument 2500k.
Applying option c: v:1 (codec name) with argument hevc_vaapi.
Applying option profile: v:1 (set profile) with argument high.
Applying option r: v:0 (set frame rate (Hz value, fraction or abbreviation)) with argument 29.970.
Applying option map (set input stream mapping) with argument [k0].
Applying option map (set input stream mapping) with argument [k1].
Applying option map (set input stream mapping) with argument 0:a.
Last message repeated 1 times
Applying option f (force format) with argument hls.
Successfully parsed a group of options.
Opening an output file: /var/www/html/v_%v.m3u8.
Successfully opened the file.
[hevc @ 0x55c023947e80] nal_unit_type: 32(VPS), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0x55c023947e80] nal_unit_type: 33(SPS), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0x55c023947e80] nal_unit_type: 34(PPS), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0x55c023947e80] Decoding VPS
[hevc @ 0x55c023947e80] Main profile bitstream
[hevc @ 0x55c023947e80] Decoding SPS
[hevc @ 0x55c023947e80] Main profile bitstream
[hevc @ 0x55c023947e80] Decoding VUI
[hevc @ 0x55c023947e80] Decoding PPS
Stream mapping:
Stream #0:0 (hevc) -> split (graph 0)
scale_vaapi (graph 0) -> Stream #0:0 (hevc_vaapi)
scale_vaapi (graph 0) -> Stream #0:1 (hevc_vaapi)
Stream #0:1 -> #0:2 (aac (native) -> aac (native))
Stream #0:1 -> #0:3 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
cur_dts is invalid (this is harmless if it occurs once at the start per stream)
Last message repeated 1 times
[hevc @ 0x55c023947e80] nal_unit_type: 20(IDR_N_LP), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0x55c023947e80] Format vaapi_vld chosen by get_format().
[hevc @ 0x55c023947e80] Format vaapi_vld requires hwaccel initialisation.
[hevc @ 0x55c023947e80] Considering format 0x3231564e -> nv12.
[hevc @ 0x55c023947e80] Picked nv12 (0x3231564e) as best match for yuv420p.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x4000000.
[AVHWFramesContext @ 0x7fe4940d0b40] Direct mapping disabled: derived image format 3231564e does not match expected format 32315659.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x4000001.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x4000002.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x4000003.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x4000004.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x4000005.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x4000006.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x4000007.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x4000008.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x4000009.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x400000a.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x400000b.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x400000c.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x400000d.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x400000e.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x400000f.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x4000010.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x4000011.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x4000012.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x4000013.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x4000014.
[AVHWFramesContext @ 0x7fe4940d0b40] Created surface 0x4000015.
[hevc @ 0x55c023947e80] Considering format 0x3231564e -> nv12.
[hevc @ 0x55c023947e80] Picked nv12 (0x3231564e) as best match for yuv420p.
[hevc @ 0x55c023947e80] Decode context initialised: 0x1000000/0x2000000.
[hevc @ 0x55c023947e80] Output frame with POC 0.
[hevc @ 0x55c023947e80] Param buffer (type 0, 604 bytes) is 0x8000000.
[hevc @ 0x55c023947e80] Slice 0 param buffer (264 bytes) is 0x8000001.
[hevc @ 0x55c023947e80] Slice 0 data buffer (7382 bytes) is 0x8000002.
[hevc @ 0x55c023947e80] Decode to surface 0x4000015.
[AVHWFramesContext @ 0x7fe4940d0b40] Map surface 0x4000015.
[hevc @ 0x55c023903a00] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0x55c023903a00] Output frame with POC 1.
[hevc @ 0x55c023903a00] Param buffer (type 0, 604 bytes) is 0x8000001.
[hevc @ 0x55c023903a00] Slice 0 param buffer (264 bytes) is 0x8000000.
[hevc @ 0x55c023903a00] Slice 0 data buffer (615 bytes) is 0x8000003.
[hevc @ 0x55c023903a00] Decode to surface 0x4000014.
[AVHWFramesContext @ 0x7fe4940d0b40] Unmap surface 0x4000015.
[Parsed_split_0 @ 0x55c023ad7840] Setting 'outputs' to value '2'
[Parsed_format_1 @ 0x55c023ae4880] Setting 'pix_fmts' to value 'nv12|vaapi'
[Parsed_scale_vaapi_3 @ 0x55c023ae5380] Setting 'w' to value '1280'
[Parsed_scale_vaapi_3 @ 0x55c023ae5380] Setting 'h' to value '720'
[Parsed_format_4 @ 0x55c023ae5d80] Setting 'pix_fmts' to value 'nv12|vaapi'
[Parsed_scale_vaapi_6 @ 0x55c023ae7000] Setting 'w' to value '1080'
[Parsed_scale_vaapi_6 @ 0x55c023ae7000] Setting 'h' to value '720'
[graph 0 input from stream 0:0 @ 0x55c023ae8080] Setting 'video_size' to value '1920x1080'
[graph 0 input from stream 0:0 @ 0x55c023ae8080] Setting 'pix_fmt' to value '23'
[graph 0 input from stream 0:0 @ 0x55c023ae8080] Setting 'time_base' to value '1/90000'
[graph 0 input from stream 0:0 @ 0x55c023ae8080] Setting 'pixel_aspect' to value '1/1'
[graph 0 input from stream 0:0 @ 0x55c023ae8080] Setting 'sws_param' to value 'flags=2'
[graph 0 input from stream 0:0 @ 0x55c023ae8080] Setting 'frame_rate' to value '25/1'
[graph 0 input from stream 0:0 @ 0x55c023ae8080] w:1920 h:1080 pixfmt:nv12 tb:1/90000 fr:25/1 sar:1/1 sws_param:flags=2
[format @ 0x55c023ae44c0] Setting 'pix_fmts' to value 'vaapi_vld'
[format @ 0x55c023ae6ec0] Setting 'pix_fmts' to value 'vaapi_vld'
[AVFilterGraph @ 0x55c0238e6240] query_formats: 12 queried, 11 merged, 0 already done, 0 delayed
[hwupload @ 0x55c023ae6900] Surface format is nv12.
[AVHWFramesContext @ 0x55c023aedd00] Created surface 0x4000016.
[AVHWFramesContext @ 0x55c023aedd00] Direct mapping possible.
[AVHWFramesContext @ 0x55c023aeef40] Created surface 0x4000017.
[AVHWFramesContext @ 0x55c023aeef40] Direct mapping possible.
[AVHWFramesContext @ 0x55c023aeef40] Created surface 0x4000018.
[AVHWFramesContext @ 0x55c023aeef40] Created surface 0x4000019.
[AVHWFramesContext @ 0x55c023aeef40] Created surface 0x400001a.
[AVHWFramesContext @ 0x55c023aeef40] Created surface 0x400001b.
[AVHWFramesContext @ 0x55c023aeef40] Created surface 0x400001c.
[AVHWFramesContext @ 0x55c023aeef40] Created surface 0x400001d.
[AVHWFramesContext @ 0x55c023aeef40] Created surface 0x400001e.
[AVHWFramesContext @ 0x55c023aeef40] Created surface 0x400001f.
[AVHWFramesContext @ 0x55c023aeef40] Created surface 0x4000020.
[hwupload @ 0x55c023914b80] Surface format is nv12.
[AVHWFramesContext @ 0x55c023ae7ac0] Created surface 0x4000021.
[AVHWFramesContext @ 0x55c023ae7ac0] Direct mapping possible.
[AVHWFramesContext @ 0x55c023ae5ac0] Created surface 0x4000022.
[AVHWFramesContext @ 0x55c023ae5ac0] Direct mapping possible.
[AVHWFramesContext @ 0x55c023ae5ac0] Created surface 0x4000023.
[AVHWFramesContext @ 0x55c023ae5ac0] Created surface 0x4000024.
[AVHWFramesContext @ 0x55c023ae5ac0] Created surface 0x4000025.
[AVHWFramesContext @ 0x55c023ae5ac0] Created surface 0x4000026.
[AVHWFramesContext @ 0x55c023ae5ac0] Created surface 0x4000027.
[AVHWFramesContext @ 0x55c023ae5ac0] Created surface 0x4000028.
[AVHWFramesContext @ 0x55c023ae5ac0] Created surface 0x4000029.
[AVHWFramesContext @ 0x55c023ae5ac0] Created surface 0x400002a.
[AVHWFramesContext @ 0x55c023ae5ac0] Created surface 0x400002b.
[AVHWFramesContext @ 0x55c023ae7ac0] Map surface 0x4000021.
[AVHWFramesContext @ 0x55c023ae7ac0] Unmap surface 0x4000021.
[Parsed_scale_vaapi_3 @ 0x55c023ae5380] Filter input: vaapi_vld, 1920x1080 (0).
[Parsed_scale_vaapi_3 @ 0x55c023ae5380] Using surface 0x4000021 for scale input.
[Parsed_scale_vaapi_3 @ 0x55c023ae5380] Using surface 0x400002b for scale output.
[Parsed_scale_vaapi_3 @ 0x55c023ae5380] Pipeline parameter buffer is 0x8000002.
[Parsed_scale_vaapi_3 @ 0x55c023ae5380] Filter output: vaapi_vld, 1280x720 (0), mode: HQ.
[AVHWFramesContext @ 0x55c023aedd00] Map surface 0x4000016.
[AVHWFramesContext @ 0x55c023aedd00] Unmap surface 0x4000016.
[Parsed_scale_vaapi_6 @ 0x55c023ae7000] Filter input: vaapi_vld, 1920x1080 (0).
[Parsed_scale_vaapi_6 @ 0x55c023ae7000] Using surface 0x4000016 for scale input.
[Parsed_scale_vaapi_6 @ 0x55c023ae7000] Using surface 0x4000020 for scale output.
[Parsed_scale_vaapi_6 @ 0x55c023ae7000] Pipeline parameter buffer is 0x8000002.
[Parsed_scale_vaapi_6 @ 0x55c023ae7000] Filter output: vaapi_vld, 1080x720 (0), mode: HQ.
[h265_vaapi @ 0x7fe49d260040] [Eval @ 0x7ffc773a5220] Undefined constant or missing '(' in 'high'
[h265_vaapi @ 0x7fe49d260040] Unable to parse option value "high"
[h265_vaapi @ 0x7fe49d260040] Error setting option profile to value high.
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!
Output #0, rtsp, to 'rtsp://0.0.0.0:2222/live.sdp':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.26.101
Stream #0:0(und), 0, 1/90000: Video: hevc (libx265), 1 reference frame, yuv420p(left), 1920x1080 [SAR 1:1 DAR 16:9], 0/1, q=2-31, 25 fps, 90k tbn, 25 tbc (default)
Metadata:
handler_name : ISO Media file produced by Google Inc. Created on: 03/29/2019.
encoder : Lavc58.47.105 libx265
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #0:1(eng), 0, 1/48000: Audio: aac (LC), 48000 Hz, stereo, fltp, delay 1024, 96 kb/s (default)
Metadata:
handler_name : ISO Media file produced by Google Inc. Created on: 03/29/2019.
encoder : Lavc58.47.105 aac
Clipping frame in rate conversion by 0.000008
cur_dts is invalid (this is harmless if it occurs once at the start per stream)
Last message repeated 2 times
[h264 @ 0x55c46586f880] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
cur_dts is invalid (this is harmless if it occurs once at the start per stream)
Last message repeated 2 times
[h264 @ 0x55c4656c8b00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 2
[rtp @ 0x55c465f68e40] Sending NAL 8 of len 7381 M=1
[rtp @ 0x55c465f68e40] NAL size 7381 > 1460
[h264 @ 0x55c465732800] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 614 M=1
[h264 @ 0x55c465821380] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 990 M=1
[h264 @ 0x55c4656edec0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 2
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 1392 M=1
[h264 @ 0x55c46586f880] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 1949 M=1
[rtp @ 0x55c465f68e40] NAL size 1949 > 1460
[h264 @ 0x55c4656c8b00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 2
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 2282 M=1
[rtp @ 0x55c465f68e40] NAL size 2282 > 1460
[h264 @ 0x55c465732800] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 2019 M=1
[rtp @ 0x55c465f68e40] NAL size 2019 > 1460
[h264 @ 0x55c465821380] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 2176 M=1
[rtp @ 0x55c465f68e40] NAL size 2176 > 1460
[h264 @ 0x55c4656edec0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 2
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 3690 M=1
[rtp @ 0x55c465f68e40] NAL size 3690 > 1460
[h264 @ 0x55c46586f880] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 3161 M=1
[rtp @ 0x55c465f68e40] NAL size 3161 > 1460
[h264 @ 0x55c4656c8b00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 3902 M=1
[rtp @ 0x55c465f68e40] NAL size 3902 > 1460
[h264 @ 0x55c465732800] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 2
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 3690 M=1
[rtp @ 0x55c465f68e40] NAL size 3690 > 1460
[h264 @ 0x55c465821380] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 4344 M=1
[rtp @ 0x55c465f68e40] NAL size 4344 > 1460
[h264 @ 0x55c4656edec0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 4786 M=1
[rtp @ 0x55c465f68e40] NAL size 4786 > 1460
[h264 @ 0x55c46586f880] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 2
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 6049 M=1
[rtp @ 0x55c465f68e40] NAL size 6049 > 1460
[h264 @ 0x55c4656c8b00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 5907 M=1
[rtp @ 0x55c465f68e40] NAL size 5907 > 1460
[h264 @ 0x55c465732800] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 2
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 4360 M=1
[rtp @ 0x55c465f68e40] NAL size 4360 > 1460
[h264 @ 0x55c465821380] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 4206 M=1
[rtp @ 0x55c465f68e40] NAL size 4206 > 1460
[h264 @ 0x55c4656edec0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 2
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 3678 M=1
[rtp @ 0x55c465f68e40] NAL size 3678 > 1460
[h264 @ 0x55c46586f880] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 4295 M=1
[rtp @ 0x55c465f68e40] NAL size 4295 > 1460
[h264 @ 0x55c4656c8b00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 2
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 3561 M=1
[rtp @ 0x55c465f68e40] NAL size 3561 > 1460
[h264 @ 0x55c465732800] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 4098 M=1
[rtp @ 0x55c465f68e40] NAL size 4098 > 1460
[h264 @ 0x55c465821380] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 2
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 4160 M=1
[rtp @ 0x55c465f68e40] NAL size 4160 > 1460
[h264 @ 0x55c4656edec0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
[rtp @ 0x55c465f68e40] Sending NAL 2 of len 4320 M=1
[rtp @ 0x55c465f68e40] NAL size 4320 > 1460
[h264 @ 0x55c46586f880] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 2
av_interleaved_write_frame(): Broken pipe
No more output streams to write to, finishing.
av_interleaved_write_frame(): Broken pipe
Error writing trailer of rtsp://0.0.0.0:2222/live.sdp: Broken pipe
frame= 27 fps=0.0 q=-0.0 Lsize=N/A time=00:00:01.17 bitrate=N/A speed=1.74x
video:89kB audio:14kB subtitle:0kB other streams:0kB global headers:2kB muxing overhead: unknown
Input file #0 (/home/pas/Downloads/angry.mp4):
Input stream #0:0 (video): 32 packets read (131732 bytes); 28 frames decoded;
Input stream #0:1 (audio): 52 packets read (19843 bytes); 52 frames decoded (53248 samples);
Total: 84 packets (151575 bytes) demuxed
Output file #0 (rtsp://0.0.0.0:2222/live.sdp):
Output stream #0:0 (video): 27 frames encoded; 25 packets muxed (91489 bytes);
Output stream #0:1 (audio): 56 frames encoded (57344 samples); 56 packets muxed (14844 bytes);
Total: 81 packets (106333 bytes) muxed
80 frames successfully decoded, 0 decoding errors
x265 [info]: frame I: 1, Avg QP:25.09 kb/s: 1476.20
x265 [info]: frame P: 26, Avg QP:24.31 kb/s: 720.17
x265 [info]: consecutive B-frames: 100.0%
encoded 27 frames in 0.65s (41.22 fps), 748.17 kb/s, Avg QP:24.34
[aac @ 0x55c4656f0100] Qavg: 6812.111
[AVIOContext @ 0x55c465698640] Statistics: 500410 bytes read, 2 seeks
Conversion failed!
pas@pas-To-be-filled-by-O-E-M:~$