gstreamer - 如何使用 GStreamer 组合 appsink 和 filesink?
问题描述
我是 GStreamer 的新手,我正在尝试创建一个管道来显示视频并同时录制它。我已经设法使用以下方法制作显示部分:
ss << "filesrc location=/home/videos/video1.avi ! avidemux name=demux demux.video_0 ! mpeg4videoparse ! avdec_mpeg4 ! nvvidconv ! video/x-raw,format=I420 ! appsink name=mysink";
另外,我读过它filesink location=somepath
用于将数据保存到文件中,但我不知道如何将它与管道的其余部分结合起来。
那么,如何在同一管道中使用appsink
和?filesink
解决方案
GStreamertee
为这种情况提供了一个元素。但是请注意,在大多数情况下,您需要queue
在 tee 的每个分支之后添加一个以防止死锁。例如
filesrc location=/home/videos/video1.avi ! avidemux name=demux demux.video_0 ! mpeg4videoparse ! avdec_mpeg4 ! nvvidconv ! video/x-raw,format=I420 ! tee name=mytee ! queue ! appsink name=mysink mytee. ! queue ! filesink location=out.raw
推荐阅读
- laravel - Laravel 邮件还是通知?应该使用哪一个来发送电子邮件?为什么?
- vue.js - Vue.js SFC 在编译时有条件地包含模板元素
- python-3.x - 使用 pyarrow 将 openCV 图像流式传输到多个进程
- java - 当结果包含 LocalDateTime 时获取“无法在类上找到适当的构造函数”
- java - CompletableFuture 如何先返回 FALSE 还是等到全部完成才返回 TRUE
- sql - 多表选择查询中的 SQL 总计行
- python - 在 Windows 上安装 wquantiles 的问题
- java - 编译后可以更改 XML 可绘制对象中分配的颜色吗?
- python-3.x - RK45 ode 求解器 python3
- php - 使用 PHP 向 mySQL 添加数据