我应该如何设置 appsrc 上限来修复 "internal data stream error"?
what should I set appsrc caps to fix "internal data stream error"?
我正在尝试打开 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);
我应该如何设置上限才能使其正常工作?
我得到的错误:Received error in sink(appsrc module) Error: Internal data stream error.
为了进行正确的上限协商,您必须特别提及 appsink 的上限中的数据类型,并且 appsrc.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";
我正在尝试打开 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);
我应该如何设置上限才能使其正常工作?
我得到的错误:Received error in sink(appsrc module) Error: Internal data stream error.
为了进行正确的上限协商,您必须特别提及 appsink 的上限中的数据类型,并且 appsrc.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";