1

Mp4ize (python)是用于将视频文件转换为 mp4 以在 iPhone 和 iPod 上使用的实用程序。我试图让它在 Windows 上运行。

python 脚本依赖于库fcntl,并且根据另一个问题(Windows 上的 fcntl 替代品),Windows 等价物是 win32api。另一个问题也说:

如果您提供有关 fcntl 调用的更多详细信息,人们可以找到 Windows 等效项。

而且由于我自己尝试重写代码没有运气,所以我想我会在这里问。

如何重写以下代码以在 Windows 上使用?

fcntl.fcntl(
    p.stderr.fileno(),
    fcntl.F_SETFL,
    fcntl.fcntl(p.stderr.fileno(), fcntl.F_GETFL) | os.O_NONBLOCK,
)

有关完整的源代码,请参见此处

4

1 回答 1

2

此命令设置标准错误文件描述符的 NONBLOCK 选项。这使它可以在将全部数据写入其中之前传递数据。

http://pastebin.com/Zr5LN8Ui上的补丁可以在 Windows 上使用进度指示器。但是,即使编码良好,它有时也会报告错误的编码。

它使用来自Python 中 subprocess.PIPE 的非阻塞读取的解决方案来允许非阻塞 IO,并修复了 pad 选项(您的版本不适用于我的测试文件)和现代 FFMpeg 的进度条。

请注意,当 FFMpeg 获得 3 个或更多命令行选项时,使用链接方法是硬编码的,因为它会弄乱对 FFMpeg 的第一次调用,该调用会获取输入文件的分辨率。

于 2011-07-23T11:03:27.670 回答