Mp4ize (python)是一种将视频文件转换为 mp4 以便在 iPhone 和 iPod 上使用的实用程序。我试图让它在 Windows 上运行。
python脚本依赖库fcntl ,根据另一个问题 ( fcntl substitute on Windows ),Windows 等效项是 win32api。另一个问题也说:
If you provide more details about the fcntl calls people can find windows equivalents.
由于我一直没有尝试自己重写代码,所以我想在这里问一下。
如何重写以下代码以在 Windows 上使用?
fcntl.fcntl( p.stderr.fileno(), fcntl.F_SETFL, fcntl.fcntl(p.stderr.fileno(), fcntl.F_GETFL) | os.O_NONBLOCK, )
参见 here获取完整的源代码。
最佳答案
此命令设置标准错误文件描述符的 NONBLOCK 选项。这允许它在全部数据写入之前传递数据。
补丁位于 http://pastebin.com/Zr5LN8Ui将在 Windows 上使用进度指示器。但是,即使编码良好,它有时也会报告错误的编码。
它使用来自 Non-blocking read on a subprocess.PIPE in python 的解决方案允许非阻塞 IO,并修复 pad 选项(您的版本不适用于我的测试文件)和现代 FFMpeg 的进度条。
请注意,当 FFMpeg 传递 3 个或更多命令行选项时,它被硬编码为使用链接方法,因为它弄乱了对 FFMpeg 的第一次调用,该调用获取输入文件的分辨率。
关于python - 更改 mp4ize.py 以在 Windows 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6799693/