Hardware accelerated encoding using FFmpeg on Intel Atom based platform (UpBoard)

1

I am working with Intel UpBoard that has an Intel Atom CPU, and want to stream a video from a usb camera to a live stream service. Therefore I am running a h264 encoder that uses h264_qsv codec, which apparently cannot be found for this kind of processor. Tried also with libx264, but with this the CPU utilization is too high which makes it impossible to work.

What can i do in order to accelerated encoding using FFmpeg on Intel Atom based platform? Are there any other codecs I can try?

Thank you very much in advance! :)

Gil Brudner

Posted 2019-05-16T08:17:58.683

Reputation: 11

Answers

0

This CPU does not include the quicksync encoding primitives. It literally does not have the circuitry for hardware acceleration.

szatmary

Posted 2019-05-16T08:17:58.683

Reputation: 2 181

Hi @szatmary, thank you for assisting?

Can you please provide an article or an explanation on why it does not have the circuitry?

Thank you very much! – Gil Brudner – 2019-06-25T07:10:29.500

ark.intel.com list all cpu features. – szatmary – 2019-06-25T13:44:17.080

Thanks, however i could not find there info about hw acceleration. However, i do see at https://en.wikichip.org/wiki/intel/atom_x5/x5-z8350#Graphics that it should be supported, isn't it?

– Gil Brudner – 2019-06-25T13:52:20.683

It’s called “quicksync” and if it’s not listed, the CPU does not have it. – szatmary – 2019-06-25T13:53:18.623

Thank you very much szatmary!! Is there a "low cost" chip / board that you can recommend that will be good enough to encode and stream 2 videos from usb cameras? – Gil Brudner – 2019-06-25T16:16:30.457

Depends on the camera. Some cameras have encoders on board. RPI4 has usb 3 – szatmary – 2019-06-25T16:17:12.757

I have simple cameras: https://www.aliexpress.com/item/32233903219.html my use case is that I want to grab 2 feeds, encode them to h264 and stream to kinesis video stream. Tried UpBoard which does not support hw acceleration and RasperryPi which is too week.

– Gil Brudner – 2019-06-25T16:59:59.040

Raspberry pi 3 is definitely not too weak if you used the hardware acceleration. It may be that the USB could not transfer that much video though. That’s why I said try the 4. – szatmary – 2019-06-25T17:02:48.640

0

Dear @szatmary please look after the correct information, before you give a false answer, next time.

This board contains Z8350. If you were googling for z8350 and h.264, the first hit: https://en.wikichip.org/wiki/intel/atom_x5/x5-z8350

You see: "Video decode hardware acceleration including support for H.263, MPEG4, H.264, H.265 (HEVC,8bit), VP8, VP9, MVC, MPEG2, VC1, JPEG. Video encode hardware acceleration including support for H.264, H.263, VP8, MVC, JPEG."

Offical detailed datasheet: https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/atom-z8000-datasheet-vol-1.pdf

"—Video decode hardware acceleration including support for H.263, MPEG4, H.264, H.265 (HEVC), VP8, VP9, MVC, MPEG2, VC1, JPEG. —Video encode hardware acceleration including support for H.264, H.263, VP8, MVC, JPEG."

sz9

Posted 2019-05-16T08:17:58.683

Reputation: 1

Thank you for the downvoting...It is always easier to get offended :):):):) – sz9 – 2019-09-11T07:59:07.697

0

I don't know what superuser user szatmary is suggesting. I have been using quick sync with my cherry trail chips successfully using either OBS (RTMP) or direct FFMPEG with RTP / RTP_MPEGTS using H264. Intel GPUs have included quicksync from first generation i-series processors, so also all subsequent Atom processors have encoding capabilities. Now what comes to performance.. Intel says quicksync on Cherry Trail should be able to do 1080p120, but so far I have been able to properly only do 720p30/60 and 1080p30 in some use cases. I would like to know what is needed for unlocking full quick sync performance with ffmpeg too.

I recommend two sources for using FFMPEG that I've found very useful when using h264_qsv (also hevc_qsv, which works on core m -series processors)

nico-lab.net https://nico-lab.net/?s=h264_qsv and Brainiarc7's gists https://gist.github.com/Brainiarc7/7b6049aac3145927ae1cfeafc8f682c1

For h264_qsv encoder with scaling 1080p to 720p30 I have using been a ffmpeg command like this: ffmpeg -init_hw_device qsv=qsv:hw -hwaccel qsv -filter_hw_device qsv -f dshow -analyzeduration 30M -rtbufsize 512M -thread_queue_size 500 -probesize 20M -i video="Cam Link":audio="Digital Audio Interface (Cam Li" -vf vpp_qsv=w=1280:h=720,format=nv12,hwupload=extra_hw_frames=30 -c:v h264_qsv -preset:v veryfast -b:v 4500k -bufsize 2M -tune zerolatency -r 30 -c:a aac -b:a 192k -f rtp_mpegts rtp://yourserver.with.udp.ports.forwarded

rkantos

Posted 2019-05-16T08:17:58.683

Reputation: 131