1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61#include "gstreamHelpers/gstreamPipeline.h"
#include "gstreamHelpers/helperBins/remoteSourceBins.h"
int main()
{
gstreamPipeline pipeline("testPipe");
#define _USE_RTSP_BIN
#ifdef _USE_RTSP_BIN
//rtspSourceBin rtspbin(&pipeline,"rtsp://vpnhack:8554/cam");
std::vector<std::string> srv={"rtsp://vpnhack:8554/cam"};
multiRemoteSourceBin<rtspSourceBin> rtspbin(&pipeline,srv,"video/x-h264,stream-format=(string)avc,alignment=(string)au");
#else
// rtsp
pipeline.AddPlugin("rtspsrc","rtspsrc");
pipeline.AddPlugin("h264parse","h264parse");
pipeline.AddPlugin("rtph264depay","rtph264depay");
// and config
g_object_set (pipeline.FindNamedPlugin("rtspsrc"),
"location","rtsp://vpnhack:8554/cam",
NULL);
#endif
pipeline.AddPlugin("splitmuxsink");
g_object_set (pipeline.FindNamedPlugin("splitmuxsink"),
"location","/vids/nobins_%05d.mp4",
NULL);
#ifdef _USE_RTSP_BIN
gst_element_link_many( pipeline.FindNamedPlugin(rtspbin),
pipeline.FindNamedPlugin("splitmuxsink"),
NULL);
#else
// rtsp connects late
pipeline.ConnectPipelineLate( pipeline.FindNamedPlugin("rtspsrc"),
pipeline.FindNamedPlugin("rtph264depay"));
// sink it
// pipeline.AddPlugin("fakeseink");
// g_object_set (pipeline.FindNamedPlugin("fbdevsink"),
// "dev","/dev/fb0",
// NULL);
// then all the others ..
gst_element_link_many(
//pipeline.FindNamedPlugin("rtspsrc"),
pipeline.FindNamedPlugin("rtph264depay"),
pipeline.FindNamedPlugin("h264parse"),
pipeline.FindNamedPlugin("splitmuxsink"),
NULL
);
#endif
pipeline.Run(15);
return 0;
}