将 Mac 资源分支合并到 Quicktime 文件中

Merge Mac resource fork into Quicktime file

我有几千个 Quicktime .mov 文件,它们的“moov”原子位于资源分支中,而不是文件本身。

这使得这些 Quicktime 文件只能在 Mac 上播放,并且只能使用 Quicktime 播放器播放。

我可以使用QT7打开每个文件并将其保存为“独立电影”。这似乎将资源分支合并回新文件,然后可以在其他工具和其他系统上正常使用。

但是由于我有数千个文件要转换,我需要使用一些脚本或特定工具以编程方式进行转换。

Developer tools 中的 RezWack 实用程序看起来可以做到这一点,所以我尝试了

RezWack -d myfile.mov  -r myfile.mov/..namedfork/rsrc  -o newfile.mov

这似乎确实将其合并到新文件中。在执行 hexdump 时,我可以在文件末尾看到“moov”原子。但是,生成的 QT 文件对 Quicktime 无效。我尝试过的其他工具(ffmpeg、mediainfo 和 VLC)仍然像以前一样抱怨,没有看到“moov”原子。

我发现合并这些 Quicktime 电影的资源分支和数据分支的最佳方法确实是使用 Quicktime 7,但通过 AppleScript 来完成,以便它可以自动化。

最后,我围绕它做了一个完整的Bash脚本,我将其命名为qt-unforkhttps://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 位应用程序,因此在 Mojave (10.14) 之后的 MacOS 版本上当然不能 运行。更高版本仅支持 64 位应用程序。