如何在 Python Foundry Nuke 中读写带音频的视频?

How to read and write video with audio in Python Foundry Nuke?

我需要在 Python Nuke 中合并 2 个视频,但我也想合并它们的音频通道。但是 Nuke 在 运行 下面的代码之后只读取和写入他们的视频而根本没有音频:

import nuke

content = nuke.createNode("Read")
content["file"].fromUserText("/content.mp4")

bg = nuke.createNode("Read")
bg["file"].fromUserText("/bg.mov")

merged = nuke.nodes.Merge(inputs=[bg, content])

output = nuke.nodes.Write(file="/output.mov", inputs=[merged])

nuke.render(output)

Foundry NUKE 不是视频编辑器,它是一个合成包。因此,如果您需要将音频组件与视频组件合并,请使用具有相应路径的 Audio File 选项(您可以读取相同的 .mov 文件或选择单独的音频文件)。

您的代码应该是这样的(我使用 .mov 文件和 Apple ProRes 4x4 编解码器):

import nuke

nuke.nodes.Read(file="/Users/swift/Desktop/TESTED.mov", last=1800)

output = nuke.nodes.Write(file="/Users/swift/Desktop/nuke1920.mov", 
                          file_type="mov", 
                          mov64_audiofile="/Users/swift/Desktop/TESTED.mov")

nuke.render(output)

脚本编辑器的输出面板没有错误:

或者,如果您需要使用音频工具,请使用 NUKE Studio。

P.S.

  1. 考虑到非商业版 NUKE 支持的输出分辨率不超过 1920x1080。 Non-Commercial NUKE 不支持 mp4 编解码器,以及处理超过 10 个节点的 Python 脚本。

  2. 还有一件事 – 您正在尝试渲染 2 个视频,但您只输出 3 个通道 – RGB。确保为 A 流和 B 流设置了合适的频道!我不知道你想要完成什么,但你可以使用 Copy 节点而不是 Merge 节点来渲染 2 组 RGB。