fix(tracks): keep the Dolby Vision record when remuxing video with ffmpeg

The MP4 muxer drops dvcC/dvvC unless -strict unofficial is set, so a repacked DV track muxed as plain HEVC and lost its DV tag
This commit is contained in:
imSp4rky
2026-09-25 16:55:51 -06:00
parent c071a00ba6
commit 5838f2aed6
3 changed files with 38 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
"""Repackaging a video keeps its Dolby Vision configuration record."""
from __future__ import annotations
import subprocess
from pathlib import Path
import pytest
from langcodes import Language
from unshackle.core import binaries
from unshackle.core.tracks import Video
def test_repackage_asks_ffmpeg_to_keep_unofficial_boxes(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None:
source = tmp_path / "v.mp4"
source.write_bytes(b"\0")
calls: list[list[str]] = []
def fake_run(args: list, **kwargs: object) -> subprocess.CompletedProcess:
calls.append([str(a) for a in args])
Path(args[-1]).write_bytes(b"\0")
return subprocess.CompletedProcess(args, 0)
monkeypatch.setattr(binaries, "FFMPEG", "ffmpeg")
monkeypatch.setattr(subprocess, "run", fake_run)
video = Video(url="https://cdn.example/v.mp4", language=Language.get("en"))
video.path = source
video.repackage()
args = calls[0]
assert args[args.index("-strict") + 1] == "unofficial"
+2
View File
@@ -1160,6 +1160,8 @@ class Track:
"bitexact",
"-codec",
"copy",
"-strict",
"unofficial",
]
)
if bsf:
+4
View File
@@ -392,6 +392,8 @@ class Video(Track):
original_path,
"-codec",
"copy",
"-strict",
"unofficial",
"-bsf:v",
f"{filter_key}=video_full_range_flag={range_}",
str(output_path),
@@ -503,6 +505,8 @@ class Video(Track):
str(original_path),
"-codec",
"copy",
"-strict",
"unofficial",
"-bsf:v",
bsf,
str(output_path),