我试图在Android Kitkat中运行基本的gstreamer rtsp流媒体应用程序,同时这样做会出现错误,例如
basesrc gstbasesrc.c:2933:gst_base_src_loop:错误:内部数据流错误。 basesrc gstbasesrc.c:2933:gst_base_src_loop:错误:流媒体任务已暂停,原因未链接(-1)
从日志中可以看出RTSP通信正在发生,但RTP流媒体并没有起飞。
使用GstreamerSDK 1.4.3。该应用程序的源代码是......
#include <gst/gst.h>
#include <glib.h>
#include <gio/gio.h>
#include <dlfcn.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
GST_PLUGIN_STATIC_REGISTER(coreelements);
GST_PLUGIN_STATIC_REGISTER(adder);
GST_PLUGIN_STATIC_REGISTER(app);
GST_PLUGIN_STATIC_REGISTER(videoconvert);
GST_PLUGIN_STATIC_REGISTER(gdp);
GST_PLUGIN_STATIC_REGISTER(gio);
GST_PLUGIN_STATIC_REGISTER(pango);
GST_PLUGIN_STATIC_REGISTER(typefindfunctions);
GST_PLUGIN_STATIC_REGISTER(videorate);
GST_PLUGIN_STATIC_REGISTER(videoscale);
GST_PLUGIN_STATIC_REGISTER(videotestsrc);
GST_PLUGIN_STATIC_REGISTER(volume);
GST_PLUGIN_STATIC_REGISTER(autodetect);
GST_PLUGIN_STATIC_REGISTER(videofilter);
GST_PLUGIN_STATIC_REGISTER(x264);
GST_PLUGIN_STATIC_REGISTER(libav);
GST_PLUGIN_STATIC_REGISTER(subparse);
GST_PLUGIN_STATIC_REGISTER(auparse);
GST_PLUGIN_STATIC_REGISTER(multipart);
GST_PLUGIN_STATIC_REGISTER(fragmented);
GST_PLUGIN_STATIC_REGISTER(subenc);
GST_PLUGIN_STATIC_REGISTER(videoparsersbad);
GST_PLUGIN_STATIC_REGISTER(androidmedia);
GST_PLUGIN_STATIC_REGISTER(tcp);
GST_PLUGIN_STATIC_REGISTER(rtsp);
GST_PLUGIN_STATIC_REGISTER(rtp);
GST_PLUGIN_STATIC_REGISTER(rtmp);
GST_PLUGIN_STATIC_REGISTER(rtpmanager);
GST_PLUGIN_STATIC_REGISTER(soup);
GST_PLUGIN_STATIC_REGISTER(udp);
GST_PLUGIN_STATIC_REGISTER(dataurisrc);
GST_PLUGIN_STATIC_REGISTER(sdp);
static gboolean
bus_call (GstBus *bus,
GstMessage *msg,
gpointer data)
{
GMainLoop *loop = (GMainLoop *) data;
switch (GST_MESSAGE_TYPE (msg)) {
case GST_MESSAGE_EOS:
g_print ("End of stream\n");
g_main_loop_quit (loop);
break;
case GST_MESSAGE_ERROR: {
gchar *debug;
GError *error;
gst_message_parse_error (msg, &error, &debug);
g_free (debug);
g_printerr ("Error: %s\n", error->message);
g_error_free (error);
g_main_loop_quit (loop);
break;
}
default:
break;
}
return TRUE;
}
static void on_pad_added (GstElement *element, GstPad *pad, void *data)
{
GstElement *depay = GST_ELEMENT (data);
GstPad *sinkpad;
g_print ("on_pad_added\n");
sinkpad = gst_element_get_static_pad (depay, "sink");
if(!sinkpad)
g_print ("error - get static pad on the queue failed\n");
gst_pad_link (pad, sinkpad);
gst_object_unref (sinkpad);
}
/* Listen for element's state change */
static void on_state_changed (GstBus *bus, GstMessage *msg, gpointer user_data)
{
GstState old_state, new_state, pending_state;
GstElement* pipeline = (GstElement*)user_data;
gst_message_parse_state_changed (msg, &old_state, &new_state, &pending_state);
if(GST_MESSAGE_SRC(msg) == pipeline)
{
g_print("Pipeline state changed to %s\n", gst_element_state_get_name(new_state));
}
}
int main (int argc,
char *argv[])
{
GMainLoop *loop;
GstElement *pipeline, *source, *parser, *decoder, *conv, *sink, *video_scale, *decodebin, *depay, *queue, *bin;
GstBus *bus;
guint bus_watch_id;
CustomData *data;
GSource *bus_source;
GError *error = NULL;
pthread_t tid;
/* Initialisation */
gst_init (&argc, &argv);
gst_android_register_static_plugins();
loop = g_main_loop_new (NULL, FALSE);
/* Check input arguments */
if (argc < 2) {
g_printerr ("Usage: RunPipe <infilepath> \n");
return -1;
}
/* Create gstreamer elements */
pipeline = gst_pipeline_new ("video-player");
source = gst_element_factory_make ("rtspsrc", "rtspsrc-source");
depay = gst_element_factory_make ("rtph264depay", "rtp-depacketizer");
decoder = gst_element_factory_make ("avdec_h264", "h264-decoder");
sink = gst_element_factory_make ("filesink", "file-sink");
if (!pipeline) {
g_printerr ("pipeline could not be created. Exiting.\n");
return -1;
}
if (!source ) {
g_printerr ("source could not be created. Exiting.\n");
return -1;
}
if (!depay ) {
g_printerr ("depay element could not be created. Exiting.\n");
return -1;
}
if (!decoder) {
g_printerr ("decoder element could not be created. Exiting.\n");
return -1;
}
if (!sink) {
g_printerr ("sink element could not be created. Exiting.\n");
return -1;
}
/* Set up the pipeline */
/* we set the input filename to the source element */
g_object_set (G_OBJECT (source), "location", argv[1], NULL);
g_object_set (G_OBJECT (source), "debug", TRUE, NULL);
g_object_set (G_OBJECT (source), "latency", 100, NULL);
g_object_set (G_OBJECT (source), "protocols", 0x00000005, NULL);
g_object_set (G_OBJECT (source), "do-rtcp", TRUE, NULL);
g_object_set (G_OBJECT (source), "nat-method", 0, NULL);
g_object_set (G_OBJECT (sink), "location", "/data/abc.yuv", NULL);
g_signal_connect (source , "pad-added", G_CALLBACK (on_pad_added), depay);
g_signal_connect (depay , "pad-added", G_CALLBACK (on_pad_added), decoder);
/* we add a message handler */
bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
gst_bus_enable_sync_message_emission (bus);
gst_bus_add_signal_watch (bus);
g_signal_connect (G_OBJECT (bus), "message::state-changed", (GCallback) on_state_changed, pipeline);
gst_bin_add_many (GST_BIN (pipeline),
source, depay, decoder, sink, NULL);
gst_element_set_state (pipeline, GST_STATE_READY);
/* we link the elements together */
gst_element_link_many (decoder, sink, NULL);
gst_element_set_state (pipeline, GST_STATE_PAUSED);
/* Set the pipeline to "playing" state*/
g_print ("Now playing: %s\n", argv[1]);
gst_element_set_state (pipeline, GST_STATE_PLAYING);
/* Iterate */
g_print ("Running...\n");
g_main_loop_run (loop);
/* Out of the main loop, clean up nicely */
g_print ("Returned, stopping playback\n");
gst_element_set_state (pipeline, GST_STATE_NULL);
g_print ("Deleting pipeline\n");
gst_object_unref (bus);
gst_object_unref (GST_OBJECT (pipeline));
return 0;
}
我尝试了几个建议,但没有什么可以解决这个问题。还分析了DOT图像,但可以获得任何线索。任何帮助将受到高度赞赏。由于字符数限制而附加部分日志。
changed state to 4(PLAYING) successfully
Running...
Pipeline state changed to READY
Pipeline state changed to PAUSED
RTSP request message 0xb2e08be8
request line:
method: 'OPTIONS'
uri: 'rtsp://192.168.0.8:556/can_smallest.mp4'
version: '1.0'
headers:
body:
RTSP response message 0xb2e08c14
status line:
code: '200'
reason: 'OK'
version: '1.0'
headers:
key: 'CSeq', value: '1'
key: 'Public', value: 'DESCRIBE'
key: 'Public', value: 'SETUP'
key: 'Public', value: 'TEARDOWN'
key: 'Public', value: 'PLAY'
key: 'Public', value: 'PAUSE'
key: 'Public', value: 'OPTIONS'
body: length 0
RTSP request message 0xb2e08be8
request line:
method: 'DESCRIBE'
uri: 'rtsp://192.168.0.8:556/can_smallest.mp4'
version: '1.0'
headers:
key: 'Accept', value: 'application/sdp'
body:
RTSP response message 0xb2e08c14
status line:
code: '200'
reason: 'OK'
version: '1.0'
headers:
key: 'Server', value: 'testserver'
key: 'CSeq', value: '2'
key: 'Last-Modified', value: 'Mon, 28 Feb 2005 12:29:26 GMT'
key: 'Content-Length', value: '464'
key: 'Date', value: 'Wed, 21 Feb 2007 05:40:13 GMT'
key: 'Expires', value: 'Wed, 21 Feb 2007 05:40:13 GMT'
key: 'Content-Type', value: 'application/sdp'
key: 'Content-Base', value: 'rtsp://192.168.0.8:556/can_smallest.mp4'
body: length 465
.
sdp packet 0xb8a475b0:
version: '0'
origin:
username: 'teststreamingserver'
sess_id: '2001'
sess_version: '2005'
nettype: 'IN'
addrtype: 'IP4'
addr: ''
session_name: '\can_smallest.mp4'
information: '(NULL)'
uri: 'http://example.com'
emails:
email 'last.first@example.com'
phones:
phone '123-456-789'
connection:
nettype: 'IN'
addrtype: 'IP4'
address: ''
ttl: '0'
addr_number: '0'
bandwidths:
type: 'AS'
bandwidth: '50'
key:
type: '(NULL)'
data: '(NULL)'
attributes:
attribute 'control' : '*'
attribute 'range' : 'npt=0.000000-39.681999'
medias:
media 0:
media: 'video'
port: '0'
num_ports: '0'
proto: 'RTP/AVP'
formats:
format '96'
information: '(NULL)'
bandwidths:
type: 'AS'
bandwidth: '2097151'
key:
type: '(NULL)'
data: '(NULL)'
attributes:
attribute 'control' : 'rtsp://192.168.0.8:556/can_smallest.mp4/trackID=1'
attribute 'rtpmap' : '96 H264/90000'
attribute 'framesize' : '96 32-24'
attribute 'fmtp' : '96 packetization-mode=1;profile-level-id=676400;sprop-parameter-sets=Z2QACazZSX5cBEAAAAMAQAAADCPEiWWA,aOvssiw='
0:00:00.391975105 INFO GST_ELEMENT_FACTORY gstelementfactory.c:364:gst_element_factory_create: creating element "udpsrc"
0:00:00.392144844 INFO GST_ELEMENT_PADS gstelement.c:643:gst_element_add_pad:<GstBaseSrc@0xb8a48170> adding pad 'src'
0:00:00.392450782 INFO udpsrc gstudpsrc.c:898:gst_udpsrc_open:<udpsrc0> setting udp buffer of 524288 bytes
0:00:00.392521563 INFO udpsrc gstudpsrc.c:918:gst_udpsrc_open:<udpsrc0> have udp buffer of 1048576 bytes
0:00:00.392647136 INFO GST_STATES gstelement.c:2328:gst_element_continue_state:<udpsrc0> completed state change to READY
0:00:00.392713907 INFO GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<udpsrc0> notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:00.392899219 INFO GST_ELEMENT_FACTORY gstelementfactory.c:364:gst_element_factory_create: creating element "udpsrc"
0:00:00.393008073 INFO GST_ELEMENT_PADS gstelement.c:643:gst_element_add_pad:<GstBaseSrc@0xb8a48428> adding pad 'src'
0:00:00.393262865 INFO udpsrc gstudpsrc.c:918:gst_udpsrc_open:<udpsrc1> have udp buffer of 163840 bytes
0:00:00.393381250 INFO GST_STATES gstelement.c:2328:gst_element_continue_state:<udpsrc1> completed state change to READY
0:00:00.393451042 INFO GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<udpsrc1> notifying about state-changed NULL to READY (VOID_PENDING pending)
RTSP request message 0xb2e08bbc
request line:
method: 'SETUP'
uri: 'rtsp://192.168.0.8:556/can_smallest.mp4/trackID=1'
version: '1.0'
headers:
key: 'Transport', value: 'RTP/AVP;unicast;client_port=43198-43199'
body:
RTSP response message 0xb2e08be8
status line:
code: '200'
reason: 'OK'
version: '1.0'
headers:
key: 'Server', value: 'testserver'
key: 'CSeq', value: '3'
key: 'Last-Modified', value: 'Mon, 28 Feb 2005 12:29:26 GMT'
key: 'Cache-Control', value: 'must-revalidate'
key: 'Session', value: '20007ac820007ac8'
key: 'Date', value: 'Wed, 21 Feb 2007 05:40:13 GMT'
key: 'Expires', value: 'Wed, 21 Feb 2007 05:40:13 GMT'
key: 'Transport', value: 'RTP/AVP/UDP;unicast;source=;client_port=-22338--22337;server_port=4000-4001;ssrc=0000181C'
body: length 0
0:00:00.423977500 INFO GST_ELEMENT_FACTORY gstelementfactory.c:362:gst_element_factory_create: creating element "rtpbin" named "manager"
0:00:00.424180938 INFO GST_STATES gstelement.c:2303:gst_element_continue_state:<manager> committing state from NULL to READY, pending PAUSED, next PAUSED
0:00:00.424255782 INFO GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<manager> notifying about state-changed NULL to READY (PAUSED pending)
0:00:00.424420418 INFO GST_STATES gstelement.c:2310:gst_element_continue_state:<manager> continue state change READY to PAUSED, final PAUSED
0:00:00.424506980 INFO GST_STATES gstelement.c:2328:gst_element_continue_state:<manager> completed state change to PAUSED
0:00:00.424570209 INFO GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<manager> notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:00.424837136 INFO GST_ELEMENT_PADS gstelement.c:892:gst_element_get_static_pad: no such pad 'recv_rtp_sink_0' in element "manager"
0:00:00.424917397 INFO GST_ELEMENT_FACTORY gstelementfactory.c:364:gst_element_factory_create: creating element "rtpsession"
0:00:00.425484324 INFO GST_ELEMENT_FACTORY gstelementfactory.c:364:gst_element_factory_create: creating element "rtpssrcdemux"
0:00:00.425606303 INFO GST_ELEMENT_PADS gstelement.c:643:gst_element_add_pad:<GstRtpSsrcDemux@0xb8a51010> adding pad 'sink'
0:00:00.425712293 INFO GST_ELEMENT_PADS gstelement.c:643:gst_element_add_pad:<GstRtpSsrcDemux@0xb8a51010> adding pad 'rtcp_sink'
0:00:00.425938855 INFO GST_STATES gstelement.c:2303:gst_element_continue_state:<rtpssrcdemux0> committing state from NULL to READY, pending PAUSED, next PAUSED
0:00:00.426012136 INFO GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<rtpssrcdemux0> notifying about state-changed NULL to READY (PAUSED pending)
0:00:00.426165157 INFO GST_STATES gstelement.c:2310:gst_element_continue_state:<rtpssrcdemux0> continue state change READY to PAUSED, final PAUSED
0:00:00.426247032 INFO GST_STATES gstelement.c:2328:gst_element_continue_state:<rtpssrcdemux0> completed state change to PAUSED
0:00:00.426313074 INFO GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<rtpssrcdemux0> notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:00.426459376 INFO GST_STATES gstelement.c:2303:gst_element_continue_state:<rtpsession0> committing state from NULL to READY, pending PAUSED, next PAUSED
0:00:00.426528699 INFO GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<rtpsession0> notifying about state-changed NULL to READY (PAUSED pending)
0:00:00.426668126 INFO GST_STATES gstelement.c:2310:gst_element_continue_state:<rtpsession0> continue state change READY to PAUSED, final PAUSED
0:00:00.426740105 INFO GST_STATES gstelement.c:2328:gst_element_continue_state:<rtpsession0> completed state change to PAUSED
0:00:00.426802032 INFO GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<rtpsession0> notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:00.426944584 INFO GST_ELEMENT_PADS gstelement.c:892:gst_element_get_static_pad: no such pad 'recv_rtp_sink' in element "rtpsession0"
0:00:00.427094011 INFO GST_ELEMENT_PADS gstelement.c:643:gst_element_add_pad:<rtpsession0> adding pad 'recv_rtp_sink'
0:00:00.427231824 INFO GST_ELEMENT_PADS gstelement.c:643:gst_element_add_pad:<rtpsession0> adding pad 'recv_rtp_src'
0:00:00.427505834 INFO GST_PADS gstpad.c:2186:gst_pad_link_prepare: trying to link recv_rtp_sink_0:proxypad0 and rtpsession0:recv_rtp_sink
0:00:00.427583490 INFO GST_PADS gstpad.c:2388:gst_pad_link_full: linked recv_rtp_sink_0:proxypad0 and rtpsession0:recv_rtp_sink, successful
0:00:00.427651199 INFO GST_EVENT gstevent.c:1373:gst_event_new_reconfigure: creating reconfigure event
0:00:00.427740834 INFO GST_ELEMENT_PADS gstelement.c:643:gst_element_add_pad:<manager> adding pad 'recv_rtp_sink_0'
0:00:00.427815001 INFO GST_ELEMENT_PADS gstelement.c:895:gst_element_get_static_pad: found pad rtpsession0:recv_rtp_src
0:00:00.427887345 INFO GST_ELEMENT_PADS gstelement.c:895:gst_element_get_static_pad: found pad rtpssrcdemux0:sink
0:00:00.427966876 INFO GST_PADS gstpad.c:2186:gst_pad_link_prepare: trying to link rtpsession0:recv_rtp_src and rtpssrcdemux0:sink
0:00:00.428036355 INFO GST_PADS gstpad.c:2388:gst_pad_link_full: linked rtpsession0:recv_rtp_src and rtpssrcdemux0:sink, successful
0:00:00.428108595 INFO GST_EVENT gstevent.c:1373:gst_event_new_reconfigure: creating reconfigure event
0:00:40.562537627 INFO GST_EVENT gstevent.c:759:gst_event_new_segment: creating segment event time segment start=0:00:00.000000000, offset=0:00:00.000000000, stop=99:99:99.999999999, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, base=0:00:00.000000000, position 0:00:00.000000000, duration 0:00:39.681999000
RTSP request message 0xb2e08bec
request line:
method: 'PLAY'
uri: 'rtsp://192.168.0.8:556/can_smallest.mp4'
version: '1.0'
headers:
key: 'Range', value: 'npt=0-'
body:
0:00:40.564684015 16036 0xb8a468f0 INFO GST_ELEMENT_PADS gstelement.c:892:gst_element_get_static_pad: no such pad 'sink' in element "udpsrc1"
0:00:40.565839765 16036 0xb8a468f0 INFO GST_EVENT gstevent.c:678:gst_event_new_caps: creating caps event application/x-rtcp
RTSP response message 0xb2e08c18
status line:
code: '200'
reason: 'OK'
version: '1.0'
headers:
key: 'CSeq', value: '4'
key: 'Server', value: 'testserv'
key: 'Session', value: '20007ac820007ac8'
key: 'Scale', value: '-0.000000'
key: 'Range', value: 'npt=0.000000-1.000000'
key: 'RTP-Info', value: 'url=rtsp://192.168.0.8:556/can_smallest.mp4/trackID=1;seq=5103;rtptime=1777208127'
body: length 0
0:00:42.038357285 16036 0xb8a46890 INFO GST_EVENT gstevent.c:678:gst_event_new_caps: creating caps event application/x-rtcp
0:00:42.039331595 16036 0xb8a46890 INFO GST_EVENT gstevent.c:759:gst_event_new_segment: creating segment event time segment start=0:00:00.000000000, offset=0:00:00.000000000, stop=99:99:99.999999999, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, base=0:00:00.000000000, position 0:00:00.000000000, duration 99:99:99.999999999
0:00:45.566325490 INFO GST_STATES gstbin.c:2230:gst_bin_element_set_state:<rtpssrcdemux0> current PLAYING pending VOID_PENDING, desired next PAUSED
0:00:45.566720775 INFO GST_STATES gstelement.c:2328:gst_element_continue_state:<rtpssrcdemux0> completed state change to PAUSED
0:00:45.567005614 INFO GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<rtpssrcdemux0> notifying about state-changed PLAYING to PAUSED (VOID_PENDING pending)
0:00:45.567820502 INFO GST_STATES gstbin.c:2673:gst_bin_change_state_func:<manager> child 'rtpssrcdemux0' changed state to 3(PAUSED) successfully
0:00:45.568193813 INFO GST_STATES gstbin.c:2230:gst_bin_element_set_state:<rtpsession0> current PLAYING pending VOID_PENDING, desired next PAUSED
0:00:45.568813272 INFO GST_STATES gstelement.c:2328:gst_element_continue_state:<rtpsession0> completed state change to PAUSED
0:00:45.569093215 INFO GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<rtpsession0> notifying about state-changed PLAYING to PAUSED (VOID_PENDING pending)
0:00:45.570539383 INFO GST_STATES gstbin.c:2673:gst_bin_change_state_func:<manager> child 'rtpsession0' changed state to 3(PAUSED) successfully
0:00:45.570889730 INFO GST_STATES gstelement.c:2303:gst_element_continue_state:<manager> committing state from PLAYING to PAUSED, pending READY, next READY
0:00:45.571186285 INFO GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<manager> notifying about state-changed PLAYING to PAUSED (READY pending)
0:00:45.572885735 INFO GST_STATES gstelement.c:2310:gst_element_continue_state:<manager> continue state change PAUSED to READY, final READY
0:00:45.574231298 INFO GST_STATES gstbin.c:2230:gst_bin_element_set_state:<rtpssrcdemux0> current PAUSED pending VOID_PENDING, desired next READY
0:00:45.574915390 INFO GST_STATES gstelement.c:2328:gst_element_continue_state:<rtpssrcdemux0> completed state change to READY
0:00:45.575195860 INFO GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<rtpssrcdemux0> notifying about state-changed PAUSED to READY (VOID_PENDING pending)
0:00:45.577369370 INFO GST_STATES gstbin.c:2673:gst_bin_change_state_func:<manager> child 'rtpssrcdemux0' changed state to 2(READY) successfully
0:00:45.579579801 INFO GST_STATES gstbin.c:2230:gst_bin_element_set_state:<rtpsession0> current PAUSED pending VOID_PENDING, desired next READY
0:00:45.583540695 INFO GST_STATES gstelement.c:2328:gst_element_continue_state:<rtpsession0> completed state change to READY
0:00:45.585652339 INFO GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<rtpsession0> notifying about state-changed PAUSED to READY (VOID_PENDING pending)
0:00:45.589310404 INFO GST_STATES gstbin.c:2673:gst_bin_change_state_func:<manager> child 'rtpsession0' changed state to 2(READY) successfully
0:00:45.592431046 INFO GST_STATES gstelement.c:2328:gst_element_continue_state:<manager> completed state change to READY
0:00:45.595299608 INFO GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<manager> notifying about state-changed PAUSED to READY (VOID_PENDING pending)
0:00:45.598642573 16036 0xb8a468c0 INFO basesrc gstbasesrc.c:2724:gst_base_src_loop:<udpsrc0> pausing after gst_base_src_get_range() = flushing
0:00:45.598998830 16036 0xb8a468c0 INFO task gsttask.c:301:gst_task_func:<udpsrc0:src> Task going to paused
0:00:45.600470312 INFO GST_STATES gstelement.c:2303:gst_element_continue_state:<udpsrc0> committing state from PLAYING to PAUSED, pending READY, next READY
0:00:45.602734506 INFO GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<udpsrc0> notifying about state-changed PLAYING to PAUSED (READY pending)
0:00:45.604942723 INFO GST_STATES gstelement.c:2310:gst_element_continue_state:<udpsrc0> continue state change PAUSED to READY, final READY
0:00:45.606568784 16036 0xb8a468c0 INFO task gsttask.c:303:gst_task_func:<udpsrc0:src> Task resume from paused
0:00:45.607717244 INFO GST_STATES gstelement.c:2328:gst_element_continue_state:<udpsrc0> completed state change to READY
0:00:45.608986680 INFO GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<udpsrc0> notifying about state-changed PAUSED to READY (VOID_PENDING pending)
0:00:45.611940554 16036 0xb8a468f0 INFO basesrc gstbasesrc.c:2724:gst_base_src_loop:<udpsrc1> pausing after gst_base_src_get_range() = flushing
0:00:45.612250362 16036 0xb8a468f0 INFO task gsttask.c:301:gst_task_func:<udpsrc1:src> Task going to paused
0:00:45.612590479 INFO GST_STATES gstelement.c:2303:gst_element_continue_state:<udpsrc1> committing state from PLAYING to PAUSED, pending READY, next READY
0:00:45.614020729 INFO GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<udpsrc1> notifying about state-changed PLAYING to PAUSED (READY pending)
0:00:45.617100318 INFO GST_STATES gstelement.c:2310:gst_element_continue_state:<udpsrc1> continue state change PAUSED to READY, final READY
0:00:45.619118298 16036 0xb8a468f0 INFO task gsttask.c:303:gst_task_func:<udpsrc1:src> Task resume from paused
0:00:45.619331663 INFO GST_STATES gstelement.c:2328:gst_element_continue_state:<udpsrc1> completed state change to READY
0:00:45.619586169 INFO GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<udpsrc1> notifying about state-changed PAUSED to READY (VOID_PENDING pending)
RTSP request message 0xb2e08c18
request line:
method: 'TEARDOWN'
uri: 'rtsp://192.168.0.8:556/can_smallest.mp4'
version: '1.0'
headers:
body:
RTSP response message 0xb2e08c44
status line:
code: '200'
reason: 'OK'
version: '1.0'
headers:
key: 'CSeq', value: '5'
key: 'Server', value: 'testserv'
key: 'Session', value: '20007ac820007ac8'
key: 'Connection', value: 'Close'
body: length 0
0:00:45.633186296 INFO GST_STATES gstelement.c:2328:gst_element_continue_state:<udpsrc0> completed state change to NULL
0:00:45.633262019 INFO GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<udpsrc0> notifying about state-changed READY to NULL (VOID_PENDING pending)
0:00:45.650815163 INFO GST_PARENTAGE gstbin.c:1554:gst_bin_remove_func:<manager> removed child "rtpsession0"
0:00:45.651069523 INFO GST_REFCOUNTING gstelement.c:2873:gst_element_dispose:<rtpsession0> dispose
0:00:45.651315133 INFO GST_REFCOUNTING gstelement.c:2917:gst_element_dispose:
0:00:45.655121646 INFO GST_REFCOUNTING gstelement.c:2953:gst_element_finalize:<manager> finalize parent
0:00:45.655418127 WARN rtspsrc gstrtspsrc.c:4847:gst_rtspsrc_reconnect:<rtspsrc-source> warning: Could not receive any UDP packets for 5.0000 seconds, maybe your firewall is blocking it. Retrying using a TCP connection.
0:00:45.655915943 INFO GST_ERROR_SYSTEM gstelement.c:1835:gst_element_message_full:<rtspsrc-source> posting message: Could not read from resource.
0:00:45.656420217 INFO GST_ERROR_SYSTEM gstelement.c:1858:gst_element_message_full:<rtspsrc-source> posted warning message: Could not read from resource.
0:01:05.678280907 ERROR default gstrtspconnection.c:877:gst_rtsp_connection_connect: failed to connect: Could not connect to 192.168.0.8: Socket I/O timed out
0:01:05.678675900 ERROR rtspsrc gstrtspsrc.c:4196:gst_rtsp_conninfo_connect:<rtspsrc-source> Could not connect to server. (Generic error)
0:01:05.678974905 WARN rtspsrc gstrtspsrc.c:6858:gst_rtspsrc_retrieve_sdp:<rtspsrc-source> error: Failed to connect. (Generic error)
0:01:05.679482655 INFO GST_ERROR_SYSTEM gstelement.c:1835:gst_element_message_full:<rtspsrc-source> posting message: Could not open resource for reading and writing.
0:01:05.680319462 INFO GST_ERROR_SYSTEM gstelement.c:1858:gst_element_message_full:<rtspsrc-source> posted error message: Could not open resource for reading and writing.
0:01:05.680756433 WARN rtspsrc gstrtspsrc.c:6937:gst_rtspsrc_open:<rtspsrc-source> can't get sdp
0:01:05.681004918 WARN rtspsrc gstrtspsrc.c:5040:gst_rtspsrc_loop:<rtspsrc-source> we are not connected
0:01:05.681261319 INFO task gsttask.c:301:gst_task_func:<task0> Task going to paused
答案 0 :(得分:0)
g_signal_connect (depay , "pad-added", G_CALLBACK (on_pad_added), decoder);
depayloader具有静态打击垫,因此您无法在播放期间添加任何打击垫。相反,你应该像解码器和接收器一样链接它。您可以使用gst-inspect-1.0检查打击垫的类型。
由于您没有链接depayloader,因此最终会出现一个未链接的错误。