我试着用OpenCV框架录制一个视频,并想把它和一些额外的数据流一起保存到一个Matroska(mkv)容器中。
首先,我认为使用FFmpeg是实现这一目标的方法。但是当我查看OpenCV源码并在网络上搜索时,我发现了GStreamer。
因为GStreamer中的文档比FFmpeg文档要好得多,所以我更喜欢使用这个框架。
在我的理解中,GStreamer主要用于流媒体,但也可以对视频数据进行rncode和mux。
使用GStreamer而不是FFmpeg有什么缺点吗?
提前感谢霍斯特
发布于 2012-01-04 20:29:24
我尝试使用OpenCV框架录制视频,并希望将其保存到mkv中。
我不认为OpenCV可以将视频存储为MKV,
和一些额外的数据流。
OpenCV不提供此操作的功能。
的一个简单的变通方法是简单地调用ffmpeg或gstreamer的cmd-line应用程序来为您进行转换。
GStreamer确实有一个不错的文档,它也可以做这项工作。的明显缺点是,如果您知道如何使用FFmpeg,那么更改到GStreamer将需要一些额外的时间来了解它是如何工作的,因为两者具有完全不同的API: GStreamer架构的灵感来自于DirectShow和Quicktime。
advantage是GStreamer (除了是跨平台的)在几个大项目中使用,并且了解GStreamer肯定会为您的编程技能增加很大的技能。
发布于 2020-09-29 23:32:01
我看不出使用gstreamer有什么坏处。事实上,我认为gstreamer是一个框架,而不仅仅是一个工具或单一目标库。您可以使用它来开发您自己的插件,这些插件可以无缝地挂接到gstreamer管道中。
发布于 2022-02-10 20:45:11
您可以使用OpenCv VideoWriter,使用ffmpeg或gstreamer后端并进行比较。例如(您可以适应您的平台插件和视频模式):
# Using ffmpeg backend
cv::VideoWriter ffmpeg_h264_writer ("test-ffmpeg-h264-writer.mkv",
cv::CAP_FFMPEG,
cv::VideoWriter::fourcc ('X', '2', '6', '4'),
fps,
cv::Size (width, height));
# Using gstreamer backend:
cv::VideoWriter gst_omxh264_writer ("appsrc ! queue ! videoconvert ! video/x-raw,format=I420 ! queue ! omxh264enc ! video/x-h264,format=byte-stream ! matroskamux ! filesink location=test-gstreamer-omxh264-writer.mkv ",
cv::CAP_GSTREAMER,
0,
fps,
cv::Size (width, height));其中width和height是整数值,fps是浮点值。
https://stackoverflow.com/questions/8724002
复制相似问题