我应该设置appsrc caps来修复什么;内部数据流错误";?

我应该设置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

我正在尝试打开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 ! 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";