通过gstreamer恢复记录的mpeg数据

时间:2013-01-28 19:08:09

标签: gstreamer video-recording

我创建了一个使用appsrc来记录mp4 / mpeg文件的应用程序。每当我必须停止录制并且文件创建成功时,就会发送EOS事件。一切顺利,我的管道

appsrc!排队!视频! ffmpegcolorspace! x264enc! mp4mux! filesink location = video.mp4

偶然的,如果我的应用程序崩溃(无法生成成功的EOS),则记录的数据量将完全丢失。

有没有办法在gstreamer中恢复这些文件。我在想是否可以通过在gstreamer中读取这些文件来附加EOS。有没有做到这一点或类似的规定,以便我不会丢失数据。

谢谢,

Rahul

2 个答案:

答案 0 :(得分:0)

您可能希望将数据复用到MPEG传输流(.ts)而不是MP4文件。应用程序崩溃后MP4文件无法读取的原因是mp4mux没有机会写入文件的'moov'原子,这只能在记录完所有多媒体数据后(即处理EOS时)完成。 .ts文件是为流式传输而构建的,即使文件末尾不完整,仍然可以读取。

要调用它,请将管道的末尾更改为:

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

如果要求MP4,则.ts文件可以在录制后轻松无损地重新转换为MP4。

答案 1 :(得分:0)

您可以使用“moov-recovery-file”属性,以便在崩溃时修复该文件。有关详细信息,请参阅atomsrecovery