Recognize MagicYUV sample entries in the built-in go-mp4 probe and consider the
probe's codec in addition to the metadata codec when applying the FFmpeg exclude
list, so a video can be matched even when one detector misses it. Rename the
shared sample-entry scan limit to CodecHeadScanLimit.
Also exclude the Matroska Video for Windows wrapper (v_ms/vfw/fourcc) by default,
since its actual codec is not exposed by metadata and the format is uncommon.
Add README files for the vaapi, intel, nvidia, and vulkan encoder packages
covering the FFmpeg flags, devices, supported formats, required system packages,
and FFmpeg 8 notes such as the VA-API filter-device requirement.
encode.FormatNV12 already ends in hwupload, so appending it again produced
"format=nv12,hwupload,hwupload", which fails because the frames are already on
the GPU. Build the filter from FormatNV12 directly to upload exactly once, and
add a gated Vulkan case to the transcode command tests.
The transcode tests gated their real hardware run on PHOTOPRISM_FFMPEG_ENCODER,
but the package init() unconditionally unset that variable, so the hardware path
never executed and an FFmpeg 8 regression like #5630 could pass unnoticed.
Switch the opt-in to a dedicated PHOTOPRISM_FFMPEG_TEST_ENCODER variable so real
VAAPI/QSV/NVENC transcodes run when enabled on a matching host, while a runtime
PHOTOPRISM_FFMPEG_ENCODER value still cannot trigger them by accident.
FFmpeg 8 no longer derives a filter hardware device from "-hwaccel
vaapi" alone, so the "format=nv12,hwupload" step aborts with "A hardware
device reference is required to upload frames to." and PhotoPrism falls
back to software encoding.
Initialize a named VAAPI device and reference it for both decoding
(-hwaccel_device) and filtering (-filter_hw_device). When no device path
is configured, FFmpeg auto-detects the default render node.
TODO: The (optional) video downscaling filter has been commented out
and must be re-added before releasing these changes.
Signed-off-by: Michael Mayer <michael@photoprism.app>
Related Issues:
- Samsung: Initial support for Motion Photos (#439)
- Google: Initial support for Motion Photos (#1739)
- Metadata: Flag Samsung/Google Motion Photos as Live Photos (#2788)
Related Pull Requests:
- Live Photos: Add Support for Samsung Motion Photos (#3588)
- Samsung: Improved support for Motion Photos (#3660)
- Google: Initial support for Motion Photos (#3709)
- Google: Add support for Motion Photos (#3722)
Signed-off-by: Michael Mayer <michael@photoprism.app>
See issue comments for details. This also introduces a package constant
for the default ffmpeg command name and updates the tests.
Signed-off-by: Michael Mayer <michael@photoprism.app>
* Adds resolution limit
* Fixes 2 video filters and makes the env variable work
* Adds FFMPEG_RESOLUTION to all the docker-compose files
* Makes the resolution based on the longer side
* Fixes failing test