私は大きな MPEG (.ts) バイナリ ファイルを持っています。通常は 188 バイトの倍数です。python3 を使用します。毎回 188 バイトを読み取り、解析して必要な値を取得すると、非常に遅いことがわかりました。PID (バイナリ データ) の値を取得するには、188 バイトのパケットごとにトラバースする必要があります。
- 同時に、MPEG オフライン プロフェッショナル アナライザーを使用すると、すべての PID 値とその合計カウントのリストが、5 分間の TS ファイルで 45 秒以内に取得されます。
- c や c++ で書かれているかもしれませんが、どれだけ早く見つけられるかわかりません。
- python multiprocessing を試しましたが、あまり役に立ちません。これは、188 バイトのデータを解析して処理する私の方法が適切でなく、大きな遅延を引き起こしていることを意味します。
`with open(file2,'rb') as f:
data=f.read(188)
if len(data)==0: break
b=BitStream(data)
... #parse b to get the required value
... # and increase count when needed
...
cnt=cnt+188
f.seek(cnt)`