Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Video viewer webrtc stream get freeze #1661

Open
manhntm3 opened this issue Jun 2, 2023 · 1 comment
Open

Video viewer webrtc stream get freeze #1661

manhntm3 opened this issue Jun 2, 2023 · 1 comment

Comments

@manhntm3
Copy link

manhntm3 commented Jun 2, 2023

Hi,
Thank you for your work on Jetson. I'm building an AI server that runs on a NX Orin. But when I ran video-viewer with a file as an input and webrtc output with this command

./aarch64/bin/video-viewer file:///home/aiserver/Software/cc/videos/helicopter.mp4 webrtc://@:8686/output --headless

The stream appears to be glitching and freezing, especially after a long time ( like after a minute).

What do you think is the reason for this delay and is there any way that I can debug or solve this issue? (I always want to get the latest frame possible with perhaps a lower bitrate/image quality)

Here is the full log:

./aarch64/bin/video-viewer file:///home/aiserver/Software/cc/videos/helicopter.mp4 webrtc://@:8686/output --headless --bitrate=6000000 --input-loop=-1
[gstreamer] initialized gstreamer, version 1.14.5.0
[gstreamer] gstDecoder -- creating decoder for /home/aiserver/Software/cc/videos/helicopter.mp4
[gstreamer] GST_LEVEL_WARNING GstFileSrc basesrc
              gstbasesrc.c:3583  gst_base_src_start_complete
              pad not activated yet
[gstreamer] GST_LEVEL_WARNING GstFileSrc basesrc
              gstbasesrc.c:3583  gst_base_src_start_complete
              pad not activated yet
[gstreamer] GST_LEVEL_WARNING   qtdemux
              qtdemux_types.c:233  qtdemux_type_get
              unknown QuickTime node type Xtra
[gstreamer] GST_LEVEL_WARNING GstQTDemux qtdemux
              qtdemux.c:3031  qtdemux_parse_trex
              failed to find fragment defaults for stream 1
[gstreamer] GST_LEVEL_WARNING GstQTDemux qtdemux
              qtdemux.c:3031  qtdemux_parse_trex
              failed to find fragment defaults for stream 2
Opening in BLOCKING MODE 
[gstreamer] GST_LEVEL_WARNING GstPad v4l2
              /dvs/git/dirty/git-master_linux/3rdparty/gst/gst-v4l2/gst-v4l2/gstv4l2object.c:4447  gst_v4l2_object_probe_caps
              Failed to probe pixel aspect ratio with VIDIOC_CROPCAP: Unknown error -1
[gstreamer] GST_LEVEL_WARNING (null) v4l2
              /dvs/git/dirty/git-master_linux/3rdparty/gst/gst-v4l2/gst-v4l2/gstv4l2object.c:2388  gst_v4l2_object_add_interlace_mode
              Failed to determine interlace mode
[gstreamer] GST_LEVEL_WARNING (null) v4l2
              /dvs/git/dirty/git-master_linux/3rdparty/gst/gst-v4l2/gst-v4l2/gstv4l2object.c:2388  gst_v4l2_object_add_interlace_mode
              Failed to determine interlace mode
[gstreamer] GST_LEVEL_WARNING (null) v4l2
              /dvs/git/dirty/git-master_linux/3rdparty/gst/gst-v4l2/gst-v4l2/gstv4l2object.c:2388  gst_v4l2_object_add_interlace_mode
              Failed to determine interlace mode
NvMMLiteOpen : Block : BlockType = 261 
NVMEDIA: Reading vendor.tegra.display-size : status: 6 
NvMMLiteBlockCreate : Block : BlockType = 261 
[gstreamer] GST_LEVEL_WARNING GstPad v4l2
              /dvs/git/dirty/git-master_linux/3rdparty/gst/gst-v4l2/gst-v4l2/gstv4l2object.c:4447  gst_v4l2_object_probe_caps
              Failed to probe pixel aspect ratio with VIDIOC_CROPCAP: Unknown error -1
[gstreamer] GST_LEVEL_WARNING (null) v4l2
              /dvs/git/dirty/git-master_linux/3rdparty/gst/gst-v4l2/gst-v4l2/gstv4l2object.c:2388  gst_v4l2_object_add_interlace_mode
              Failed to determine interlace mode
[gstreamer] GST_LEVEL_WARNING (null) v4l2
              /dvs/git/dirty/git-master_linux/3rdparty/gst/gst-v4l2/gst-v4l2/gstv4l2object.c:2388  gst_v4l2_object_add_interlace_mode
              Failed to determine interlace mode
[gstreamer] GST_LEVEL_WARNING (null) v4l2
              /dvs/git/dirty/git-master_linux/3rdparty/gst/gst-v4l2/gst-v4l2/gstv4l2object.c:2388  gst_v4l2_object_add_interlace_mode
              Failed to determine interlace mode
[gstreamer] GST_LEVEL_WARNING nvv4l2decoder v4l2videodec
              /dvs/git/dirty/git-master_linux/3rdparty/gst/gst-v4l2/gst-v4l2/gstv4l2videodec.c:1673  gst_v4l2_video_dec_decide_allocation
              Duration invalid, not setting latency
[gstreamer] GST_LEVEL_WARNING GstNvV4l2BufferPool v4l2bufferpool
              /dvs/git/dirty/git-master_linux/3rdparty/gst/gst-v4l2/gst-v4l2/gstv4l2bufferpool.c:1065  gst_v4l2_buffer_pool_start
              Uncertain or not enough buffers, enabling copy threshold
[gstreamer] GST_LEVEL_WARNING GstNvV4l2BufferPool v4l2bufferpool
              /dvs/git/dirty/git-master_linux/3rdparty/gst/gst-v4l2/gst-v4l2/gstv4l2bufferpool.c:1512  gst_v4l2_buffer_pool_dqbuf
              Driver should never set v4l2_buffer.field to ANY
[gstreamer] gstDecoder -- discovered video resolution: 1920x1080  (framerate 30.000000 Hz)
[gstreamer] gstDecoder -- discovered video caps:  video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, level=(string)4, profile=(string)constrained-baseline, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
[gstreamer] gstDecoder -- pipeline string:
[gstreamer] filesrc location=/home/aiserver/Software/cc/videos/helicopter.mp4 ! qtdemux ! queue ! h264parse ! omxh264dec name=decoder ! video/x-raw(memory:NVMM) ! appsink name=mysink
[gstreamer] GST_LEVEL_WARNING   omx
              /dvs/git/dirty/git-master_linux/3rdparty/gst/gst-omx/omx/gstomx.c:2826  plugin_init
              Failed to load configuration file: Valid key file could not be found in search dirs (searched in: /home/aiserver/.config:/etc/xdg as per GST_OMX_CONFIG_DIR environment variable, the xdg user config directory (or XDG_CONFIG_HOME) and the system config directory (or XDG_CONFIG_DIRS)
[video]  created gstDecoder from file:///home/aiserver/Software/cc/videos/helicopter.mp4
------------------------------------------------
gstDecoder video options:
------------------------------------------------
  -- URI: file:///home/aiserver/Software/cc/videos/helicopter.mp4
     - protocol:  file
     - location:  /home/aiserver/Software/cc/videos/helicopter.mp4
     - extension: mp4
  -- deviceType: file
  -- ioType:     input
  -- codec:      H264
  -- codecType:  omx
  -- width:      1920
  -- height:     1080
  -- frameRate:  30
  -- numBuffers: 2
  -- zeroCopy:   true
  -- flipMethod: none
  -- loop:       -1
------------------------------------------------
video viewer
[gstreamer] gstEncoder -- codec not specified, defaulting to H.264
[gstreamer] gstEncoder -- pipeline launch string:
[gstreamer] appsrc name=mysource is-live=true do-timestamp=true format=3 ! omxh264enc name=encoder bitrate=6000000 insert-sps-pps=1 insert-vui=1 ! video/x-h264 ! rtph264pay config-interval=1 ! application/x-rtp,media=video,encoding-name=H264,clock-rate=90000,payload=96 ! tee name=videotee ! queue ! fakesink
[webrtc] WebRTC server started @ http://aiserver:8686
[webrtc] WebRTC server thread running...
[webrtc] websocket route added /output
[video]  created gstEncoder from webrtc://@:8686/output
------------------------------------------------
gstEncoder video options:
------------------------------------------------
  -- URI: webrtc://@:8686/output
     - protocol:  webrtc
     - location:  0.0.0.0
     - port:      8686
  -- deviceType: ip
  -- ioType:     output
  -- codec:      H264
  -- codecType:  omx
  -- frameRate:  30
  -- bitRate:    6000000
  -- numBuffers: 2
  -- zeroCopy:   true
  -- latency     0
------------------------------------------------
[gstreamer] opening gstDecoder for streaming, transitioning pipeline to GST_STATE_PLAYING
[gstreamer] GST_LEVEL_WARNING GstFileSrc basesrc
              gstbasesrc.c:3583  gst_base_src_start_complete
              pad not activated yet
[gstreamer] gstreamer changed state from NULL to READY ==> mysink
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter1
[gstreamer] gstreamer changed state from NULL to READY ==> decoder
[gstreamer] gstreamer changed state from NULL to READY ==> h264parse1
[gstreamer] gstreamer changed state from NULL to READY ==> queue0
[gstreamer] gstreamer changed state from NULL to READY ==> qtdemux1
[gstreamer] gstreamer changed state from NULL to READY ==> filesrc0
[gstreamer] gstreamer changed state from NULL to READY ==> pipeline0
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter1
[gstreamer] gstreamer changed state from READY to PAUSED ==> decoder
[gstreamer] gstreamer changed state from READY to PAUSED ==> h264parse1
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> queue0
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer stream status CREATE ==> sink
[gstreamer] gstreamer changed state from READY to PAUSED ==> qtdemux1
[gstreamer] gstreamer changed state from READY to PAUSED ==> filesrc0
[gstreamer] gstreamer stream status ENTER ==> sink
[gstreamer] GST_LEVEL_WARNING   qtdemux
              qtdemux_types.c:233  qtdemux_type_get
              unknown QuickTime node type Xtra
[gstreamer] GST_LEVEL_WARNING GstQTDemux qtdemux
              qtdemux.c:3031  qtdemux_parse_trex
              failed to find fragment defaults for stream 1
[gstreamer] GST_LEVEL_WARNING GstQTDemux qtdemux
              qtdemux.c:3031  qtdemux_parse_trex
              failed to find fragment defaults for stream 2

(video-viewer:23711): GStreamer-CRITICAL **: 09:13:16.625: gst_caps_is_empty: assertion 'GST_IS_CAPS (caps)' failed

(video-viewer:23711): GStreamer-CRITICAL **: 09:13:16.625: gst_caps_truncate: assertion 'GST_IS_CAPS (caps)' failed

(video-viewer:23711): GStreamer-CRITICAL **: 09:13:16.626: gst_caps_fixate: assertion 'GST_IS_CAPS (caps)' failed

(video-viewer:23711): GStreamer-CRITICAL **: 09:13:16.626: gst_caps_get_structure: assertion 'GST_IS_CAPS (caps)' failed

(video-viewer:23711): GStreamer-CRITICAL **: 09:13:16.626: gst_structure_get_string: assertion 'structure != NULL' failed
[gstreamer] GST_LEVEL_ERROR   GstOMXH264Dec-omxh264dec omxvideodec
              /dvs/git/dirty/git-master_linux/3rdparty/gst/gst-omx/omx/gstomxvideodec.c:3274  gst_omx_video_dec_negotiate
              Invalid caps: (NULL)

(video-viewer:23711): GStreamer-CRITICAL **: 09:13:16.627: gst_mini_object_unref: assertion 'mini_object != NULL' failed
NvMMLiteOpen : Block : BlockType = 261 
NVMEDIA: Reading vendor.tegra.display-size : status: 6 
NvMMLiteBlockCreate : Block : BlockType = 261 
Allocating new output: 1920x1088 (x 10), ThumbnailMode = 0
OPENMAX: HandleNewStreamFormat: 3605: Send OMX_EventPortSettingsChanged: nFrameWidth = 1920, nFrameHeight = 1080 
[gstreamer] gstDecoder -- onPreroll()
[gstreamer] gstreamer message stream-start ==> pipeline0
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer message duration-changed ==> h264parse1
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ /\ AVC", bitrate=(uint)11907565;
[gstreamer] gstreamer mysink taglist, datetime=(datetime)2021-12-14T16:56:13Z, container-format=(string)"ISO\ MP4/M4A";
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(Constrained\ Baseline\ Profile\)", bitrate=(uint)11907565;
[gstreamer] gstreamer changed state from READY to PAUSED ==> mysink
[gstreamer] gstBufferManager -- map buffer size was less than max size (1008 vs 3110400)
[gstreamer] gstreamer changed state from READY to PAUSED ==> pipeline0
[gstreamer] gstreamer message async-done ==> pipeline0
[gstreamer] gstreamer message new-clock ==> pipeline0
[gstreamer] gstBufferManager recieve caps:  video/x-raw(memory:NVMM), format=(string)NV12, width=(int)1920, height=(int)1080, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)mpeg2, colorimetry=(string)bt709, framerate=(fraction)30/1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> mysink
[gstreamer] gstBufferManager -- recieved first frame, codec=H264 format=nv12 width=1920 height=1080 size=3110400
[gstreamer] gstBufferManager -- recieved NVMM memory
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> decoder
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> h264parse1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> queue0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> qtdemux1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> filesrc0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> pipeline0
[cuda]   cudaAllocMapped 8 bytes, CPU 0x2032ba000 GPU 0x2032ba000
[cuda]   cudaAllocMapped 8 bytes, CPU 0x2032ba200 GPU 0x2032ba200
[cuda]   allocated 2 ring buffers (8 bytes each, 16 bytes total)
nvbuf_utils: dmabuf_fd 1071 mapped entry NOT found
nvbuf_utils: NvReleaseFd Failed... Exiting...
nvbuf_utils: dmabuf_fd 1069 mapped entry NOT found
nvbuf_utils: NvReleaseFd Failed... Exiting...
[cuda]   cudaAllocMapped 6220800 bytes, CPU 0x203afa000 GPU 0x203afa000
[cuda]   cudaAllocMapped 6220800 bytes, CPU 0x2040e9000 GPU 0x2040e9000
[cuda]   allocated 2 ring buffers (6220800 bytes each, 12441600 bytes total)
video-viewer:  captured 0 frames (1920x1080)
nvbuf_utils: dmabuf_fd 1073 mapped entry NOT found
nvbuf_utils: NvReleaseFd Failed... Exiting...
[cuda]   cudaAllocMapped 3110400 bytes, CPU 0x2034ba000 GPU 0x2034ba000
[cuda]   cudaAllocMapped 3110400 bytes, CPU 0x2046d8000 GPU 0x2046d8000
[cuda]   allocated 2 ring buffers (3110400 bytes each, 6220800 bytes total)
[gstreamer] gstEncoder -- starting pipeline, transitioning to GST_STATE_PLAYING
[gstreamer] gstEncoder -- queued state to GST_STATE_PLAYING => GST_STATE_CHANGE_ASYNC
[gstreamer] gstreamer changed state from NULL to READY ==> fakesink0
[gstreamer] gstreamer changed state from NULL to READY ==> queue1
[gstreamer] gstreamer changed state from NULL to READY ==> videotee
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter3
[gstreamer] gstreamer changed state from NULL to READY ==> rtph264pay0
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter2
[gstreamer] gstreamer changed state from NULL to READY ==> encoder
[gstreamer] gstreamer changed state from NULL to READY ==> mysource
[gstreamer] gstreamer changed state from NULL to READY ==> pipeline1
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> queue1
[gstreamer] gstreamer changed state from READY to PAUSED ==> videotee
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter3
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> rtph264pay0
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter2
[gstreamer] gstreamer changed state from READY to PAUSED ==> encoder
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> mysource
[gstreamer] gstreamer changed state from READY to PAUSED ==> pipeline1
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer message new-clock ==> pipeline1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> queue1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> videotee
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter3
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> rtph264pay0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter2
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> encoder
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> mysource
nvbuf_utils: dmabuf_fd 1075 mapped entry NOT found
nvbuf_utils: NvReleaseFd Failed... Exiting...
nvbuf_utils: dmabuf_fd 1077 mapped entry NOT found
nvbuf_utils: NvReleaseFd Failed... Exiting...
nvbuf_utils: dmabuf_fd 1079 mapped entry NOT found
nvbuf_utils: NvReleaseFd Failed... Exiting...
[gstreamer] gstEncoder -- new caps: video/x-raw, width=1920, height=1080, format=(string)I420, framerate=30/1
Framerate set to : 30 at NvxVideoEncoderSetParameterNvMMLiteOpen : Block : BlockType = 4 
===== NVMEDIA: NVENC =====
video-viewer:  captured 1 frames (1920x1080)
NvMMLiteBlockCreate : Block : BlockType = 4 
[gstreamer] GST_LEVEL_WARNING GstOMXH264Enc-omxh264enc omxvideoenc
              /dvs/git/dirty/git-master_linux/3rdparty/gst/gst-omx/omx/gstomxvideoenc.c:1860  gst_omx_video_enc_set_format
              Error setting temporal_tradeoff 0 : Vendor specific error (0x00000001)
[gstreamer] gstEncoder -- appsrc signalling enough data
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer stream status ENTER ==> src
video-viewer:  captured 2 frames (1920x1080)
H264: Profile = 66, Level = 40 
NVMEDIA_ENC: bBlitMode is set to TRUE 
video-viewer:  captured 3 frames (1920x1080)
[gstreamer] gstreamer message stream-start ==> pipeline1
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(Constrained\ Baseline\ Profile\)", bitrate=(uint)11907565, minimum-bitrate=(uint)10789680, maximum-bitrate=(uint)10789680;
video-viewer:  captured 4 frames (1920x1080)
[gstreamer] gstreamer changed state from READY to PAUSED ==> fakesink0
[gstreamer] gstreamer message async-done ==> pipeline1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> fakesink0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> pipeline1
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(Constrained\ Baseline\ Profile\)", bitrate=(uint)11907565, minimum-bitrate=(uint)3829680, maximum-bitrate=(uint)10789680;
video-viewer:  captured 5 frames (1920x1080)
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(Constrained\ Baseline\ Profile\)", bitrate=(uint)11907565, minimum-bitrate=(uint)3010320, maximum-bitrate=(uint)10789680;
video-viewer:  captured 6 frames (1920x1080)
video-viewer:  captured 7 frames (1920x1080)
video-viewer:  captured 8 frames (1920x1080)
video-viewer:  captured 9 frames (1920x1080)
video-viewer:  captured 10 frames (1920x1080)
video-viewer:  captured 11 frames (1920x1080)
video-viewer:  captured 12 frames (1920x1080)
video-viewer:  captured 13 frames (1920x1080)
video-viewer:  captured 14 frames (1920x1080)
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(Constrained\ Baseline\ Profile\)", bitrate=(uint)11907565, minimum-bitrate=(uint)2236800, maximum-bitrate=(uint)10789680;
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(Constrained\ Baseline\ Profile\)", bitrate=(uint)11907565, minimum-bitrate=(uint)2236800, maximum-bitrate=(uint)11034000;
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(Constrained\ Baseline\ Profile\)", bitrate=(uint)11907565, minimum-bitrate=(uint)2236800, maximum-bitrate=(uint)65089680;
video-viewer:  captured 25 frames (1920x1080)
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(Constrained\ Baseline\ Profile\)", bitrate=(uint)11907565, minimum-bitrate=(uint)1505760, maximum-bitrate=(uint)65089680;
video-viewer:  captured 50 frames (1920x1080)
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(Constrained\ Baseline\ Profile\)", bitrate=(uint)11907565, minimum-bitrate=(uint)1505760, maximum-bitrate=(uint)65120640;
video-viewer:  captured 75 frames (1920x1080)
video-viewer:  captured 100 frames (1920x1080)
video-viewer:  captured 125 frames (1920x1080)
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(Constrained\ Baseline\ Profile\)", bitrate=(uint)11907565, minimum-bitrate=(uint)1433520, maximum-bitrate=(uint)65120640;
video-viewer:  captured 150 frames (1920x1080)
video-viewer:  captured 175 frames (1920x1080)
[webrtc] websocket /output -- new connection opened by 127.0.0.1 (peer_id=0)
[webrtc] new WebRTC peer connecting (127.0.0.1, peer_id=0)

(video-viewer:23711): GLib-GObject-WARNING **: 09:13:23.382: g_object_set_is_valid_property: object class 'GstWebRTCBin' has no property named 'latency'

(video-viewer:23711): GLib-GObject-WARNING **: 09:13:23.383: g_object_set_is_valid_property: object class 'WebRTCTransceiver' has no property named 'direction'
[gstreamer] gstreamer changed state from NULL to READY ==> queue-0
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> queue-0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> queue-0
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer changed state from NULL to READY ==> rtpbin
[gstreamer] gstreamer changed state from NULL to READY ==> webrtcbin-0
[gstreamer] gstreamer changed state from READY to PAUSED ==> rtpbin
[gstreamer] gstreamer changed state from READY to PAUSED ==> webrtcbin-0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> rtpbin
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> webrtcbin-0
[webrtc] GStreamer WebRTC -- onNegotiationNeeded()
video-viewer:  captured 200 frames (1920x1080)
[gstreamer] GST_LEVEL_WARNING GstPad GST_PADS
              gstpad.c:4226  gst_pad_peer_query
              could not send sticky events
[gstreamer] GST_LEVEL_WARNING GstPad GST_PADS
              gstpad.c:4226  gst_pad_peer_query
              could not send sticky events
[webrtc] GStreamer WebRTC -- onCreateOffer()
[webrtc] negotiation offer created:
v=0
o=- 2909856011703445696 0 IN IP4 0.0.0.0
s=-
t=0 0
a=ice-options:trickle
a=msid-semantic:WMS webrtcbin-0
m=video 9 UDP/TLS/RTP/SAVPF 96
c=IN IP4 0.0.0.0
a=setup:actpass
a=ice-ufrag:X14dK5fZJCw9rL+FV2lK0uXQnJFGeXWz
a=ice-pwd:PGn86OaHdnjVxczRy6L1nnovUTzYOt20
a=sendrecv
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 H264/90000
a=rtcp-fb:96 nack pli
a=framerate:30
a=fmtp:96 packetization-mode=1;profile-level-id=424015;sprop-parameter-sets=Z0JAKJWgHgCJ+WEAAAMAAQAAAwA8jwiEag==,aM48gA==
a=ssrc:3885686574 msid:user3754559267@host-2cc00e2c webrtctransceiver0
a=ssrc:3885686574 cname:user3754559267@host-2cc00e2c
a=mid:video0
a=fingerprint:sha-256 DC:8D:D0:55:78:A6:87:A5:E0:12:6F:B8:1D:F8:64:62:93:D4:3F:5D:DB:4D:0B:43:61:88:A4:CE:14:5F:50:DC

[webrtc] sending offer for /output to 127.0.0.1 (peer_id=0): 
{"type":"sdp","data":{"type":"offer","sdp":"v=0\r\no=- 2909856011703445696 0 IN IP4 0.0.0.0\r\ns=-\r\nt=0 0\r\na=ice-options:trickle\r\na=msid-semantic:WMS webrtcbin-0\r\nm=video 9 UDP/TLS/RTP/SAVPF 96\r\nc=IN IP4 0.0.0.0\r\na=setup:actpass\r\na=ice-ufrag:X14dK5fZJCw9rL+FV2lK0uXQnJFGeXWz\r\na=ice-pwd:PGn86OaHdnjVxczRy6L1nnovUTzYOt20\r\na=sendrecv\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 H264/90000\r\na=rtcp-fb:96 nack pli\r\na=framerate:30\r\na=fmtp:96 packetization-mode=1;profile-level-id=424015;sprop-parameter-sets=Z0JAKJWgHgCJ+WEAAAMAAQAAAwA8jwiEag==,aM48gA==\r\na=ssrc:3885686574 msid:user3754559267@host-2cc00e2c webrtctransceiver0\r\na=ssrc:3885686574 cname:user3754559267@host-2cc00e2c\r\na=mid:video0\r\na=fingerprint:sha-256 DC:8D:D0:55:78:A6:87:A5:E0:12:6F:B8:1D:F8:64:62:93:D4:3F:5D:DB:4D:0B:43:61:88:A4:CE:14:5F:50:DC\r\n"}}
[gstreamer] gstreamer changed state from NULL to READY ==> rtpssrcdemux0
[gstreamer] gstreamer changed state from READY to PAUSED ==> rtpssrcdemux0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> rtpssrcdemux0
[gstreamer] gstreamer changed state from NULL to READY ==> rtpsession0
[gstreamer] gstreamer changed state from READY to PAUSED ==> rtpsession0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> rtpsession0
[gstreamer] gstreamer changed state from NULL to READY ==> funnel4
[gstreamer] gstreamer changed state from READY to PAUSED ==> funnel4
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> funnel4
[gstreamer] gstreamer changed state from NULL to READY ==> funnel5
[gstreamer] gstreamer changed state from READY to PAUSED ==> funnel5
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> funnel5
[gstreamer] gstreamer changed state from NULL to READY ==> rtpstorage0
[gstreamer] gstreamer changed state from READY to PAUSED ==> rtpstorage0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> rtpstorage0
[gstreamer] gstreamer changed state from NULL to READY ==> nicesink2
[gstreamer] gstreamer changed state from NULL to READY ==> nicesink1
[gstreamer] gstreamer changed state from NULL to READY ==> outputselector0
[gstreamer] gstreamer changed state from NULL to READY ==> transportsendbin0
[gstreamer] gstreamer changed state from READY to PAUSED ==> nicesink2
[gstreamer] gstreamer changed state from READY to PAUSED ==> nicesink1
[gstreamer] gstreamer changed state from READY to PAUSED ==> outputselector0
[gstreamer] gstreamer changed state from READY to PAUSED ==> transportsendbin0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> nicesink2
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> nicesink1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> outputselector0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> transportsendbin0
[gstreamer] gstreamer changed state from NULL to READY ==> nicesrc1
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> nicesrc1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> nicesrc1
[gstreamer] gstreamer changed state from NULL to READY ==> nicesrc2
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> nicesrc2
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> nicesrc2
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer changed state from NULL to READY ==> funnel3
[gstreamer] gstreamer changed state from NULL to READY ==> queue2
[gstreamer] gstreamer changed state from NULL to READY ==> funnel2
[gstreamer] gstreamer changed state from NULL to READY ==> srtpdec0
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer changed state from NULL to READY ==> dtlsdec0
[gstreamer] gstreamer changed state from NULL to READY ==> dtlssrtpdemux0
[gstreamer] gstreamer changed state from NULL to READY ==> dtlssrtpdec0
[gstreamer] gstreamer changed state from NULL to READY ==> srtpdec1
[gstreamer] gstreamer changed state from NULL to READY ==> dtlsdec1
[gstreamer] gstreamer changed state from NULL to READY ==> dtlssrtpdemux1
[gstreamer] gstreamer changed state from NULL to READY ==> dtlssrtpdec1
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter4
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter5
[gstreamer] gstreamer changed state from NULL to READY ==> transportreceivebin0
[gstreamer] gstreamer changed state from READY to PAUSED ==> funnel3
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> queue2
[gstreamer] gstreamer changed state from READY to PAUSED ==> funnel2
[gstreamer] gstreamer changed state from READY to PAUSED ==> srtpdec0
[gstreamer] gstreamer changed state from READY to PAUSED ==> dtlsdec0
[gstreamer] gstreamer changed state from READY to PAUSED ==> dtlssrtpdemux0
[gstreamer] gstreamer changed state from READY to PAUSED ==> dtlssrtpdec0
[gstreamer] gstreamer changed state from READY to PAUSED ==> srtpdec1
[gstreamer] gstreamer changed state from READY to PAUSED ==> dtlsdec1
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> dtlssrtpdemux1
[gstreamer] gstreamer changed state from READY to PAUSED ==> dtlssrtpdec1
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter4
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter5
[gstreamer] gstreamer changed state from READY to PAUSED ==> transportreceivebin0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> funnel3
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> queue2
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> funnel2
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> srtpdec0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> dtlsdec0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> dtlssrtpdemux0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> dtlssrtpdec0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> srtpdec1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> dtlsdec1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> dtlssrtpdemux1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> dtlssrtpdec1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter4
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter5
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> transportreceivebin0
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:1 1 UDP 2013266431 fe80::42:feff:fe44:1ee2 36747 typ host"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:2 1 TCP 1015023359 fe80::42:feff:fe44:1ee2 9 typ host tcptype active"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:3 1 TCP 1010829055 fe80::42:feff:fe44:1ee2 48607 typ host tcptype passive"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:4 1 UDP 2013266430 fe80::7d4b:aa57:607f:a15a 60821 typ host"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:5 1 TCP 1015023358 fe80::7d4b:aa57:607f:a15a 9 typ host tcptype active"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:6 1 TCP 1010829054 fe80::7d4b:aa57:607f:a15a 57381 typ host tcptype passive"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:7 1 UDP 2013266429 172.17.0.1 44864 typ host"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:8 1 TCP 1015022335 172.17.0.1 9 typ host tcptype active"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:9 1 TCP 1010828031 172.17.0.1 34103 typ host tcptype passive"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:10 1 UDP 2013266428 192.168.0.182 49196 typ host"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:11 1 TCP 1015022591 192.168.0.182 9 typ host tcptype active"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:12 1 TCP 1010828287 192.168.0.182 34065 typ host tcptype passive"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:1 2 UDP 2013266430 fe80::42:feff:fe44:1ee2 56877 typ host"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:2 2 TCP 1015023358 fe80::42:feff:fe44:1ee2 9 typ host tcptype active"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:3 2 TCP 1010829054 fe80::42:feff:fe44:1ee2 56661 typ host tcptype passive"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:4 2 UDP 2013266429 fe80::7d4b:aa57:607f:a15a 50172 typ host"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:5 2 TCP 1015023357 fe80::7d4b:aa57:607f:a15a 9 typ host tcptype active"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:6 2 TCP 1010829053 fe80::7d4b:aa57:607f:a15a 33137 typ host tcptype passive"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:7 2 UDP 2013266428 172.17.0.1 51381 typ host"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:8 2 TCP 1015022334 172.17.0.1 9 typ host tcptype active"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:9 2 TCP 1010828030 172.17.0.1 48999 typ host tcptype passive"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:10 2 UDP 2013266427 192.168.0.182 40393 typ host"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:11 2 TCP 1015022590 192.168.0.182 9 typ host tcptype active"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:12 2 TCP 1010828286 192.168.0.182 46519 typ host tcptype passive"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:13 1 UDP 1677722111 82.16.190.80 44864 typ srflx raddr 172.17.0.1 rport 44864"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:14 1 TCP 847250175 82.16.190.80 9 typ srflx raddr 172.17.0.1 rport 9 tcptype active"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:15 1 TCP 843055871 82.16.190.80 34103 typ srflx raddr 172.17.0.1 rport 34103 tcptype passive"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:16 2 UDP 1677722110 82.16.190.80 40393 typ srflx raddr 192.168.0.182 rport 40393"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:17 2 TCP 847250430 82.16.190.80 9 typ srflx raddr 192.168.0.182 rport 9 tcptype active"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:18 2 TCP 843056126 82.16.190.80 46519 typ srflx raddr 192.168.0.182 rport 46519 tcptype passive"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:13 2 UDP 1677722109 82.16.190.80 51381 typ srflx raddr 172.17.0.1 rport 51381"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:16 1 UDP 1677722110 82.16.190.80 49196 typ srflx raddr 192.168.0.182 rport 49196"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:14 2 TCP 847250174 82.16.190.80 9 typ srflx raddr 172.17.0.1 rport 9 tcptype active"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:17 1 TCP 847250431 82.16.190.80 9 typ srflx raddr 192.168.0.182 rport 9 tcptype active"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:15 2 TCP 843055870 82.16.190.80 48999 typ srflx raddr 172.17.0.1 rport 48999 tcptype passive"}}
[webrtc] GStreamer WebRTC -- onICECandidate()
[webrtc] sending ICE candidate for /output to 127.0.0.1 (peer_id=0): 
{"type":"ice","data":{"sdpMLineIndex":0,"candidate":"candidate:18 1 TCP 843056127 82.16.190.80 34065 typ srflx raddr 192.168.0.182 rport 34065 tcptype passive"}}
[webrtc] websocket /output -- recieved message from 127.0.0.1 (peer_id=0) (639 bytes)
[webrtc] received SDP message for /output from 127.0.0.1 (peer_id=0)
v=0
o=- 3063459327295625883 2 IN IP4 127.0.0.1
s=-
t=0 0
a=msid-semantic: WMS
m=video 9 UDP/TLS/RTP/SAVPF 96
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:fr/O
a=ice-pwd:aftzGMOvJiLp3hAEwDjnlUNl
a=ice-options:trickle
a=fingerprint:sha-256 BA:3C:8B:17:19:C9:CE:09:47:57:26:58:F3:59:08:39:E0:EF:47:BE:A0:30:50:A0:A9:B0:AA:E3:42:2F:D6:CD
a=setup:active
a=mid:video0
a=recvonly
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 H264/90000
a=rtcp-fb:96 nack pli
a=fmtp:96 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e015

[webrtc] websocket /output -- recieved message from 127.0.0.1 (peer_id=0) (208 bytes)
[webrtc] received ICE message on /output from 127.0.0.1 (peer_id=0) with mline index 0; candidate: 
candidate:2147567054 1 udp 2113937151 192.168.68.128 64683 typ host generation 0 ufrag fr/O network-cost 999
[gstreamer] gstEncoder -- appsrc signalling enough data
[gstreamer] gstreamer changed state from NULL to READY ==> funnel0
[gstreamer] gstreamer changed state from NULL to READY ==> dtlsenc0
[gstreamer] gstreamer changed state from NULL to READY ==> srtpenc0
[gstreamer] gstreamer changed state from NULL to READY ==> dtlssrtpenc0
[gstreamer] gstreamer changed state from READY to PAUSED ==> funnel0
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> dtlsenc0
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> srtpenc0
[gstreamer] gstreamer changed state from READY to PAUSED ==> dtlssrtpenc0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> funnel0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> dtlsenc0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> srtpenc0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> dtlssrtpenc0
[gstreamer] gstreamer changed state from NULL to READY ==> funnel1
[gstreamer] gstreamer changed state from NULL to READY ==> dtlsenc1
[gstreamer] gstreamer changed state from NULL to READY ==> srtpenc1
[gstreamer] gstreamer changed state from NULL to READY ==> dtlssrtpenc1
[gstreamer] gstreamer changed state from READY to PAUSED ==> funnel1
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> dtlsenc1
[gstreamer] gstreamer changed state from READY to PAUSED ==> srtpenc1
[gstreamer] gstreamer changed state from READY to PAUSED ==> dtlssrtpenc1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> funnel1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> dtlsenc1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> srtpenc1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> dtlssrtpenc1
[gstreamer] gstreamer stream status ENTER ==> src
[webrtc] websocket /output -- recieved message from 127.0.0.1 (peer_id=0) (242 bytes)
[webrtc] received ICE message on /output from 127.0.0.1 (peer_id=0) with mline index 0; candidate: 
candidate:3056029747 1 udp 1677729535 113.178.86.135 64683 typ srflx raddr 192.168.68.128 rport 64683 generation 0 ufrag fr/O network-cost 999
[gstreamer] gstEncoder -- pipeline full, skipping frame 225 (1920x1080, 3110400 bytes)
video-viewer:  captured 225 frames (1920x1080)
[gstreamer] GST_LEVEL_WARNING GstDtlsSrtpDemux dtlssrtpdemux
              gstdtlssrtpdemux.c:134  sink_chain
              received invalid buffer: 1
[gstreamer] GST_LEVEL_WARNING GstDtlsSrtpDemux dtlssrtpdemux
              gstdtlssrtpdemux.c:134  sink_chain
              received invalid buffer: 1
[gstreamer] GST_LEVEL_WARNING GstDtlsSrtpDemux dtlssrtpdemux
              gstdtlssrtpdemux.c:134  sink_chain
              received invalid buffer: 1
[gstreamer] GST_LEVEL_WARNING GstDtlsSrtpDemux dtlssrtpdemux
              gstdtlssrtpdemux.c:134  sink_chain
              received invalid buffer: 1
[gstreamer] GST_LEVEL_WARNING GstDtlsSrtpDemux dtlssrtpdemux
              gstdtlssrtpdemux.c:134  sink_chain
              received invalid buffer: 1
[gstreamer] GST_LEVEL_WARNING GstDtlsSrtpDemux dtlssrtpdemux
              gstdtlssrtpdemux.c:134  sink_chain
              received invalid buffer: 1
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(Constrained\ Baseline\ Profile\)", bitrate=(uint)11907565, minimum-bitrate=(uint)1433520, maximum-bitrate=(uint)66950640;
[gstreamer] GST_LEVEL_WARNING GstDtlsSrtpDemux dtlssrtpdemux
              gstdtlssrtpdemux.c:134  sink_chain
              received invalid buffer: 1
[gstreamer] GST_LEVEL_WARNING GstDtlsSrtpDemux dtlssrtpdemux
              gstdtlssrtpdemux.c:134  sink_chain
              received invalid buffer: 1
[gstreamer] GST_LEVEL_WARNING GstDtlsSrtpDemux dtlssrtpdemux
              gstdtlssrtpdemux.c:134  sink_chain
              received invalid buffer: 1
video-viewer:  captured 250 frames (1920x1080)
video-viewer:  captured 275 frames (1920x1080)
[gstreamer] GST_LEVEL_WARNING GstDtlsSrtpDemux dtlssrtpdemux
              gstdtlssrtpdemux.c:134  sink_chain
              received invalid buffer: 1
video-viewer:  captured 300 frames (1920x1080)
[gstreamer] GST_LEVEL_WARNING GstDtlsSrtpDemux dtlssrtpdemux
              gstdtlssrtpdemux.c:134  sink_chain
              received invalid buffer: 1
video-viewer:  captured 325 frames (1920x1080)
video-viewer:  captured 350 frames (1920x1080)
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(Constrained\ Baseline\ Profile\)", bitrate=(uint)11907565, minimum-bitrate=(uint)1056720, maximum-bitrate=(uint)66950640;
[gstreamer] gstreamer mysink taglist, video-codec=(string)"H.264\ \(Constrained\ Baseline\ Profile\)", bitrate=(uint)11907565, minimum-bitrate=(uint)723120, maximum-bitrate=(uint)66950640;
video-viewer:  captured 375 frames (1920x1080)
[gstreamer] GST_LEVEL_WARNING GstDtlsSrtpDemux dtlssrtpdemux
              gstdtlssrtpdemux.c:134  sink_chain
              received invalid buffer: 1
video-viewer:  captured 400 frames (1920x1080)
video-viewer:  captured 425 frames (1920x1080)
video-viewer:  captured 450 frames (1920x1080)
[gstreamer] GST_LEVEL_WARNING GstDtlsSrtpDemux dtlssrtpdemux
              gstdtlssrtpdemux.c:134  sink_chain
              received invalid buffer: 1
video-viewer:  captured 475 frames (1920x1080)
video-viewer:  captured 500 frames (1920x1080)
video-viewer:  captured 525 frames (1920x1080)
video-viewer:  captured 550 frames (1920x1080)
video-viewer:  captured 575 frames (1920x1080)
[gstreamer] GST_LEVEL_WARNING GstDtlsSrtpDemux dtlssrtpdemux
              gstdtlssrtpdemux.c:134  sink_chain
              received invalid buffer: 1
video-viewer:  captured 600 frames (1920x1080)
[gstreamer] GST_LEVEL_WARNING GstDtlsSrtpDemux dtlssrtpdemux
              gstdtlssrtpdemux.c:134  sink_chain
              received invalid buffer: 1
video-viewer:  captured 625 frames (1920x1080)
[gstreamer] GST_LEVEL_WARNING GstDtlsSrtpDemux dtlssrtpdemux
              gstdtlssrtpdemux.c:134  sink_chain
              received invalid buffer: 1
video-viewer:  captured 650 frames (1920x1080)
video-viewer:  captured 675 frames (1920x1080)
video-viewer:  captured 700 frames (1920x1080)
[gstreamer] GST_LEVEL_WARNING GstDtlsSrtpDemux dtlssrtpdemux
              gstdtlssrtpdemux.c:134  sink_chain
              received invalid buffer: 1
video-viewer:  captured 725 frames (1920x1080)
video-viewer:  captured 750 frames (1920x1080)
video-viewer:  captured 775 frames (1920x1080)
video-viewer:  captured 800 frames (1920x1080)
video-viewer:  captured 825 frames (1920x1080)
@dusty-nv
Copy link
Owner

dusty-nv commented Jun 6, 2023

Hi @manhntm3, sorry for the delay - WebRTC networking can be a little tricky to debug, so here are some things to try to help investigate it further:

  • can you first test that video-viewer is able to playback your video file without issue without WebRTC (i.e. rendered to the display or output to another video file)

  • Then I would test that you can view a lower-resolution / lower-bitrate WebRTC stream without issue (typically I use 1280x720 or 640x480, but have also done 1920x1080 here ok), either from a camera or different video file. Try different videos to see if that helps.

  • What is the networking connection like between your Jetson and the client that you are viewing it from? I use 802.11ac WiFi here without problems, but you may want to check your signal strength of both devices, and that both devices can reliably ping each other with consistent latencies. To rule out any wireless issue, you can also temporarily try a hardwired Ethernet connection to your router or switch.

  • Also, in your command above you are using video-viewer, but the video you posted it looks like the HTML/Javascript sample Instead, if you try navigating your browser to port 8686 and view the built-in webrtc page that shows the connection stats, do you see it dropping packets/frames or does it reliably receive frames?

It would appear from your console log that the Jetson is sending your video frames out over WebRTC, but there are also these spurious messages that I haven't seen and am wondering if are related to the video or something:

[gstreamer] GST_LEVEL_WARNING   qtdemux
              qtdemux_types.c:233  qtdemux_type_get
              unknown QuickTime node type Xtra
[gstreamer] GST_LEVEL_WARNING GstQTDemux qtdemux
              qtdemux.c:3031  qtdemux_parse_trex
              failed to find fragment defaults for stream 1
[gstreamer] GST_LEVEL_WARNING GstQTDemux qtdemux
              qtdemux.c:3031  qtdemux_parse_trex
              failed to find fragment defaults for stream 2
[gstreamer] GST_LEVEL_WARNING GstDtlsSrtpDemux dtlssrtpdemux
              gstdtlssrtpdemux.c:134  sink_chain
              received invalid buffer: 1

You can also enable additional GStreamer debug messages with export GST_DEBUG=4 (see here for log level options)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants