C 如何重播流?
我想玩网络广播。当我关闭Internet收音机上的流时,带有gstreamer的节目显示错误,如果我打开连接的Internet收音机,带有gstreamer的节目将不播放。如何重播流 这是一条cb_信息C 如何重播流?,c,gstreamer,C,Gstreamer,我想玩网络广播。当我关闭Internet收音机上的流时,带有gstreamer的节目显示错误,如果我打开连接的Internet收音机,带有gstreamer的节目将不播放。如何重播流 这是一条cb_信息 static void cb_message ( GstBus *bus, GstMessage *msg, gpointer data ) { switch ( GST_MESSAGE_TYPE ( msg ) ) { case GST_MESSAGE_ERROR: {
static void cb_message ( GstBus *bus, GstMessage *msg, gpointer data ) {
switch ( GST_MESSAGE_TYPE ( msg ) ) {
case GST_MESSAGE_ERROR: {
printf ( "type error\n" );
GError *error = NULL;
char *debug;
gst_message_parse_error ( msg, &error, &debug );
g_print ( "error: from %s %s\n", GST_OBJECT_NAME ( msg->src ), error->message );
g_error_free ( error );
g_free ( debug );
}
break;
case GST_MESSAGE_EOS: {
printf ( "eos\n" );
gst_element_set_state ( gst.pipeline, GST_STATE_READY );
g_timeout_add_seconds ( 1, func_handle, NULL );
}
break;
case GST_MESSAGE_BUFFERING: {
printf ( "buffering\n" );
int percent = 0;
if ( gst.is_live ) break;
gst_message_parse_buffering ( msg, &percent );
if ( percent < 100 ) {
gst_element_set_state ( gst.pipeline, GST_STATE_PAUSED );
} else {
gst_element_set_state ( gst.pipeline, GST_STATE_PLAYING );
}
}
break;
case GST_MESSAGE_CLOCK_LOST: {
printf ( "clock lost\n" );
gst_element_set_state ( gst.pipeline, GST_STATE_PAUSED );
gst_element_set_state ( gst.pipeline, GST_STATE_PLAYING );
}
break;
}
}
eos
2
live async
type error
error: from souphttpsrc0 File Not Found
type error
error: from souphttpsrc0 Internal data stream error.
type error
error: from typefind Stream doesn't contain enough data.
2
live async
2
live async