我想使用gstreamer
的元素splitmuxsrc
连接视频,并将要连接的文件列表通过格式位置信号从C传递到splitmuxsrc
元素,这里也是How to properly concatenate mp4 videos with GStreamer,但还没有成功。
我一直在努力:
这是可行的:
$ gst-launch-1.0 -v splitmuxsrc location=path/to/*.mp4 ! decodebin ! videoconvert ! autovideosink
在C/C++中:以下不起作用。
splitmuxsrc = gst_element_factory_make("splitmuxsrc", "splitmuxsrc");
g_signal_connect (splitmuxsrc, "format-location", G_CALLBACK (format_location_callback), appCtx);
回调函数:
static GStrv *format_location_callback (GstElement * splitmuxsrc, gpointer udata) {
char ***pppvid = (char***)malloc(1 * sizeof(char**));
**pppvid = (char**)malloc(2* sizeof(char*));
for(int i =0 ; i < 2; i++) {
*pppvid[i] = (char*)malloc(sizeof(char) * 255);
}
*pppvid[0] = "path/to/video1";
*pppvid[1] = "path/to/video1";
for(int i =0 ; i < 2; i++) {
g_print("%s\n", *pppvid[i]);
}
return pppvid;
}
我希望管道将连续地流式传输视频列表(format_location_callback)。
错误:
splitmuxsrc(12181,0x113652600) malloc: *** error for object 0x109146750: pointer being freed was not allocated
splitmuxsrc(12181,0x113652600) malloc: *** set a breakpoint in malloc_error_break to debug
Abort trap: 6
有人知道如何在回调函数中返回正确的视频路径列表吗?
1条答案
按热度按时间rsl1atfo1#
我发现下面的回调函数可以工作: