宝箱
2007-10-29 01:33:35 ( ID:2bxjwymclsj )
[ 削除 / 引用して返信 ]
FullHD(1920x1080)のAVIをTMPGEnc 4.0 Expressでencodeすると途中で
以下のmessageをだして異常終了します。
この操作を完了するのに十分な記憶域がありません (エラーコード 0x800700E)
プログラムストリーム、トランスポートストリームどちらもだめでした。
上記の記憶域は物理メモリを指しているものと考え、タスクマネージャのパフォーマンス
で監視をしていましたが、異常終了時1GB弱利用可能メモリがあまっているようでした。
コミットチャージも2GB弱あまっており十分余裕があるようにみえます。
どうやら記憶域とは物理メモリを指しているわけではないようです。
なにが原因で異常終了したのかよくわかりません。
原因をご存知の方ご教授いただけないでしょうか。
------------------------------------------
OS: Windows XP Pro SP2
CPU: Core2Extreme Quad 2.66GHz
Mem: 3GB
TMPGEnc: Ver4.4.0.233
4.3.2.228
------------------------------------------
通りすがり
2007-10-30 23:58:11 ( ID:9g/h4x1ogih )
[ 削除 / 引用して返信 ]
出力先のHDDの容量は大丈夫ですか?
fay
2007-10-31 00:51:36 ( ID:baqo0zwlbqo )
[ 削除 / 引用して返信 ]
この場合の「記憶域」はメインメモリのことです。検索してみるとわかりますが、
このエラーメッセージはめずらしいものではなく、一般的にメモリが不足した
場合に表示されます。タスクマネージャーなどでメモリが余っているように見え
ても、このエラーが出ることはあります。
まず、一般的な32bitアプリケーションは、1つのプロセスで2Gbyteを超えるメモリ
は使用できません。TMPGEnc4XPは32bitアプリケーションですから、どんなにメモリ
が余っていても、2Gを超えて確保されることはありません。これは64bitOSを使って
も変わりません。
またメモリは必要なサイズを連続したアドレスに確保します。メモリーにフラグメン
テーションが発生すると、たとえ1プロセスで実際に2Gbyte使い切っていなくても、
連続したアドレスが確保できなくなって、エラーとなってしまうこともあると思わ
れます(実メモリをプロセスごとの仮想2Gbyteアドレスへマッピングできなくなる)。
私も良く似たPC構成でHDのMPEG-2をエンコードしていますが、今のところエラーが出
たことはありません。ただ2パスエンコードする都合上、フィルターとエンコードを
同時に行うことはありませんので、メモリー使用量が少なくてすんでいるのかもしれ
ません。ちなみに、今行っている1280x720/24Pの2パス目で、TMPGEnc4XP.exeはメモ
リ使用量は150M程度、最大メモリ使用量は330M程度、仮想メモリサイズは480M程度で
安定しています。
あと、GOPを長くしたり、インターレースにしたり、解像度を高くしたりするとメモ
リー使用量が増えます。どのようなエンコードパラメーターを使った場合にエラーが
出たのでしょうか?
またバッチエンコードツールは、1プロセス内で複数のエンコードを同時に行えます
ので、2Gbyteの制限に引っかかりやすいと言えます。HDエンコードを行うなら、バッチ
エンコードツールで複数同時エンコードは避けたほうが良いと思います。
宝箱
2007-11-03 15:41:33 ( ID:2bxjwymclsj )
[ 削除 / 引用して返信 ]
通りすがりさん、fayさんありがとうございます。
最初に訂正です。Memoryですが、3GBではなく4GBつんでいます。ただし、Windows上の
認識は約3GBです。
通りすがりさん:
出力先のHDD容量は約200GB空いていますし、テンポラリのHDD容量も約100GB空いているので
問題ないと思います。
fayさん:
いろいろご教授ありがとうございます。「記憶域」はメインメモリで、TMPGEncを含む32bit
アプリは2GBを超えるメモリは基本的に扱えませんか。そうなるとエンコード時の設定を
変えるしかなさそうですね。
現状のエンコード時の設定は以下のとおりです。
------------------------------------------
Size: 1920 x 1080
Profile: MP@HL
Rate(Video): CBR 20000Kbit/sec
Rate(Audio): MPEG Audio Layer-II 48KHz 384kbit/sec
VideoType: インターレース
GOP: I=1, P=4, B=2, Max=15
------------------------------------------
こうやって並べてみると、かなり厳しい設定に見えますね。(^_^;)
Full HDのサイズでエンコードしたいので、できるだけサイズは変えたくありませんが、
エンコードできなければ意味ないので、いろいろ条件を変えてトライアルしたいと
思います。
fay
2007-11-05 01:06:20 ( ID:baqo0zwlbqo )
[ 削除 / 引用して返信 ]
書かれている設定で、私もエンコードを試してみましたが、特にエラーとなるような
ことはありませんでした。メモリ消費量も増えはしましたが、問題はありませんでした。
エンコードソースにはPV3でキャプチャしたものを使いましたが、もしソースがHDの
MPEG-2なら、PV3よりもデコーダーが使うメモリが増えることが想像できます。また、
複数のファイルをつなげてエンコードする場合も、同時に複数のファイルをオープン
しているでしょうから、メモリ使用量が増えるかもしれません。
エンコードパラメーターは出力結果に直結するので、見直すと出来上がりに影響が
でます。まずはエンコードパラメーター以外を見直してみてはどうでしょう?
たとえば、ソースがHDのMPEG-2でしかも複数ある場合、一度huffyuvのAVIなどで
中間ファイルを出力してみるのはどうでしょう? それをソースとしてエンコード
すれば、メモリ使用量を抑えられたりすると思います。HDD使用量と時間が余計に
かかってしまいますが、エンコードパラメーターを妥協するよりはよいと思います。
宝箱
2007-11-06 00:59:11 ( ID:2bxjwymclsj )
[ 削除 / 引用して返信 ]
TMPGEncを複数(1つは問題のFullHDのAVIで残りは720x480のごく普通のAVI)起動し、
複数同時にエンコードしたら、なぜかFullHDのものも含め全部エンコードできちゃい
ました。エンコード時の設定は特に変えていません。
よくわからないけど、TMPGEncを複数起動している関係で、エンコード時1つのプロセス
で使用できるメモリリソースが2GBいかなくなったから?
とにかくエンコードできたので、とりあえずよしとします。(^_^;)
コメントいただいたみなさまありがとうございました。
|