Объединить вилку ресурсов Mac в файл Quicktime

#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-битные приложения.