0

我必须从 gstreamer 管道获取处理后的视频,基于 h264 或 h265 alg 对其进行压缩。然后将其写入存储。这个项目有一些问题需要处理:

  1. 保存的视频必须可以通过任何标准视频播放器播放,例如 vlcplaye、windows 媒体播放器、kmplayer 和 ...
  2. 如果由于任何原因目标文件无法正常关闭(例如断电),则不应丢失整个文件,并且保存的视频应该可以播放,直到问题发生。我对这个项目的解决方案具有这些约束,是一个带有 gstreamer 管道的 opencv 编写器,如下所示:
...
std::string gstPipe("appsrc ! videoconvert ! omxh264enc ! "
                    "splitmuxsink muxer=matroskamux "
                    "max-size-time=50000000000 location="
                    "/file/path/save%d.mkv");     
cv::Size frameSize(frameWidth, frameHeight);
bool result = videoWriter.open(gstPipe, cv::CAP_GSTREAMER, 0,
                         fps, frameSize);

该解决方案将视频流拆分为多个文件,但需要将整个视频保存在一个文件中。有没有人可以提供更好的解决方案?非常感谢您的帮助。

4

0 回答 0