If all the settings and versions match, my first suspicion would be that there's some library available on one system that gets used but not the other. Have you taken very verbose logs to see if there's differences that stand out?
Selfhosted
A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.
Rules:
-
Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.
-
No spam posting.
-
Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.
-
Don't duplicate the full text of your blog or github here. Just post the link for folks to click.
-
Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).
-
No trolling.
Resources:
- selfh.st Newsletter and index of selfhosted software and apps
- awesome-selfhosted software
- awesome-sysadmin resources
- Self-Hosted Podcast from Jupiter Broadcasting
Any issues on the community? Report it using the report flag.
Questions? DM the mods!
Have you taken very verbose logs to see if there’s differences that stand out?
Nope, but that could be a next step. I was hoping for an easy fix (like I did something wrong in the settings).
Realistically, if this can't be solved by using the built-in setting options, then it's not worth the trouble to "fix" anything. It still works, so I'm glad to have the option.
I had a few ideas, I’m suspicious that handbrake is falling back to CPU, maybe check the logs of the container to make sure it isn’t falling back to CPU decoding. Otherwise here are a few things I would check next:
- If you are not using docker locally so you are already doing this, you will need to configure the docker container to pass through the GPU for quicksync to work inside the container.
- If you are already doing that then I would make sure the device is the same name on the synology, it probably is but just to be sure.
- you will likely need to add your user to the video and/or render group on the synology if you haven’t, especially if you are running the container as your user instead of root
- make sure you are reading and writing to volumes that use bind mounts and not docker volumes, overlayfs is not what I would call fast and writing especially.
Thanks for the ideas.
GPU does seem to be passed onto the docker container, not only because of the dramatic increase in speed, but also because the CPU isn't being maxed out like it was before adding the GPU hardware line.
Volumes are bind mounts.
I experimented with permissions and user groups, and noticed no difference to the behaviour in render output.
For these videos, quality isn't super important, but file size is. I spent most of yesterday tweaking settings on my local Handbrake install to get the right balance. So, I assumed transferring the settings over would give the same results.
Are you running different versions of the software? (e.g. different versions of ffmpeg, maybe?)
Same version of Handbrake (1.9.2), but I'm not even sure how to check for the ffmpeg version on my NAS, or what Handbrake is using. The system panel in the Handbrake info window doesn't list ffmpeg at all.
IIRC, presets are machine dependent, or at least they are optimized for the hardware. So if you have a weak machine, veryfast will use even worse encoding because you're simply saying "I just want it done fast", while on a more robust machine it may take more liberties. To match it completely I think you need to disregard the presets and set everything yourself, like CRF and everything.
To match it completely I think you need to disregard the presets and set everything yourself, like CRF and everything.
Is there a way to disable the preset completely? There's no "none" option, just "speed, balanced, and quality", but I set everything else up manually.
Sorry I usually work directly with ffmpeg and that's how I had the hunch, those presets are h264 presets that go in. But does it matter, you said you were only curious, I think that's why, so now you know
What are the specs, hardware wise, of both your laptop and your nas?
The NAS (Synology DS920+):
- CPU: Intel Celeron J4125 4-core 2.0 GHz, burst up to 2.7 GHz
- RAM: upgraded to 20GB
- NVME cache: 256GB
- HDD are all Seagate ironwolf 8GB x 3 and a 4TB.
Laptop (Framework 13 11th Gen intel):
- CPU: Intel Core i5-1135G7 (integrated Iris Xe Graphics 80EU)
- RAM: 64GB
- Storage: 2TB WD Black 770
I would expect a difference in speed between the two, but does the hardware affect the output quality/size if the settings are identical?
but does the hardware affect the output quality/size if the settings are identical?
Yes, your laptop has a much newer quicksync block with proper HEVC hardware-
NAS is Gemini Lake, which uses QS from Broxton/Apollo Lake/Gemini Lake
Laptop is Tiger Lake, which uses about 3 versions newer QS, for Tiger Lake, Alder Lake and Raptor Lake.
Broxton QuickSync doesn't actually have an asic encoder path for HEVC, it's all via shaders.
I found my answer then! I appreciate that 👍
No problem :)
Why are you encoding a file that’s already been encoded?
Basically saving space. The dashcam I use records in h264, and I've been saving space (50%) by converting them to h265 (through my Samsung phone). Handbrake is far more convenient for these batch conversions.
Your settings are not 1 to 1 on both systems, you'll have to identify what "auto" means in each context, it's variable depending on where ffmpeg lives.
Unfortunately, the only other alternative to "auto" under Profile is "main", which I have no idea what it does.
And under level, it's either "auto" or a bunch of numbers.
That said, I was under the impression that any manual settings would override the settings in the "auto" profile. Is that not the case?