#macos #quicktime #resource-fork
Вопрос:
У меня есть несколько тысяч файлов Quicktime .mov, у которых атом «moov» находится в их развилке ресурсов, а не в самом файле.
Это делает эти файлы Quicktime воспроизводимыми только на Mac и только с помощью проигрывателя Quicktime.
Я могу использовать QT7, чтобы открыть каждый файл и сохранить его «как самостоятельный фильм». Это, по-видимому, приведет к обратному объединению вилки ресурсов в новый файл, который затем можно будет нормально использовать с другими инструментами и в других системах.
Но поскольку у меня есть тысячи файлов для преобразования, мне нужно сделать это программно, с помощью какого-либо скрипта или специального инструмента.
RezWack
Утилита из инструментов разработчика выглядела так, как будто она именно это и сделает, поэтому я попробовал
RezWack -d myfile.mov -r myfile.mov/..namedfork/rsrc -o newfile.mov
Это, казалось, действительно объединило его в новый файл. Я вижу атом «moov» в конце файла при выполнении шестнадцатеричного дампа. Однако полученный файл QT становится недействительным для Quicktime. И другие инструменты, которые я пробовал (ffmpeg, mediainfo и VLC), по-прежнему жалуются, как и раньше, не видя атома «moov».
Ответ №1:
Лучший способ, который я нашел, чтобы объединить вилку ресурсов и вилку данных для этих фильмов Quicktime, — это действительно использовать Quicktime 7, но сделать это с помощью AppleScript, чтобы его можно было автоматизировать.
В конце концов, я сделал вокруг этого целый сценарий Bash, который назвал qt-unfork
: https://github.com/mivk/qt-unfork/
Суть его заключается в этом бите AppleScript, вызванном здесь из Bash с помощью osascript
:
# variables $in and $out were defined earlier
osascript - <<END
tell application "QuickTime Player 7"
open POSIX file "$in"
tell front document
save self contained in ("$out" as POSIX file)
close
end tell
end tell
END
Это фактически откроет QT7, и вы увидите, как он обрабатывает файлы.
Обратите внимание, что, поскольку для этого требуется Quicktime 7, который является 32-разрядным приложением, он, конечно, не может работать в версиях macOS после Mojave (10.14). Более поздние версии поддерживают только 64-битные приложения.