1

Mp4ize(python)は、iPhoneおよびiPodで使用するためにビデオファイルをmp4に変換するためのユーティリティです。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 を許可し、パッド オプション (あなたのバージョンは私のテスト ファイルでは機能しませんでした) と最新の FFMpeg の進行状況バーを修正します。

FFMpeg に 3 つ以上のコマンド ライン オプションが渡された場合、リンクされたメソッドを使用するようにハードコーディングされていることに注意してください。これは、入力ファイルの解像度を取得する FFMpeg への最初の呼び出しを台無しにするためです。

于 2011-07-23T11:03:27.670 に答える