2017-06-20 11 views
0

私は、Waveファイルに非常に似ていますが、カスタムヘッダをwavヘッダ(200バイト対36バイト)よりも長い独自のファイルを操作しています。サンプルも同様です。これらのファイルはかなり大きい(通常200Meg)。最初のX文字を省略したファイルをコピーする

私は独自のファイルをwavに一括変換しようとしています。

私はwavefile gemを使用して短いスクリプトを書いた。私はちょうどサンプルの配列全体を読んでから、waveファイルを作成します。それは小さな例でうまく動作しますが、大きなものに対してはメモリ割り当てエラーがあります。

私はFileutils.cpを使用してファイルをコピーすることが非常に高速であることに気付きました。私は何とか最初の164バイトを "省略"している間に何らかの形でファイルをコピーできたら、最初の36バイトに波のヘッダーを書き、ファイル(.wav)の名前を変更することができますか?

ベスト/最も簡単な方法は何ですか?このような

答えて

1

何かがありそうな仕事になります。

File.open(src, 'rb') do |r| 
    File.open(dst, 'wb') do |w| 
    w.write(new_dst_header) 
    r.seek(200) 
    until r.eof? 
     w.write(r.read(chunk_size)) 
    end 
    end 
end 

chunk_size大きな、より速く、それが行くと、あなたが使用し、より多くのメモリ。

関連する問題