Mp4ize (python)是一个实用程序,用于将视频文件转换为mp4,以便在iPhone和iPod上使用。我试图让它在Windows上运行。
python脚本依赖于库fcntl,根据另一个问题(fcntl substitute on Windows),Windows等价物是win32api。另一个问题也说:
如果您提供有关fcntl调用的更多详细信息,人们可以找到等效的Windows。
因为我自己试图重写代码没有运气,我想我会在这里问。
如何在Windows上重写以下代码?
fcntl.fcntl( p.stderr.fileno(), fcntl.F_SETFL, fcntl.fcntl(p.stderr.fileno(), fcntl.F_GETFL) | os.O_NONBLOCK, )
有关完整的源代码,请参阅here。
答案 0 :(得分:2)
此命令设置标准错误文件描述符的NONBLOCK选项。这使得它可以在整个数据写入之前传递数据。
http://pastebin.com/Zr5LN8Ui上的补丁可以在Windows上使用进度指示器。但是,即使编码良好,它有时也会报告错误的编码。
它使用Non-blocking read on a subprocess.PIPE in python中的解决方案来允许非阻塞IO,并修复pad选项(您的版本不适用于我的测试文件)和现代FFMpeg的进度条。
请注意,当FFMpeg传递3个或更多命令行选项时,使用链接方法是硬编码的,因为它会混淆第一次调用FFMpeg来获取输入文件的分辨率。