0

appsrc を使用して mp4/mpeg ファイルを記録するアプリケーションを作成しました。記録を停止する必要があるたびに EOS イベントが送信され、ファイルが正常に作成されます。すべてうまくいく、私のパイプラインは

apprc ! 列 !ビデオレート!ffmpegcolorspace ! x264enc ! mp4mux ! filesink location=video.mp4

偶然、アプリケーションがクラッシュした場合 (正常な EOS を生成できない場合)、記録されたデータの量が完全に失われます。

gstreamer でそのようなファイルを回復する方法はありますか。こういうファイルをgstreamerで読み込んでEOSを追記できないかと考えていました。データを失わないように、それまたは同様のことを行うための規定はありますか。

ありがとう、

ラフル

4

2 に答える 2

1

MP4ファイルではなくMPEGトランスポートストリーム(.ts)にデータを多重化することをお勧めします。アプリケーションのクラッシュ後にMP4ファイルが読み取れない理由は、mp4muxが、すべてのマルチメディアデータが記録された後(つまり、EOSが処理されたとき)にのみ実行できるファイルの「moov」アトムを書き込む機会を得られないためです。 。.tsファイルはストリーミング用に作成されており、ファイルの末尾が不完全な場合でも読み取ることができます。

これを呼び出すには、パイプラインの終わりを次のように変更します。

... ! x264enc ! mpegtsmux ! filesink location=video.ts

MP4が必要な場合は、録音後に.tsファイルをロスレスでMP4に簡単にリマックスできます。

于 2013-01-30T06:58:02.160 に答える
0

「moov-recovery-file」プロパティを使用して、クラッシュの場合にファイルを修復できるようにすることができます。詳細については、 atomsrecoveryを参照してください。

于 2013-01-31T08:58:53.570 に答える