我应该设置appsrc caps来修复什么;内部数据流错误";?
我正在尝试打开mp4视频解码并将其发送到appsink。然后从appsrc接收并保存到mp4文件中 我肯定我把帽子定错了我应该设置appsrc caps来修复什么;内部数据流错误";?,c,gstreamer,gstreamer-1.0,C,Gstreamer,Gstreamer 1.0,我正在尝试打开mp4视频解码并将其发送到appsink。然后从appsrc接收并保存到mp4文件中 我肯定我把帽子定错了 const gchar *video_caps = "video/x-raw,width=1280,height=720,framerate=25/1"; 管道的前半部分: string = g_strdup_printf ("filesrc location=\"%s\" ! decodebin name=dec ! queue ! videoconvert ! ap
const gchar *video_caps =
"video/x-raw,width=1280,height=720,framerate=25/1";
管道的前半部分:
string = g_strdup_printf ("filesrc location=\"%s\" ! decodebin name=dec ! queue ! videoconvert ! appsink caps=\"%s\" name=testsink",
in_filename, video_caps);
下半场:
string = g_strdup_printf ("appsrc name=testsource caps=\"%s\" !x264enc ! mp4mux! filesink location=\"%s\"",
video_caps,out_filename);
我应该设置什么样的上限才能让它工作
我得到的错误:
接收到接收器中的错误(appsrc模块)错误:内部数据流错误。
为了进行正确的caps协商,您必须特别提到appsink和appsrc的caps中的数据类型。caps必须根据以前的元素输出进行设置。
在问题中,decodebin
输出数据采用YUV I420
格式
如果数据在到达appsrc之前被调制或更改,则必须为appsrc设置正确的上限
const gchar * appsink_video_caps = "video/x-raw,format=I420,width=1280,height=720,framerate=25/1";
const gchar * appsrc_video_caps = "video/x-raw,format=I420,width=1280,height=720,framerate=25/1";