Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds support for hardware-accelerated video encoding #30

Open
wants to merge 1 commit into
base: master
from

Conversation

@timothybasanov
Copy link

commented Dec 10, 2018

To enable hardware-accelerated video encoding add a new config option:
"vaapiDevice": "/dev/dri/renderD128" (Intel CPU example).
This would pass a new set of options to ffmpeg:
-hwaccel vaapi -hwaccel_output_format vaapi -vaapi_device /dev/dri/renderD128
and it would replace
-c:v libx264 -vf scale=1280:720 -threads 0 -tune zerolatency
with
-c:v h264_vaapi -vf format=nv12|vaapi,hwupload,scale_vaapi=w=720:h=480 -threads 1

Verified to work on Synology NAS DS718+ within Docker environment.
More details https://timothybasanov.com/2018/12/08/hardware-accelerated-h264-encoding-synology-nas.html
Gotchas: One needs to correctly pass devs into docker and give
access to a Homebridge's user.

Additional changes:

  • Support for audio encoding
  • Better logging integration with Homebridge
  • Logs from ffmpeg in Homebridge's logs
@timothybasanov

This comment has been minimized.

Copy link
Author

commented Dec 10, 2018

I intentionally did not update README, this is a beta feature and I want advanced users to try it first. Not sure how testing is done for this GitHub repo. Hope you can guide me.

Adds support for hardware-accelerated video encoding
To enable hardware-accelerated video encoding add a new config option:
`"vaapiDevice": "/dev/dri/renderD128"` (Intel CPU example).
This would pass a new set of options to ffmpeg:
`-hwaccel vaapi -hwaccel_output_format vaapi -vaapi_device /dev/dri/renderD128`
and it would replace
`-c:v libx264 -vf scale=1280:720 -threads 0`
with
`-c:v h264_vaapi -vf format=nv12|vaapi,hwupload,scale_vaapi=w=720:h=480 -profile:v 578 -bf 0`

Verified to work on Synology NAS DS718+ within Docker environment.
More details https://timothybasanov.com/2018/12/08/hardware-accelerated-h264-encoding-synology-nas.html
Gotchas: One needs to correctly pass devs into docker and give
access to a Homebridge's user.

Additional changes:
 - Support for audio encoding
 - Better logging integration with Homebridge
 - Logs from ffmpeg in Homebridge's logs

@timothybasanov timothybasanov force-pushed the timothybasanov:vaapi branch from 8773912 to f747008 Dec 10, 2018

@jmbwell

This comment has been minimized.

Copy link
Collaborator

commented Jan 12, 2019

I’m interested in this. I wish we didn’t have to know in advance what device provides DRM for vaapi. I don’t know much about probing for hardware acceleration capabilities. Is there a way to have ffmpeg do the right thing on any system, or are we going to be dependent on configuration, or what?

@glan

This comment has been minimized.

Copy link

commented Jan 17, 2019

Nice! I just about to buy a DS718+. A factor for that model was the possiblity of using hardware acceleration for homebridge-camera-ffmpeg feeds (something that more expensive Atom models lack). So I wondering if a simular change in that project should be made too. I might take a look once I have my device.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants
You can’t perform that action at this time.