Есть решение без удлинения видеодорожки в файле и без вмешательства в плеер. Скрипт avisynth или vapoursynth, который нужно запускать в плеере вместо видео. Скрипты-сайдкары к каждому видео создать батником: https://pastebin.com/M74SWhMF
Vapoursynth не пробовал. Avisynth работает, но может плохо дружить с mpv, если в названии скрипта юникод. Разрабы mpv на это говорили: "Please stop bothering us with this 1990 shit. Fix your ridiculous AVS problems somewhere else".
В mpv кое-что получается через эти три ключа: 1) --vf-add="loop=loop=-1:size=%количество-кадров-в-исходном видео%" - повторять видеодорожку. 2) --vf-add="trim=duration=%длительность-аудио-в-секундах%" - обрезать видео под длину аудио (это точнее, чем loop=loop=%количество-целых-повторов%), через end_frame или end_pts вместо duration ещё точнее. 3) --loop-file=inf - повторять, когда кончится аудио. Есть ключ --video-sync=desync, но вроде здесь не поможет. Перемотка глючит, стоит её запретить (--osc=no, для начала) или починить (setpts?). В Lua надо подставлять переменные вместо хардкода и активировать скрипт, добавляющий эти три ключа, по триггеру типа "есть подстрока `coub` в пути к файлу", но я скрипты к mpv никогда не писал.
толку никакого нет от этих сырых файлов, если нет плеера под это дело.
¯\_(ツ)_/¯
В идеале для этого нужно скрипт разработать в mpv player.
Комментарий недоступен
Я пока в тик ток их отправляю, но решение кривоватое
Есть решение без удлинения видеодорожки в файле и без вмешательства в плеер. Скрипт avisynth или vapoursynth, который нужно запускать в плеере вместо видео. Скрипты-сайдкары к каждому видео создать батником:
https://pastebin.com/M74SWhMF
Vapoursynth не пробовал. Avisynth работает, но может плохо дружить с mpv, если в названии скрипта юникод. Разрабы mpv на это говорили: "Please stop bothering us with this 1990 shit. Fix your ridiculous AVS problems somewhere else".
В mpv кое-что получается через эти три ключа:
1) --vf-add="loop=loop=-1:size=%количество-кадров-в-исходном видео%" - повторять видеодорожку.
2) --vf-add="trim=duration=%длительность-аудио-в-секундах%" - обрезать видео под длину аудио (это точнее, чем loop=loop=%количество-целых-повторов%), через end_frame или end_pts вместо duration ещё точнее.
3) --loop-file=inf - повторять, когда кончится аудио.
Есть ключ --video-sync=desync, но вроде здесь не поможет.
Перемотка глючит, стоит её запретить (--osc=no, для начала) или починить (setpts?).
В Lua надо подставлять переменные вместо хардкода и активировать скрипт, добавляющий эти три ключа, по триггеру типа "есть подстрока `coub` в пути к файлу", но я скрипты к mpv никогда не писал.