Skip to content

Support H265 for WebRTC in Safari with go2rtc #5

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

Open
AlexxIT opened this issue Sep 22, 2022 · 43 comments
Open

Support H265 for WebRTC in Safari with go2rtc #5

AlexxIT opened this issue Sep 22, 2022 · 43 comments
Labels
go2rtc go2rtc - Ultimate streaming application

Comments

@AlexxIT
Copy link
Owner

AlexxIT commented Sep 22, 2022

go2rtc is one of the first projects in the World, that support HEVC/H.265 for WebRTC in web browser.

Maybe you can see articles about WebRTC H265 earlier. But I haven't seen any examples where the video was displayed in a popular browser. Some projects can support WebRTC H265 if they are used on the receiving and transmitting sides. But what if there is a real browser on one side?

I tried streaming the RTSP from the Dahua camera to Safari with Janus without success. This works for some H264 cameras, but not all of them. This can work for streaming H265 between two Apple devices. But this does not work for H265 cameras.

All because Apple doesn't respect world standards. You can forgot RTP Payload Format for High Efficiency Video Coding (HEVC) (RFC 7798) then work with Apple devices. They invented their own payload:

  1. You need a correct H265 stream: VPS, SPS, PPS, I-frame, P-frame(s).
  2. You need it with Annex-B headers 00 00 00 01 before each NAL unit.
  3. You need split your stream on RTP payloads with one byte header:
    • 03 for payload with VPS, SPS, PPS, I-frame start
    • 01 for all next packets from this I-frame
    • 02 for payload with P-frame
    • 00 for all next packets from this P-frame
  4. Don't forget set marker flag only for last packet of each Access Units

That's all. Now anyone can try to watch WebRTC H265 in Safari even if don't have H265 cameras. This is because go2rtc has optional transcode feature for almost any stream source:

streams:
  sonoff_camera: ffmpeg:rtsp://rtsp:[email protected]:554/av_stream/ch0#video=h265#audio=copy

If you have H265 camera, you can stream it without transcoding, even from Xiaomi Gateway 3. Because go2rtc is a small application that you can install almost anywhere.

Unfortunately Safari is the only browser at the moment that supports H265 for WebRTC.

Codecs madness

Device WebRTC MSE MP4
latency best medium bad
Desktop Chrome H264 H264, H265* H264, H265*
Desktop Safari H264, H265* H264 no
Desktop Edge H264 H264, H265* H264, H265*
Desktop Firefox H264 H264 H264
Desktop Opera no H264 H264
iPhone Safari H264, H265* no no
iPad Safari H264, H265* H264 no
Android Chrome H264 H264 H264
masOS Hass App no no no
@Frend13
Copy link

Frend13 commented Sep 22, 2022

Спасибо Вам,Вы делаете огромную и трудоемкую работу!За Getwei 3 Отдельное СПАСИБИЩЕ!

@xiangxud
Copy link

xiangxud commented Oct 4, 2022

use webcodecs

@itispip
Copy link

itispip commented Mar 5, 2023

Edge support H265 as well.

@AlexxIT
Copy link
Owner Author

AlexxIT commented Mar 5, 2023

@itispip can you show SDP that confirms your words?

@compressionist
Copy link

[Assistance needed]: Only audio played during WebRTC test via RTSP stream from H.265 file on Safari

Description: I encountered an issue while testing the WebRTC via RTSP stream from an H.265 file on Safari. When I tried to stream from a file encoded with libx265 and hevc_nvenc with opus for audio, only the audio is played for WebRTC, and only the first picture is shown for MSE.
Here's what I did:

  • Transcoded the file to an mp4 using libx265 and hevc_nvenc:
ffmpeg -re -i puppets_with_greenbg_hevc.mov -pix_fmt yuv420p -c:v libx265 -g 50 -preset:v superfast -tune:v zerolatency -c:a libopus -ar:a 48000 -ac:a 2 puppets_with_greenbg_x265_opus.mp4
ffmpeg -re -i puppets_with_greenbg_hevc.mov -c:v hevc_nvenc -g 50 -level:v auto -strict -2 -c:a libopus -ar:a 48000 -ac:a 2 puppets_with_alpha_hevc_nvenc_opus.mp4
  • Allowed WebRTC h265 in "Experimental Features" and tried H.264 streaming from a file, which worked well using the same settings in the go2rtc.yaml and ffmpeg commands for streaming.

  • Streamed RTSP from a file to go2rtc:
    ffmpeg -re -stream_loop -1 -i puppets_with_greenbg_hevc_nvenc_opus.mp4 -c copy -f rtsp rtsp://localhost:8554/stream1

  • Used the following go2rtc.yaml:

streams:
  stream1: ""
{
  "producers": [
    {},
    {
      "type": "RTSP source",
      "url": "rtsp://localhost:8554/stream1",
      "remote_addr": "[::1]:65513",
      "user_agent": "Lavf59.27.100",
      "medias": [
        "video, sendonly, 96 H265/90000",
        "audio, sendonly, 97 OPUS/48000/2"
      ],
      "tracks": [
        "96 H265/90000, sinks=1",
        "97 OPUS/48000/2, sinks=1"
      ],
      "recv": 6700364
    }
  ],
  "consumers": [
    {
      "type": "WebRTC client",
      "remote_addr": "udp4 prflx 192.168.2.10:60248 related :0",
      "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Safari/605.1.15",
      "send": 2613086
    }
  ]
}

I would appreciate your guidance on what I might be doing wrong. Thank you in advance for your help

@AlexxIT
Copy link
Owner Author

AlexxIT commented Mar 7, 2023

H264 and H265 from files may not be compatible for streaming. They may have B-frames or some others unsupported NAL types.

I don't support hardware encoding for H265 NVENC exact because it produce some kind of "bad" stream. Haven't had time to figure out the problem and fix it yet.

The best stream is made by cameras of good brands, such as Dahua.

@compressionist
Copy link

Dear AlexxIT,

Thank you for your prompt response. Do you have an example of an H.265+opus file that works well with go2rtc? Alternatively, could you provide me with a test stream from a Dahua camera or any other HEVC RTSP test stream that I can use for testing purposes? I ask this as I am currently unable to purchase a Dahua camera.

Also, regarding NVENC, I don't require a hardware video encoder. Instead, a software video encoder such as libx265 would suffice for my current needs.

Thank you for your assistance.
Best regards, Evgeny

@compressionist
Copy link

Dear AlexxIT,

I hope you are doing well. I have been attempting to create an RTSP stream without audio, and while it worked for MSE, I have yet to make it work for WebRTC. So I have a question about MSE - is it considered a Progressive Download?

Please provide me with some assistance with WebRTC. I would appreciate your help.
Thank you and best regards, Evgeny

Here are the ffmpeg commands I used for creating the RTSP stream without audio:

ffmpeg -re -i puppets_with_greenbg_hevc.mov -pix_fmt yuv420p -c:v libx265 -g 50 -preset:v superfast -tune:v zerolatency -bsf:v hevc_mp4toannexb -c:a libopus -ar:a 48000 -ac:a 2  -f mp4 -y puppets_with_greenbg_libx265_opus.mp4

ffmpeg -re -stream_loop -1 -i puppets_with_greenbg_libx265_opus.mp4 -c copy -an -rtsp_transport tcp -f rtsp rtsp://localhost:8554/stream1

Thank you.

@AlexxIT
Copy link
Owner Author

AlexxIT commented Mar 8, 2023

Are you sure you using WebRTC in Apple Safari with enabled H265 for WebRTC checkbox?

@compressionist
Copy link

compressionist commented Mar 8, 2023

Hi AlexxIT,
I enabled the "WebRTC H265 codec" feature under "Develop" > "Experimental Features." After that, I attempted to restart Safari, but should I do anything else?

@compressionist
Copy link

Hi AlexxIT,

I'm having trouble finding a working RTSP H.265 stream for Safari browser. I've tested my RTSP stream on Safari versions 16.3 (Apple M1, macOS Ventura v13.2.1) and 14.1.2 (macOS Mojave v10.14.6), but haven't had any success with WebRTC. Do you know where I can find a working stream?

Thank you, Evgeny

@compressionist
Copy link

Hi AlexxIT,

I hope this message finds you well. I have successfully tested the rtsp stream from go2rtc on the VLC media player. Here is the URL: rtsp://192.168.2.30:8554/stream1

I have tried it on both my MacBook Air and iPad, and everything appears to be working well, including the original HEVC file with alpha channel "puppets_with_alpha_hevc.mov" with AAC from Apple.

ffmpeg -re -stream_loop -1 -i puppets_with_alpha_hevc.mov -c copy -f rtsp rtsp://localhost:8554/stream1

However, I am experiencing an issue making WebRTC with HEVC work on the Safari browser. I would like your assistance in resolving this issue. I would appreciate your prompt response and help.

Thank you very much.
Best regards,
Evgeny

@AlexxIT AlexxIT added the go2rtc go2rtc - Ultimate streaming application label May 4, 2023
@alexpokotilo
Copy link

alexpokotilo commented Jul 21, 2023

I implemented the same at June, 2022 https://blog.wmspanel.com/2022/07/hevc-webrtc-apple.html
I tried to handle H265 RTP from Apple using standard Pion unpackager and of course failed.
I had to process it manually the same way and was reading RFC 7798) again and again thinking I am doing something wrong. I tried to emphasize this issue here pion/webrtc#2271 and here https://groups.google.com/g/discuss-webrtc/c/Zc3-3hddEn0 but nobody cares. Unfortunately I was the first who implemented this.
If I wait a few month and found your post this would save me a lot of time.

@AlexxIT
Copy link
Owner Author

AlexxIT commented Jul 21, 2023

@alexpokotilo fair enough. I have removed phrase about "first in the World" from readme. Go2rtc has many others "first in the World". No any problem :)

@alexpokotilo
Copy link

@AlexxIT it's not about who made it first. I just started to implement whep and found your habr article and this post and send a message to support you. When I faced with that case I thought I do something wrong.
You are the first who described this problem in details. That is for sure!

@AlexxIT
Copy link
Owner Author

AlexxIT commented Jul 21, 2023

@alexpokotilo Thank you. You are developing a really cool project. This is the first time I've seen it. Very powerful features. From the video it looks pretty handy.

@alexpokotilo
Copy link

Here is what Sergio Garcia Murillo just replied about this problem

There is an PR already available for fixing the h265 packetization at WebKit:
WebKit/WebKit#15494

As a I side note, we are working on contributing h265 support to libdatachannel/OBS WHIP:
paullouisageneau/libdatachannel#932

@jimm98y
Copy link

jimm98y commented Jun 17, 2024

I can confirm that in Safari 17.5 you have to use RFC 7798 to stream H265 over WebRTC.

@felipecrs
Copy link

H265 for WebRTC is now supported by Chrome 136+. According to my tests it's already working without any change to go2rtc.

@AlexxIT I think it would be nice to update the documentation about it, because it mentions Safari-only.

@AlexxIT
Copy link
Owner Author

AlexxIT commented May 3, 2025

@felipecrs Yes. Normal H265 support was added in go2rtc v1.9.9.
In Safari normal support of H265 according to the standards was added since version 18.

@dcorsus
Copy link

dcorsus commented Jun 2, 2025

I can also confirm that H265 using WebRTC works with Chrome on PC, not on android tablet. I tried to force go2rtc to use only H264 as follows:
webrtc:
codecs:
video:
- name: H264 # remove H265 from here
- name: VP8
audio:
- name: PCMU
streams:
88d87a05-d7f7-7e45-b1e9-E8ABFAA9F6B6_vs_videosource_token0:
- rtsp://me:Nie%[email protected]:88/videoMain
- rtsp://me:Nie%[email protected]:88/videoSub
In this config , the substream from a Foscam X5 camera is H264 but when the client request the stream (and yes the Chrome browser on Android seems to be ok with H265), I would think that go2rtc would not pick the main stream (it being H265) but would offer only H264 streams. Is my config wrong, or my understanding how go2rtc works?

Here is the info, it picked the main producer
{
"producers": [
{
"id": 8,
"format_name": "rtsp",
"protocol": "rtsp+tcp",
"remote_addr": "192.168.1.236:88",
"url": "rtsp://[email protected]:88/videoMain",
"sdp": "v=0\r\no=- 1748850175611830 1 IN IP4 192.168.1.236\r\ns=IP Camera Video\r\ni=videoMain\r\nt=0 0\r\na=tool:LIVE555 Streaming Media v2014.02.10\r\na=type:broadcast\r\na=control:*\r\na=range:npt=0-\r\na=x-qt-text-nam:IP Camera Video\r\na=x-qt-text-inf:videoMain\r\nm=video 0 RTP/AVP 96\r\nc=IN IP4 0.0.0.0\r\nb=AS:96\r\na=rtpmap:96 H265/90000\r\na=control:track1\r\nm=audio 0 RTP/AVP 0\r\nc=IN IP4 0.0.0.0\r\nb=AS:64\r\na=control:track2\r\n",
"user_agent": "go2rtc/1.9.9",
"medias": [
"video, recvonly, H265",
"audio, recvonly, PCMU/8000"
],
"receivers": [
{
"id": 9,
"codec": {
"codec_name": "hevc",
"codec_type": "video"
},
"childs": [
10
],
"bytes": 21006812,
"packets": 16380
},
{
"id": 11,
"codec": {
"codec_name": "pcm_mulaw",
"codec_type": "audio",
"sample_rate": 8000
},
"childs": [
12
],
"bytes": 1575360,
"packets": 3282
}
],
"bytes_recv": 22821908
},
{
"url": "rtsp://me:Nie%[email protected]:88/videoSub"
}
],
"consumers": [
{
"id": 7,
"format_name": "webrtc",
"protocol": "ws+udp",
"remote_addr": "192.168.1.10:58125 host",
"user_agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36",
"medias": [
"video, sendonly, VP8, VP9, AV1, H264, H265",
"audio, sendonly, OPUS/48000/2, G722/8000, PCMU/8000, PCMA/8000, L16, PCML"
],
"senders": [
{
"id": 10,
"codec": {
"codec_name": "hevc",
"codec_type": "video"
},
"parent": 9,
"bytes": 21006812,
"packets": 16380
},
{
"id": 12,
"codec": {
"codec_name": "pcm_mulaw",
"codec_type": "audio",
"sample_rate": 8000
},
"parent": 11,
"bytes": 1575360,
"packets": 3282
}
],
"bytes_send": 22839136
}
]
}

Log:

5:00:10.930 PM | debug | [webrtc] new consumer src=88d87a05-d7f7-7e45-b1e9-E8ABFAA9F6B6_vs_videosource_token0
5:00:10.930 PM | trace | [webrtc] offer:v=0o=- 5690445973551446917 2 IN IP4 127.0.0.1s=-t=0 0a=group:BUNDLE 0 1a=extmap-allow-mixeda=msid-semantic: WMSm=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 35 36 37 38 39 40 41 42 100 101 103 104 107 108 109 114 43 44 115 116 117 118 119 120 121 122 45 46 123 124 125 47c=IN IP4 0.0.0.0a=rtcp:9 IN IP4 0.0.0.0a=ice-ufrag:MdESa=ice-pwd:Cx0h1O+TfuqJcFas5cp4OBsRa=ice-options:tricklea=fingerprint:sha-256 6A:93:B3:B8:70:4B:C2:51:94:47:5D:2E:D8:8E:82:45:39:56:CF:58:97:8A:79:95:44:65:10:73:49:21:6F:6Ca=setup:actpassa=mid:0a=extmap:1 urn:ietf:params:rtp-hdrext:toffseta=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-timea=extmap:3 urn:3gpp:video-orientationa=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delaya=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-typea=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timinga=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-spacea=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mida=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-ida=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-ida=recvonlya=rtcp-muxa=rtcp-rsizea=rtpmap:96 VP8/90000a=rtcp-fb:96 goog-remba=rtcp-fb:96 transport-cca=rtcp-fb:96 ccm fira=rtcp-fb:96 nacka=rtcp-fb:96 nack plia=rtpmap:97 rtx/90000a=fmtp:97 apt=96a=rtpmap:98 VP9/90000a=rtcp-fb:98 goog-remba=rtcp-fb:98 transport-cca=rtcp-fb:98 ccm fira=rtcp-fb:98 nacka=rtcp-fb:98 nack plia=fmtp:98 profile-id=0a=rtpmap:99 rtx/90000a=fmtp:99 apt=98a=rtpmap:35 VP9/90000a=rtcp-fb:35 goog-remba=rtcp-fb:35 transport-cca=rtcp-fb:35 ccm fira=rtcp-fb:35 nacka=rtcp-fb:35 nack plia=fmtp:35 profile-id=1a=rtpmap:36 rtx/90000a=fmtp:36 apt=35a=rtpmap:37 VP9/90000a=rtcp-fb:37 goog-remba=rtcp-fb:37 transport-cca=rtcp-fb:37 ccm fira=rtcp-fb:37 nacka=rtcp-fb:37 nack plia=fmtp:37 profile-id=3a=rtpmap:38 rtx/90000a=fmtp:38 apt=37a=rtpmap:39 AV1/90000a=rtcp-fb:39 goog-remba=rtcp-fb:39 transport-cca=rtcp-fb:39 ccm fira=rtcp-fb:39 nacka=rtcp-fb:39 nack plia=fmtp:39 level-idx=5;profile=0;tier=0a=rtpmap:40 rtx/90000a=fmtp:40 apt=39a=rtpmap:41 AV1/90000a=rtcp-fb:41 goog-remba=rtcp-fb:41 transport-cca=rtcp-fb:41 ccm fira=rtcp-fb:41 nacka=rtcp-fb:41 nack plia=fmtp:41 level-idx=5;profile=1;tier=0a=rtpmap:42 rtx/90000a=fmtp:42 apt=41a=rtpmap:100 VP9/90000a=rtcp-fb:100 goog-remba=rtcp-fb:100 transport-cca=rtcp-fb:100 ccm fira=rtcp-fb:100 nacka=rtcp-fb:100 nack plia=fmtp:100 profile-id=2a=rtpmap:101 rtx/90000a=fmtp:101 apt=100a=rtpmap:103 H264/90000a=rtcp-fb:103 goog-remba=rtcp-fb:103 transport-cca=rtcp-fb:103 ccm fira=rtcp-fb:103 nacka=rtcp-fb:103 nack plia=fmtp:103 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001fa=rtpmap:104 rtx/90000a=fmtp:104 apt=103a=rtpmap:107 H264/90000a=rtcp-fb:107 goog-remba=rtcp-fb:107 transport-cca=rtcp-fb:107 ccm fira=rtcp-fb:107 nacka=rtcp-fb:107 nack plia=fmtp:107 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001fa=rtpmap:108 rtx/90000a=fmtp:108 apt=107a=rtpmap:109 H264/90000a=rtcp-fb:109 goog-remba=rtcp-fb:109 transport-cca=rtcp-fb:109 ccm fira=rtcp-fb:109 nacka=rtcp-fb:109 nack plia=fmtp:109 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001fa=rtpmap:114 rtx/90000a=fmtp:114 apt=109a=rtpmap:43 H264/90000a=rtcp-fb:43 goog-remba=rtcp-fb:43 transport-cca=rtcp-fb:43 ccm fira=rtcp-fb:43 nacka=rtcp-fb:43 nack plia=fmtp:43 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=4d001fa=rtpmap:44 rtx/90000a=fmtp:44 apt=43a=rtpmap:115 H264/90000a=rtcp-fb:115 goog-remba=rtcp-fb:115 transport-cca=rtcp-fb:115 ccm fira=rtcp-fb:115 nacka=rtcp-fb:115 nack plia=fmtp:115 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001fa=rtpmap:116 rtx/90000a=fmtp:116 apt=115a=rtpmap:117 H264/90000a=rtcp-fb:117 goog-remba=rtcp-fb:117 transport-cca=rtcp-fb:117 ccm fira=rtcp-fb:117 nacka=rtcp-fb:117 nack plia=fmtp:117 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=64001fa=rtpmap:118 rtx/90000a=fmtp:118 apt=117a=rtpmap:119 H264/90000a=rtcp-fb:119 goog-remba=rtcp-fb:119 transport-cca=rtcp-fb:119 ccm fira=rtcp-fb:119 nacka=rtcp-fb:119 nack plia=fmtp:119 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01fa=rtpmap:120 rtx/90000a=fmtp:120 apt=119a=rtpmap:121 H264/90000a=rtcp-fb:121 goog-remba=rtcp-fb:121 transport-cca=rtcp-fb:121 ccm fira=rtcp-fb:121 nacka=rtcp-fb:121 nack plia=fmtp:121 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01fa=rtpmap:122 rtx/90000a=fmtp:122 apt=121a=rtpmap:45 H265/90000a=rtcp-fb:45 goog-remba=rtcp-fb:45 transport-cca=rtcp-fb:45 ccm fira=rtcp-fb:45 nacka=rtcp-fb:45 nack plia=fmtp:45 level-id=90;profile-id=1;tier-flag=0;tx-mode=SRSTa=rtpmap:46 rtx/90000a=fmtp:46 apt=45a=rtpmap:123 red/90000a=rtpmap:124 rtx/90000a=fmtp:124 apt=123a=rtpmap:125 ulpfec/90000a=rtpmap:47 flexfec-03/90000a=rtcp-fb:47 goog-remba=rtcp-fb:47 transport-cca=fmtp:47 repair-window=10000000m=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 13 110 126c=IN IP4 0.0.0.0a=rtcp:9 IN IP4 0.0.0.0a=ice-ufrag:MdESa=ice-pwd:Cx0h1O+TfuqJcFas5cp4OBsRa=ice-options:tricklea=fingerprint:sha-256 6A:93:B3:B8:70:4B:C2:51:94:47:5D:2E:D8:8E:82:45:39:56:CF:58:97:8A:79:95:44:65:10:73:49:21:6F:6Ca=setup:actpassa=mid:1a=extmap:14 urn:ietf:params:rtp-hdrext:ssrc-audio-levela=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-timea=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mida=recvonlya=rtcp-muxa=rtcp-rsizea=rtpmap:111 opus/48000/2a=rtcp-fb:111 transport-cca=fmtp:111 minptime=10;useinbandfec=1a=rtpmap:63 red/48000/2a=fmtp:63 111/111a=rtpmap:9 G722/8000a=rtpmap:0 PCMU/8000a=rtpmap:8 PCMA/8000a=rtpmap:13 CN/8000a=rtpmap:110 telephone-event/48000a=rtpmap:126 telephone-event/8000
5:00:10.941 PM | trace | [webrtc] remote candidate=candidate:4031358665 1 udp 2113937151 192.168.1.10 58125 typ host generation 0 ufrag MdES network-cost 999
5:00:11.017 PM | trace | [webrtc] remote candidate=candidate:4031358665 1 udp 2113937151 192.168.1.10 44529 typ host generation 0 ufrag MdES network-cost 999
5:00:11.017 PM | trace | [webrtc] remote candidate=candidate:3695380136 1 udp 1677729535 94.224.67.92 12571 typ srflx raddr 192.168.1.10 rport 58125 generation 0 ufrag MdES network-cost 999
5:00:11.017 PM | trace | [webrtc] remote candidate=candidate:3695380136 1 udp 1677729535 94.224.67.92 45332 typ srflx raddr 192.168.1.10 rport 44529 generation 0 ufrag MdES network-cost 999
5:00:11.384 PM | trace | [webrtc] answerv=0o=- 6201080948852714287 1748876411 IN IP4 0.0.0.0s=-t=0 0a=msid-semantic:WMS*a=fingerprint:sha-256 3F:93:85:2C:18:3B:B5:6E:D1:6A:08:21:36:DE:E9:58:CF:29:50:F2:B2:20:53:C2:54:27:55:BF:04:50:97:3Ba=extmap-allow-mixeda=group:BUNDLE 0 1m=video 9 UDP/TLS/RTP/SAVPF 103 115 119 45c=IN IP4 0.0.0.0a=setup:activea=mid:0a=ice-ufrag:hEmCIJllWeRKrniUa=ice-pwd:cltWKFhrkVrbVdICmCDNUpOgPUjLFTIva=rtcp-muxa=rtcp-rsizea=rtpmap:103 H264/90000a=fmtp:103 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001fa=rtcp-fb:103 goog-remba=rtcp-fb:103 ccm fira=rtcp-fb:103 nacka=rtcp-fb:103 nack plia=rtcp-fb:103 nacka=rtcp-fb:103 nack plia=rtcp-fb:103 transport-cca=rtpmap:115 H264/90000a=fmtp:115 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001fa=rtcp-fb:115 goog-remba=rtcp-fb:115 ccm fira=rtcp-fb:115 nacka=rtcp-fb:115 nack plia=rtcp-fb:115 nacka=rtcp-fb:115 nack plia=rtcp-fb:115 transport-cca=rtpmap:119 H264/90000a=fmtp:119 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01fa=rtcp-fb:119 goog-remba=rtcp-fb:119 ccm fira=rtcp-fb:119 nacka=rtcp-fb:119 nack plia=rtcp-fb:119 nacka=rtcp-fb:119 nack plia=rtcp-fb:119 transport-cca=rtpmap:45 H265/90000a=fmtp:45 level-id=90;profile-id=1;tier-flag=0;tx-mode=SRSTa=rtcp-fb:45 goog-remba=rtcp-fb:45 ccm fira=rtcp-fb:45 nacka=rtcp-fb:45 nack plia=rtcp-fb:45 nacka=rtcp-fb:45 nack plia=rtcp-fb:45 transport-cca=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01a=ssrc:1388470640 cname:go2rtca=ssrc:1388470640 msid:go2rtc go2rtc-videoa=ssrc:1388470640 mslabel:go2rtca=ssrc:1388470640 label:go2rtc-videoa=msid:go2rtc go2rtc-videoa=sendonlym=audio 9 UDP/TLS/RTP/SAVPF 111 0 8c=IN IP4 0.0.0.0a=setup:activea=mid:1a=ice-ufrag:hEmCIJllWeRKrniUa=ice-pwd:cltWKFhrkVrbVdICmCDNUpOgPUjLFTIva=rtcp-muxa=rtcp-rsizea=rtpmap:111 opus/48000/2a=fmtp:111 minptime=10;useinbandfec=1a=rtcp-fb:111 transport-cca=rtpmap:0 PCMU/8000a=rtpmap:8 PCMA/8000a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01a=ssrc:2735493391 cname:go2rtca=ssrc:2735493391 msid:go2rtc go2rtc-audioa=ssrc:2735493391 mslabel:go2rtca=ssrc:2735493391 label:go2rtc-audioa=msid:go2rtc go2rtc-audioa=sendonly
5:00:11.384 PM | trace | [webrtc] local candidate=candidate:632112936 1 udp 2130706431 192.168.1.184 8555 typ host
5:00:11.384 PM | trace | [webrtc] local candidate=candidate:2556311240 1 tcp 1671430143 192.168.1.184 8555 typ host tcptype passive
5:00:11.403 PM | trace | [webrtc] local candidate=candidate:181094971 1 udp 1694498815 94.224.67.92 46477 typ srflx raddr 0.0.0.0 rport 61580

Suggestions very much appreciated!!

@felipecrs
Copy link

felipecrs commented Jun 2, 2025

@dcorsus, can you visit this site in your tablet and paste the result here?

For my tablet, I ran into another problem and thus I'm not able to even use Chrome 136+:

@dcorsus
Copy link

dcorsus commented Jun 2, 2025

@felipecrs Here you go:

receiver video
video/VP8,,90000,
video/rtx,,90000,
video/VP9,,90000,profile-id=0
video/VP9,,90000,profile-id=1
video/VP9,,90000,profile-id=3
video/AV1,,90000,level-idx=5;profile=0;tier=0
video/AV1,,90000,level-idx=5;profile=1;tier=0
video/VP9,,90000,profile-id=2
video/H264,,90000,level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
video/H264,,90000,level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
video/H264,,90000,level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f
video/H264,,90000,level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=4d001f
video/H264,,90000,level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f
video/H264,,90000,level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=64001f
video/H264,,90000,level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
video/H264,,90000,level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
video/H265,,90000,level-id=90;profile-id=1;tier-flag=0;tx-mode=SRST
video/red,,90000,
video/ulpfec,,90000,
video/flexfec-03,,90000,repair-window=10000000

receiver audio
audio/opus,2,48000,minptime=10;useinbandfec=1
audio/red,2,48000,
audio/G722,1,8000,
audio/PCMU,1,8000,
audio/PCMA,1,8000,
audio/CN,1,8000,
audio/telephone-event,1,48000,
audio/telephone-event,1,8000,

sender video
video/VP8,,90000,
video/rtx,,90000,
video/VP9,,90000,profile-id=0
video/H264,,90000,level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
video/H264,,90000,level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f
video/H264,,90000,level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f
video/H265,,90000,level-id=93;profile-id=1;tier-flag=0;tx-mode=SRST
video/red,,90000,
video/ulpfec,,90000,

sender audio
audio/opus,2,48000,minptime=10;useinbandfec=1
audio/red,2,48000,
audio/G722,1,8000,
audio/PCMU,1,8000,
audio/PCMA,1,8000,
audio/CN,1,8000,
audio/telephone-event,1,48000,
audio/telephone-event,1,8000,

video.canPlayType
video/mp4; codecs="avc1.42401E" = true / probably
video/mp4; codecs="avc1.42C01E" = true / probably
video/mp4; codecs="avc1.42E01E" = true / probably
video/mp4; codecs="avc1.42001E" = true / probably
video/mp4; codecs="avc1.4D401E" = true / probably
video/mp4; codecs="avc1.4D001E" = true / probably
video/mp4; codecs="avc1.640032" = true / probably
video/mp4; codecs="avc1.640C32" = true / probably
video/mp4; codecs="avc1.F4001F" = true / maybe
video/mp4; codecs="hvc1.1.6.L93.B0" = true / probably
video/mp4; codecs="hev1.1.6.L93.B0" = true / probably
video/mp4; codecs="hev1.2.4.L120.B0" = false /
video/mp4; codecs="flac" = true / probably
video/mp4; codecs="opus" = true / probably
video/mp4; codecs="mp3" = false / probably
video/mp4; codecs="null" = false /
application/vnd.apple.mpegurl = false / maybe

@felipecrs
Copy link

felipecrs commented Jun 2, 2025

These lines probably mean your device is advertising H.265 as playable:

video/H265,,90000,level-id=90;profile-id=1;tier-flag=0;tx-mode=SRST
video/mp4; codecs="hev1.1.6.L93.B0" = true / probably

Maybe @AlexxIT has some idea on why it's not working.

@dcorsus
Copy link

dcorsus commented Jun 2, 2025

@felipecrs , Indeed it does but I want go2rtc to only pick streams that are H264 by config, and maybe I'm not understanding how the config should be ... or.... it is simply not supported :-( as a config item. I on purpose configured streams with multiple "sub"streams in the hope that during negotiation, go2rtc would pick one that matches, request and/or restrictions implied by configuration

@felipecrs
Copy link

Oh. I think the only way to do that is by removing the H265 stream from the list and leaving only the H264. But anyway, H265 is better and instead your tablet was supposed to be able to play it.

@dcorsus
Copy link

dcorsus commented Jun 2, 2025

I just realized (while browsing the documentation) , that this config was suggest to me by chatGPT and therefore could be completely bogus .....

webrtc:
codecs:
video:
-name: H264 # remove H265 from here
-name: VP8
audio:
- name: PCMU

@felipecrs
Copy link

felipecrs commented Jun 2, 2025

Oh yeah. I have no idea what is that.

@AlexxIT
Copy link
Owner Author

AlexxIT commented Jun 2, 2025

One of the examples where GPT completely made up a non-existent part of the config.

@felipecrs
Copy link

Anyway, @dcorsus, about your tablet not playing H.265 over WebRTC:

I recommend you check for existing issues in the go2rtc project, and create one if there's none for the same problem.

@AlexxIT
Copy link
Owner Author

AlexxIT commented Jun 3, 2025

If your device doesn't support the H265 codec, it's not go2rtc's problem. No need to create new issues :)

Due to licensing issues, this codec must be supported not only at the software level (such as the latest version of the Chrome browser), but also at the hardware level. The hardware developer has to pay money to the patent owner of this codec.

@dcorsus
Copy link

dcorsus commented Jun 3, 2025

Agree with @AlexxIT , if not supported in HW, it isn't a go2rtc problem. It does raise the question why the browser is so dumb to advertise its capability for H265 if the underlying HW can't. Oh well, not a discussion for here.
However, I manipulated the SDP offer request and removed H265 from it, but go2rtc would still respond with the same rtsp producer.
So question: if I configure a stream as follows:

streams:
  88d87a05-d7f7-7e45-b1e9-E8ABFAA9F6B6_vs_videosource_token0:
    - rtsp://me:Nie%[email protected]:88/videoMain
    - rtsp://me:Nie%[email protected]:88/videoSub

Where the videoMain is H265 and videoSub is h264, can go2rtc pick the right rtsp matching stream or will it always pick the first stream, in which case I would expect go2rtc to return an unsuccessful sort of SDP response. From the documentation, I interpret that go2rtc is capable of picking the right substream, no? Does it need perhaps attributes for that?
Thanks for sharing you insight.

@AlexxIT
Copy link
Owner Author

AlexxIT commented Jun 3, 2025

If the client supports only H264, main has H265 codec and sub has H264 codec, everything should work. Go2rtc supports this.

@dcorsus
Copy link

dcorsus commented Jun 3, 2025

Thanks @AlexxIT , that was my understanding as well. Ah, I was struggling a bit with turning on logging for RTSP but got it going now, and I indeed see that go2rtc queries (Describe) both main and sub and guess what, the camera (foscam x5) reports only h265 for both main and sub (grrrr). Reolink TrackMix seems to do the same on all 3 substreams. hmmm what's up with that....

@felipecrs
Copy link

If your browser advertises H.265 as playable, then it should play it. Otherwise it should have advertised as non playable.

It may be worth reporting a chromium bug for this.

@felipecrs
Copy link

felipecrs commented Jun 4, 2025

If your device doesn't support the H265 codec, it's not go2rtc's problem. No need to create new issues :)

Due to licensing issues, this codec must be supported not only at the software level (such as the latest version of the Chrome browser), but also at the hardware level. The hardware developer has to pay money to the patent owner of this codec.

The problem is not that it does not support it. The problem is that it advertises as supported:

receiver video
video/H265,,90000,level-id=90;profile-id=1;tier-flag=0;tx-mode=SRST

video.canPlayType
video/mp4; codecs="hev1.1.6.L93.B0" = true / probably

@AlexxIT, it could either be an issue with go2rtc or an issue with Chromium as well. I think it should be reported so that it can be investigated.

And if there's indeed no issue with go2rtc, I would recommend reporting a bug to Chromium. The browser shouldn't advertise H.265 as playable if it is not.

I reported the issue with my tablet to Chromium, and it just got fixed (only in Chrome Canary for now). Now my Teclast P20HD with Android 10 and an Unisoc SC9863A can play H.265 over WebRTC.

@AlexxIT
Copy link
Owner Author

AlexxIT commented Jun 4, 2025

If the browser shows that it can play this codec - then of course it could be a go2rtc problem.

But, for example, there's a browser like Safari. The worst browser to date, in my opinion (because IE is no longer relevant).
Its older versions are lying about the list of supported codecs. So I had to write a workaround code that solves this issue:
https://github.com/AlexxIT/go2rtc/blob/ae8145f26696ffc19a13fea4a21b4a5306fc0e3a/www/video-rtc.js#L256-L262

@dcorsus
Copy link

dcorsus commented Jun 4, 2025

Thanks @AlexxIT and @felipecrs for your comments. First of all, congrats @felipecrs to convince the chromium crowd they had an issue, even if they couldn't reproduce it themselves. You seem quite knowledgeable of Android and probably a lot more.

I'm trying to cut through my own noise. On a windows laptop running chrome, I can have all my cameras with all its sub-streams running simultaneous, no issue.

Image

Of the 3 cameras. the Trackmix has H265 in its main profile(000), H264 in sub (001) and H265 in its autotrack (003). The reolink has H264 in main (000) and Sub (001) and I see no difference in the SDP info its returns on a Describe. The Foscam (Fussy) has H265 in main and H264 in sub. Obviously main , sub, etc have different framerates , bit rates, size ..

Now the results are all over the place when I use either a Lenovo android tablet (v13) or a Samsung tablet or Chrome or Opera on the tablet, so I'm trying to sort through what works and what doesn't. Interestingly enough the Reolink (both streams H264) doesn't seem to work at all on the Lenovo tablet including using the go2rtc built in feature to open a stream. No errors anywhere (urgghh). The Foscam on the other hand, might have some timing issue, because I can play the substream (H264) on the Lenovo tablet, BUT, if I first start the main stream (spinning wheel) and subsequently the substream, neither streams will start playing.

Sorry for my rambling, I'll dig around some more, if you have pointers as to what I should pay attention to or where I can get more info , perhaps straight out of the codec, maybe I can understand this better and find a way to properly select the streams that work.

I would say that for all non-working scenarios, the player "tries" to move to play state but never gets there, somehow it either is not receiving, or figuring out the metadata of the stream and remains stuck in this state without an error, while go2rtc is merrily streaming packets to the browser and the browser (using chrome://webrtc-internals) is merrily accepting these packets.

@dcorsus
Copy link

dcorsus commented Jun 4, 2025

@AlexxIT , perhaps something to look at ....

Test scenario:
Reolink Trackmix camera with 3 substreams with profiles 000,001 and 003. I'm streaming towards my Lenovo tablet, running Chrome , which doesn't do H265 (despite it advertising).

I'm starting substream 000, which is H265 so we have our spinner.
I start substream 001 which is H264 and streams ok.
If I now start profile 003 , which now does not work. It does work when I start that by itself.

Finding:

  • Seems like the camera might only have one codec or limited codec (re)use depending on coding. For example, when no streams are active, a describe (SDP) answer from the camera for substream 003 results in a wide array of codec choices H265 and H264. Now when I first start substream 000 (H265) and substream 001 (H264), the SDP returned for substream 003 is now limited to one codec.

Now have a look at this log. My client sends an offer with all codecs under the sun. A RSTP Describe SDP response only lists H265/90000 with profile 95, but in go2rtc's SDP response to the requestor, it lists these codecs: video 9 UDP/TLS/RTP/SAVPF 103 115 119 45, of which most are H264 (103, 115, 119) and only code 45 is a H265.

Is that by design because I suspect the camera has no H264 capable codec available at that point in time.

Thoughts?

1:49:18.281 PM | debug | [webrtc] new consumer src=15011100-0003-1113-0605-ec71db3e45af_003 -- | -- | -- 1:49:18.295 PM | trace | [webrtc] remote candidate=candidate:1260967208 1 udp 2113937151 192.168.1.10 52008 typ host generation 0 ufrag 0XWt network-cost 999 1:49:18.282 PM | trace | [webrtc] offer:v=0o=- 482034942108192081 2 IN IP4 127.0.0.1s=-t=0 0a=group:BUNDLE 0 1a=extmap-allow-mixeda=msid-semantic: WMSm=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 35 36 37 38 39 40 41 42 100 101 103 104 107 108 109 114 43 44 115 116 117 118 119 120 121 122 45 46 123 124 125 47c=IN IP4 0.0.0.0a=rtcp:9 IN IP4 0.0.0.0a=ice-ufrag:0XWta=ice-pwd:pt98I5+4Lfcv7VJPfoDj9ZoEa=ice-options:tricklea=fingerprint:sha-256 0D:90:3C:4E:DB:18:62:F2:9C:05:7D:C7:0F:0A:2F:7B:14:AB:16:CE:06:90:8A:20:E4:F8:97:11:CB:77:03:D2a=setup:actpassa=mid:0a=extmap:1 urn:ietf:params:rtp-hdrext:toffseta=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-timea=extmap:3 urn:3gpp:video-orientationa=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delaya=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-typea=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timinga=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-spacea=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mida=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-ida=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-ida=recvonlya=rtcp-muxa=rtcp-rsizea=rtpmap:96 VP8/90000a=rtcp-fb:96 goog-remba=rtcp-fb:96 transport-cca=rtcp-fb:96 ccm fira=rtcp-fb:96 nacka=rtcp-fb:96 nack plia=rtpmap:97 rtx/90000a=fmtp:97 apt=96a=rtpmap:98 VP9/90000a=rtcp-fb:98 goog-remba=rtcp-fb:98 transport-cca=rtcp-fb:98 ccm fira=rtcp-fb:98 nacka=rtcp-fb:98 nack plia=fmtp:98 profile-id=0a=rtpmap:99 rtx/90000a=fmtp:99 apt=98a=rtpmap:35 VP9/90000a=rtcp-fb:35 goog-remba=rtcp-fb:35 transport-cca=rtcp-fb:35 ccm fira=rtcp-fb:35 nacka=rtcp-fb:35 nack plia=fmtp:35 profile-id=1a=rtpmap:36 rtx/90000a=fmtp:36 apt=35a=rtpmap:37 VP9/90000a=rtcp-fb:37 goog-remba=rtcp-fb:37 transport-cca=rtcp-fb:37 ccm fira=rtcp-fb:37 nacka=rtcp-fb:37 nack plia=fmtp:37 profile-id=3a=rtpmap:38 rtx/90000a=fmtp:38 apt=37a=rtpmap:39 AV1/90000a=rtcp-fb:39 goog-remba=rtcp-fb:39 transport-cca=rtcp-fb:39 ccm fira=rtcp-fb:39 nacka=rtcp-fb:39 nack plia=fmtp:39 level-idx=5;profile=0;tier=0a=rtpmap:40 rtx/90000a=fmtp:40 apt=39a=rtpmap:41 AV1/90000a=rtcp-fb:41 goog-remba=rtcp-fb:41 transport-cca=rtcp-fb:41 ccm fira=rtcp-fb:41 nacka=rtcp-fb:41 nack plia=fmtp:41 level-idx=5;profile=1;tier=0a=rtpmap:42 rtx/90000a=fmtp:42 apt=41a=rtpmap:100 VP9/90000a=rtcp-fb:100 goog-remba=rtcp-fb:100 transport-cca=rtcp-fb:100 ccm fira=rtcp-fb:100 nacka=rtcp-fb:100 nack plia=fmtp:100 profile-id=2a=rtpmap:101 rtx/90000a=fmtp:101 apt=100a=rtpmap:103 H264/90000a=rtcp-fb:103 goog-remba=rtcp-fb:103 transport-cca=rtcp-fb:103 ccm fira=rtcp-fb:103 nacka=rtcp-fb:103 nack plia=fmtp:103 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001fa=rtpmap:104 rtx/90000a=fmtp:104 apt=103a=rtpmap:107 H264/90000a=rtcp-fb:107 goog-remba=rtcp-fb:107 transport-cca=rtcp-fb:107 ccm fira=rtcp-fb:107 nacka=rtcp-fb:107 nack plia=fmtp:107 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001fa=rtpmap:108 rtx/90000a=fmtp:108 apt=107a=rtpmap:109 H264/90000a=rtcp-fb:109 goog-remba=rtcp-fb:109 transport-cca=rtcp-fb:109 ccm fira=rtcp-fb:109 nacka=rtcp-fb:109 nack plia=fmtp:109 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001fa=rtpmap:114 rtx/90000a=fmtp:114 apt=109a=rtpmap:43 H264/90000a=rtcp-fb:43 goog-remba=rtcp-fb:43 transport-cca=rtcp-fb:43 ccm fira=rtcp-fb:43 nacka=rtcp-fb:43 nack plia=fmtp:43 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=4d001fa=rtpmap:44 rtx/90000a=fmtp:44 apt=43a=rtpmap:115 H264/90000a=rtcp-fb:115 goog-remba=rtcp-fb:115 transport-cca=rtcp-fb:115 ccm fira=rtcp-fb:115 nacka=rtcp-fb:115 nack plia=fmtp:115 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001fa=rtpmap:116 rtx/90000a=fmtp:116 apt=115a=rtpmap:117 H264/90000a=rtcp-fb:117 goog-remba=rtcp-fb:117 transport-cca=rtcp-fb:117 ccm fira=rtcp-fb:117 nacka=rtcp-fb:117 nack plia=fmtp:117 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=64001fa=rtpmap:118 rtx/90000a=fmtp:118 apt=117a=rtpmap:119 H264/90000a=rtcp-fb:119 goog-remba=rtcp-fb:119 transport-cca=rtcp-fb:119 ccm fira=rtcp-fb:119 nacka=rtcp-fb:119 nack plia=fmtp:119 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01fa=rtpmap:120 rtx/90000a=fmtp:120 apt=119a=rtpmap:121 H264/90000a=rtcp-fb:121 goog-remba=rtcp-fb:121 transport-cca=rtcp-fb:121 ccm fira=rtcp-fb:121 nacka=rtcp-fb:121 nack plia=fmtp:121 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01fa=rtpmap:122 rtx/90000a=fmtp:122 apt=121a=rtpmap:45 H265/90000a=rtcp-fb:45 goog-remba=rtcp-fb:45 transport-cca=rtcp-fb:45 ccm fira=rtcp-fb:45 nacka=rtcp-fb:45 nack plia=fmtp:45 level-id=90;profile-id=1;tier-flag=0;tx-mode=SRSTa=rtpmap:46 rtx/90000a=fmtp:46 apt=45a=rtpmap:123 red/90000a=rtpmap:124 rtx/90000a=fmtp:124 apt=123a=rtpmap:125 ulpfec/90000a=rtpmap:47 flexfec-03/90000a=rtcp-fb:47 goog-remba=rtcp-fb:47 transport-cca=fmtp:47 repair-window=10000000m=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 13 110 126c=IN IP4 0.0.0.0a=rtcp:9 IN IP4 0.0.0.0a=ice-ufrag:0XWta=ice-pwd:pt98I5+4Lfcv7VJPfoDj9ZoEa=ice-options:tricklea=fingerprint:sha-256 0D:90:3C:4E:DB:18:62:F2:9C:05:7D:C7:0F:0A:2F:7B:14:AB:16:CE:06:90:8A:20:E4:F8:97:11:CB:77:03:D2a=setup:actpassa=mid:1a=extmap:14 urn:ietf:params:rtp-hdrext:ssrc-audio-levela=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-timea=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mida=recvonlya=rtcp-muxa=rtcp-rsizea=rtpmap:111 opus/48000/2a=rtcp-fb:111 transport-cca=fmtp:111 minptime=10;useinbandfec=1a=rtpmap:63 red/48000/2a=fmtp:63 111/111a=rtpmap:9 G722/8000a=rtpmap:0 PCMU/8000a=rtpmap:8 PCMA/8000a=rtpmap:13 CN/8000a=rtpmap:110 telephone-event/48000a=rtpmap:126 telephone-event/8000 1:49:18.409 PM | trace | [webrtc] remote candidate=candidate:1260967208 1 udp 2113937151 192.168.1.10 40706 typ host generation 0 ufrag 0XWt network-cost 999 1:49:18.409 PM | trace | [webrtc] remote candidate=candidate:1907461702 1 udp 1677729535 94.224.67.92 23293 typ srflx raddr 192.168.1.10 rport 52008 generation 0 ufrag 0XWt network-cost 999 1:49:18.409 PM | trace | [webrtc] remote candidate=candidate:1907461702 1 udp 1677729535 94.224.67.92 7743 typ srflx raddr 192.168.1.10 rport 40706 generation 0 ufrag 0XWt network-cost 999 1:49:18.411 PM | trace | [rtsp] client request:DESCRIBE rtsp://192.168.1.98:554/Preview_01_autotrack RTSP/1.0Require: www.onvif.org/ver20/backchannelUser-Agent: go2rtc/1.9.9CSeq: 1Accept: application/sdp 1:49:18.497 PM | trace | [rtsp] client response:RTSP/1.0 401 UnauthorizedWww-Authenticate: Digest realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584"Cseq: 1Date: Wed, Jun 04 2025 11:49:20 GMT 1:49:18.497 PM | trace | [rtsp] client request:DESCRIBE rtsp://192.168.1.98:554/Preview_01_autotrack RTSP/1.0Accept: application/sdpRequire: www.onvif.org/ver20/backchannelUser-Agent: go2rtc/1.9.9CSeq: 2Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98:554/Preview_01_autotrack", response="fd782c11add043146f19d70a670a71d1" 1:49:18.538 PM | trace | [rtsp] client response:RTSP/1.0 200 OKContent-Base: rtsp://192.168.1.98/Preview_02_main/Content-Type: application/sdpContent-Length: 855Cseq: 2Date: Wed, Jun 04 2025 11:49:20 GMTv=0o=- 1748963808529032 1 IN IP4 192.168.0.3s=Session streamed by "preview"t=0 0a=tool:BC Streaming Media v202210012022.10.01a=type:broadcasta=control:*a=range:npt=now-a=x-qt-text-nam:Session streamed by "preview"m=video 0 RTP/AVP 96c=IN IP4 0.0.0.0b=AS:8192a=rtpmap:96 H265/90000a=fmtp:96 profile-space=0;profile-id=1;tier-flag=0;level-id=150;interop-constraints=000000000000;sprop-vps=QAEMAf//AWAAAAMAAAMAAAMAAAMAlqwJ;sprop-sps=QgEBAWAAAAMAAAMAAAMAAAMAlqADwIARB8uKrTuiS7I=;sprop-pps=RAHAcvAbJA==a=recvonlya=control:track1m=audio 0 RTP/AVP 97c=IN IP4 0.0.0.0b=AS:8192a=rtpmap:97 MPEG4-GENERIC/16000a=fmtp:97 streamtype=5;profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1408a=recvonlya=control:track2m=audio 0 RTP/AVP 0a=control:track3a=rtpmap:0 PCMU/8000a=sendonly 1:49:18.574 PM | trace | [rtsp] client request:SETUP rtsp://192.168.1.98/Preview_02_main/track1 RTSP/1.0Transport: RTP/AVP/TCP;unicast;interleaved=0-1CSeq: 3Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/track1", response="55cbaaeb66dea70060402f61fe376c11" 1:49:18.668 PM | trace | [rtsp] client response:RTSP/1.0 200 OKCseq: 3Date: Wed, Jun 04 2025 11:49:20 GMTTransport: RTP/AVP/TCP;unicast;destination=192.168.1.184;source=192.168.1.98;interleaved=0-1Session: 45A64243;timeout=65 1:49:18.669 PM | trace | [rtsp] client request:PLAY rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="30fc0cb13103d89c771579e553db1385"Session: 45A64243CSeq: 4 1:49:18.718 PM | trace | [rtsp] client response:RTSP/1.0 200 OKCseq: 4Date: Wed, Jun 04 2025 11:49:20 GMTRange: npt=0.000-Session: 45A64243Rtp-Info: url=rtsp://192.168.1.98/Preview_02_main/track1;seq=41973;rtptime=3667296353,url=rtsp://192.168.1.98/Preview_02_main/track2;seq=0;rtptime=0,url=rtsp://192.168.1.98/Preview_02_main/track3;seq=0;rtptime=0 1:49:18.846 PM | trace | [webrtc] answerv=0o=- 8336207202157672804 1749037758 IN IP4 0.0.0.0s=-t=0 0a=msid-semantic:WMS*a=fingerprint:sha-256 96:04:CB:1D:AB:8E:AD:A8:3F:7B:C4:CE:19:1B:16:B5:4F:0A:9F:33:8D:6A:C2:57:DD:A8:BE:6E:D1:E6:6B:4Da=extmap-allow-mixeda=group:BUNDLE 0 1m=video 9 UDP/TLS/RTP/SAVPF 103 115 119 45c=IN IP4 0.0.0.0a=setup:activea=mid:0a=ice-ufrag:ykTHKrupBEJYCsLAa=ice-pwd:ftKWMPQjwXqxjSNKhHUqzLGSjNDhxRNra=rtcp-muxa=rtcp-rsizea=rtpmap:103 H264/90000a=fmtp:103 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001fa=rtcp-fb:103 goog-remba=rtcp-fb:103 ccm fira=rtcp-fb:103 nacka=rtcp-fb:103 nack plia=rtcp-fb:103 nacka=rtcp-fb:103 nack plia=rtcp-fb:103 transport-cca=rtpmap:115 H264/90000a=fmtp:115 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001fa=rtcp-fb:115 goog-remba=rtcp-fb:115 ccm fira=rtcp-fb:115 nacka=rtcp-fb:115 nack plia=rtcp-fb:115 nacka=rtcp-fb:115 nack plia=rtcp-fb:115 transport-cca=rtpmap:119 H264/90000a=fmtp:119 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01fa=rtcp-fb:119 goog-remba=rtcp-fb:119 ccm fira=rtcp-fb:119 nacka=rtcp-fb:119 nack plia=rtcp-fb:119 nacka=rtcp-fb:119 nack plia=rtcp-fb:119 transport-cca=rtpmap:45 H265/90000a=fmtp:45 level-id=90;profile-id=1;tier-flag=0;tx-mode=SRSTa=rtcp-fb:45 goog-remba=rtcp-fb:45 ccm fira=rtcp-fb:45 nacka=rtcp-fb:45 nack plia=rtcp-fb:45 nacka=rtcp-fb:45 nack plia=rtcp-fb:45 transport-cca=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01a=ssrc:336754385 cname:go2rtca=ssrc:336754385 msid:go2rtc go2rtc-videoa=ssrc:336754385 mslabel:go2rtca=ssrc:336754385 label:go2rtc-videoa=msid:go2rtc go2rtc-videoa=sendonlym=audio 9 UDP/TLS/RTP/SAVPF 111 0 8c=IN IP4 0.0.0.0a=setup:activea=mid:1a=ice-ufrag:ykTHKrupBEJYCsLAa=ice-pwd:ftKWMPQjwXqxjSNKhHUqzLGSjNDhxRNra=rtcp-muxa=rtcp-rsizea=rtpmap:111 opus/48000/2a=fmtp:111 minptime=10;useinbandfec=1a=rtcp-fb:111 transport-cca=rtpmap:0 PCMU/8000a=rtpmap:8 PCMA/8000a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01a=ssrc:2051924775 cname:go2rtca=ssrc:2051924775 msid:go2rtc go2rtc-audioa=ssrc:2051924775 mslabel:go2rtca=ssrc:2051924775 label:go2rtc-audioa=msid:go2rtc go2rtc-audioa=inactive 1:49:18.847 PM | trace | [webrtc] local candidate=candidate:632112936 1 udp 2130706431 192.168.1.184 8555 typ host 1:49:18.847 PM | trace | [webrtc] local candidate=candidate:2556311240 1 tcp 1671430143 192.168.1.184 8555 typ host tcptype passive 1:49:18.888 PM | trace | [webrtc] local candidate=candidate:181094971 1 udp 1694498815 94.224.67.92 11486 typ srflx raddr 0.0.0.0 rport 51948

@AlexxIT
Copy link
Owner Author

AlexxIT commented Jun 4, 2025

It's impossible to read the logs from the browser. The formatting is destroyed in them.

@dcorsus
Copy link

dcorsus commented Jun 4, 2025

Hear ye, was in parallel trying to post with structure. Is there a way to export the log?

@AlexxIT
Copy link
Owner Author

AlexxIT commented Jun 4, 2025

The same log is displayed in the OS console.

@dcorsus
Copy link

dcorsus commented Jun 4, 2025

<style> </style>

<script src="./go2rtc - Logs_files/main.js.download"> </script>Clean Auto Update: ON Reverse Log Order: OFF

 

Time Level Message
1:49:18.281 PM debug [webrtc] new consumer src=15011100-0003-1113-0605-ec71db3e45af_003
1:49:18.295 PM trace [webrtc] remote candidate=candidate:1260967208 1 udp 2113937151 192.168.1.10 52008 typ host generation 0 ufrag 0XWt network-cost 999
1:49:18.282 PM trace [webrtc] offer: v=0 o=- 482034942108192081 2 IN IP4 127.0.0.1 s=- t=0 0 a=group:BUNDLE 0 1 a=extmap-allow-mixed a=msid-semantic: WMS m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 35 36 37 38 39 40 41 42 100 101 103 104 107 108 109 114 43 44 115 116 117 118 119 120 121 122 45 46 123 124 125 47 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:0XWt a=ice-pwd:pt98I5+4Lfcv7VJPfoDj9ZoE a=ice-options:trickle a=fingerprint:sha-256 0D:90:3C:4E:DB:18:62:F2:9C:05:7D:C7:0F:0A:2F:7B:14:AB:16:CE:06:90:8A:20:E4:F8:97:11:CB:77:03:D2 a=setup:actpass a=mid:0 a=extmap:1 urn:ietf:params:rtp-hdrext:toffset a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:3 urn:3gpp:video-orientation a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id a=recvonly a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=rtpmap:97 rtx/90000 a=fmtp:97 apt=96 a=rtpmap:98 VP9/90000 a=rtcp-fb:98 goog-remb a=rtcp-fb:98 transport-cc a=rtcp-fb:98 ccm fir a=rtcp-fb:98 nack a=rtcp-fb:98 nack pli a=fmtp:98 profile-id=0 a=rtpmap:99 rtx/90000 a=fmtp:99 apt=98 a=rtpmap:35 VP9/90000 a=rtcp-fb:35 goog-remb a=rtcp-fb:35 transport-cc a=rtcp-fb:35 ccm fir a=rtcp-fb:35 nack a=rtcp-fb:35 nack pli a=fmtp:35 profile-id=1 a=rtpmap:36 rtx/90000 a=fmtp:36 apt=35 a=rtpmap:37 VP9/90000 a=rtcp-fb:37 goog-remb a=rtcp-fb:37 transport-cc a=rtcp-fb:37 ccm fir a=rtcp-fb:37 nack a=rtcp-fb:37 nack pli a=fmtp:37 profile-id=3 a=rtpmap:38 rtx/90000 a=fmtp:38 apt=37 a=rtpmap:39 AV1/90000 a=rtcp-fb:39 goog-remb a=rtcp-fb:39 transport-cc a=rtcp-fb:39 ccm fir a=rtcp-fb:39 nack a=rtcp-fb:39 nack pli a=fmtp:39 level-idx=5;profile=0;tier=0 a=rtpmap:40 rtx/90000 a=fmtp:40 apt=39 a=rtpmap:41 AV1/90000 a=rtcp-fb:41 goog-remb a=rtcp-fb:41 transport-cc a=rtcp-fb:41 ccm fir a=rtcp-fb:41 nack a=rtcp-fb:41 nack pli a=fmtp:41 level-idx=5;profile=1;tier=0 a=rtpmap:42 rtx/90000 a=fmtp:42 apt=41 a=rtpmap:100 VP9/90000 a=rtcp-fb:100 goog-remb a=rtcp-fb:100 transport-cc a=rtcp-fb:100 ccm fir a=rtcp-fb:100 nack a=rtcp-fb:100 nack pli a=fmtp:100 profile-id=2 a=rtpmap:101 rtx/90000 a=fmtp:101 apt=100 a=rtpmap:103 H264/90000 a=rtcp-fb:103 goog-remb a=rtcp-fb:103 transport-cc a=rtcp-fb:103 ccm fir a=rtcp-fb:103 nack a=rtcp-fb:103 nack pli a=fmtp:103 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f a=rtpmap:104 rtx/90000 a=fmtp:104 apt=103 a=rtpmap:107 H264/90000 a=rtcp-fb:107 goog-remb a=rtcp-fb:107 transport-cc a=rtcp-fb:107 ccm fir a=rtcp-fb:107 nack a=rtcp-fb:107 nack pli a=fmtp:107 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f a=rtpmap:108 rtx/90000 a=fmtp:108 apt=107 a=rtpmap:109 H264/90000 a=rtcp-fb:109 goog-remb a=rtcp-fb:109 transport-cc a=rtcp-fb:109 ccm fir a=rtcp-fb:109 nack a=rtcp-fb:109 nack pli a=fmtp:109 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f a=rtpmap:114 rtx/90000 a=fmtp:114 apt=109 a=rtpmap:43 H264/90000 a=rtcp-fb:43 goog-remb a=rtcp-fb:43 transport-cc a=rtcp-fb:43 ccm fir a=rtcp-fb:43 nack a=rtcp-fb:43 nack pli a=fmtp:43 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=4d001f a=rtpmap:44 rtx/90000 a=fmtp:44 apt=43 a=rtpmap:115 H264/90000 a=rtcp-fb:115 goog-remb a=rtcp-fb:115 transport-cc a=rtcp-fb:115 ccm fir a=rtcp-fb:115 nack a=rtcp-fb:115 nack pli a=fmtp:115 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f a=rtpmap:116 rtx/90000 a=fmtp:116 apt=115 a=rtpmap:117 H264/90000 a=rtcp-fb:117 goog-remb a=rtcp-fb:117 transport-cc a=rtcp-fb:117 ccm fir a=rtcp-fb:117 nack a=rtcp-fb:117 nack pli a=fmtp:117 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=64001f a=rtpmap:118 rtx/90000 a=fmtp:118 apt=117 a=rtpmap:119 H264/90000 a=rtcp-fb:119 goog-remb a=rtcp-fb:119 transport-cc a=rtcp-fb:119 ccm fir a=rtcp-fb:119 nack a=rtcp-fb:119 nack pli a=fmtp:119 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f a=rtpmap:120 rtx/90000 a=fmtp:120 apt=119 a=rtpmap:121 H264/90000 a=rtcp-fb:121 goog-remb a=rtcp-fb:121 transport-cc a=rtcp-fb:121 ccm fir a=rtcp-fb:121 nack a=rtcp-fb:121 nack pli a=fmtp:121 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f a=rtpmap:122 rtx/90000 a=fmtp:122 apt=121 a=rtpmap:45 H265/90000 a=rtcp-fb:45 goog-remb a=rtcp-fb:45 transport-cc a=rtcp-fb:45 ccm fir a=rtcp-fb:45 nack a=rtcp-fb:45 nack pli a=fmtp:45 level-id=90;profile-id=1;tier-flag=0;tx-mode=SRST a=rtpmap:46 rtx/90000 a=fmtp:46 apt=45 a=rtpmap:123 red/90000 a=rtpmap:124 rtx/90000 a=fmtp:124 apt=123 a=rtpmap:125 ulpfec/90000 a=rtpmap:47 flexfec-03/90000 a=rtcp-fb:47 goog-remb a=rtcp-fb:47 transport-cc a=fmtp:47 repair-window=10000000 m=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 13 110 126 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:0XWt a=ice-pwd:pt98I5+4Lfcv7VJPfoDj9ZoE a=ice-options:trickle a=fingerprint:sha-256 0D:90:3C:4E:DB:18:62:F2:9C:05:7D:C7:0F:0A:2F:7B:14:AB:16:CE:06:90:8A:20:E4:F8:97:11:CB:77:03:D2 a=setup:actpass a=mid:1 a=extmap:14 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid a=recvonly a=rtcp-mux a=rtcp-rsize a=rtpmap:111 opus/48000/2 a=rtcp-fb:111 transport-cc a=fmtp:111 minptime=10;useinbandfec=1 a=rtpmap:63 red/48000/2 a=fmtp:63 111/111 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:13 CN/8000 a=rtpmap:110 telephone-event/48000 a=rtpmap:126 telephone-event/8000
1:49:18.409 PM trace [webrtc] remote candidate=candidate:1260967208 1 udp 2113937151 192.168.1.10 40706 typ host generation 0 ufrag 0XWt network-cost 999
1:49:18.409 PM trace [webrtc] remote candidate=candidate:1907461702 1 udp 1677729535 94.224.67.92 23293 typ srflx raddr 192.168.1.10 rport 52008 generation 0 ufrag 0XWt network-cost 999
1:49:18.409 PM trace [webrtc] remote candidate=candidate:1907461702 1 udp 1677729535 94.224.67.92 7743 typ srflx raddr 192.168.1.10 rport 40706 generation 0 ufrag 0XWt network-cost 999
1:49:18.411 PM trace [rtsp] client request: DESCRIBE rtsp://192.168.1.98:554/Preview_01_autotrack RTSP/1.0 Require: www.onvif.org/ver20/backchannel User-Agent: go2rtc/1.9.9 CSeq: 1 Accept: application/sdp
1:49:18.497 PM trace [rtsp] client response: RTSP/1.0 401 Unauthorized Www-Authenticate: Digest realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584" Cseq: 1 Date: Wed, Jun 04 2025 11:49:20 GMT
1:49:18.497 PM trace [rtsp] client request: DESCRIBE rtsp://192.168.1.98:554/Preview_01_autotrack RTSP/1.0 Accept: application/sdp Require: www.onvif.org/ver20/backchannel User-Agent: go2rtc/1.9.9 CSeq: 2 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98:554/Preview_01_autotrack", response="fd782c11add043146f19d70a670a71d1"
1:49:18.538 PM trace [rtsp] client response: RTSP/1.0 200 OK Content-Base: rtsp://192.168.1.98/Preview_02_main/ Content-Type: application/sdp Content-Length: 855 Cseq: 2 Date: Wed, Jun 04 2025 11:49:20 GMT v=0 o=- 1748963808529032 1 IN IP4 192.168.0.3 s=Session streamed by "preview" t=0 0 a=tool:BC Streaming Media v202210012022.10.01 a=type:broadcast a=control:* a=range:npt=now- a=x-qt-text-nam:Session streamed by "preview" m=video 0 RTP/AVP 96 c=IN IP4 0.0.0.0 b=AS:8192 a=rtpmap:96 H265/90000 a=fmtp:96 profile-space=0;profile-id=1;tier-flag=0;level-id=150;interop-constraints=000000000000;sprop-vps=QAEMAf//AWAAAAMAAAMAAAMAAAMAlqwJ;sprop-sps=QgEBAWAAAAMAAAMAAAMAAAMAlqADwIARB8uKrTuiS7I=;sprop-pps=RAHAcvAbJA== a=recvonly a=control:track1 m=audio 0 RTP/AVP 97 c=IN IP4 0.0.0.0 b=AS:8192 a=rtpmap:97 MPEG4-GENERIC/16000 a=fmtp:97 streamtype=5;profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1408 a=recvonly a=control:track2 m=audio 0 RTP/AVP 0 a=control:track3 a=rtpmap:0 PCMU/8000 a=sendonly
1:49:18.574 PM trace [rtsp] client request: SETUP rtsp://192.168.1.98/Preview_02_main/track1 RTSP/1.0 Transport: RTP/AVP/TCP;unicast;interleaved=0-1 CSeq: 3 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/track1", response="55cbaaeb66dea70060402f61fe376c11"
1:49:18.668 PM trace [rtsp] client response: RTSP/1.0 200 OK Cseq: 3 Date: Wed, Jun 04 2025 11:49:20 GMT Transport: RTP/AVP/TCP;unicast;destination=192.168.1.184;source=192.168.1.98;interleaved=0-1 Session: 45A64243;timeout=65
1:49:18.669 PM trace [rtsp] client request: PLAY rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="30fc0cb13103d89c771579e553db1385" Session: 45A64243 CSeq: 4
1:49:18.718 PM trace [rtsp] client response: RTSP/1.0 200 OK Cseq: 4 Date: Wed, Jun 04 2025 11:49:20 GMT Range: npt=0.000- Session: 45A64243 Rtp-Info: url=rtsp://192.168.1.98/Preview_02_main/track1;seq=41973;rtptime=3667296353,url=rtsp://192.168.1.98/Preview_02_main/track2;seq=0;rtptime=0,url=rtsp://192.168.1.98/Preview_02_main/track3;seq=0;rtptime=0
1:49:18.846 PM trace [webrtc] answer v=0 o=- 8336207202157672804 1749037758 IN IP4 0.0.0.0 s=- t=0 0 a=msid-semantic:WMS* a=fingerprint:sha-256 96:04:CB:1D:AB:8E:AD:A8:3F:7B:C4:CE:19:1B:16:B5:4F:0A:9F:33:8D:6A:C2:57:DD:A8:BE:6E:D1:E6:6B:4D a=extmap-allow-mixed a=group:BUNDLE 0 1 m=video 9 UDP/TLS/RTP/SAVPF 103 115 119 45 c=IN IP4 0.0.0.0 a=setup:active a=mid:0 a=ice-ufrag:ykTHKrupBEJYCsLA a=ice-pwd:ftKWMPQjwXqxjSNKhHUqzLGSjNDhxRNr a=rtcp-mux a=rtcp-rsize a=rtpmap:103 H264/90000 a=fmtp:103 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f a=rtcp-fb:103 goog-remb a=rtcp-fb:103 ccm fir a=rtcp-fb:103 nack a=rtcp-fb:103 nack pli a=rtcp-fb:103 nack a=rtcp-fb:103 nack pli a=rtcp-fb:103 transport-cc a=rtpmap:115 H264/90000 a=fmtp:115 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f a=rtcp-fb:115 goog-remb a=rtcp-fb:115 ccm fir a=rtcp-fb:115 nack a=rtcp-fb:115 nack pli a=rtcp-fb:115 nack a=rtcp-fb:115 nack pli a=rtcp-fb:115 transport-cc a=rtpmap:119 H264/90000 a=fmtp:119 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f a=rtcp-fb:119 goog-remb a=rtcp-fb:119 ccm fir a=rtcp-fb:119 nack a=rtcp-fb:119 nack pli a=rtcp-fb:119 nack a=rtcp-fb:119 nack pli a=rtcp-fb:119 transport-cc a=rtpmap:45 H265/90000 a=fmtp:45 level-id=90;profile-id=1;tier-flag=0;tx-mode=SRST a=rtcp-fb:45 goog-remb a=rtcp-fb:45 ccm fir a=rtcp-fb:45 nack a=rtcp-fb:45 nack pli a=rtcp-fb:45 nack a=rtcp-fb:45 nack pli a=rtcp-fb:45 transport-cc a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=ssrc:336754385 cname:go2rtc a=ssrc:336754385 msid:go2rtc go2rtc-video a=ssrc:336754385 mslabel:go2rtc a=ssrc:336754385 label:go2rtc-video a=msid:go2rtc go2rtc-video a=sendonly m=audio 9 UDP/TLS/RTP/SAVPF 111 0 8 c=IN IP4 0.0.0.0 a=setup:active a=mid:1 a=ice-ufrag:ykTHKrupBEJYCsLA a=ice-pwd:ftKWMPQjwXqxjSNKhHUqzLGSjNDhxRNr a=rtcp-mux a=rtcp-rsize a=rtpmap:111 opus/48000/2 a=fmtp:111 minptime=10;useinbandfec=1 a=rtcp-fb:111 transport-cc a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=ssrc:2051924775 cname:go2rtc a=ssrc:2051924775 msid:go2rtc go2rtc-audio a=ssrc:2051924775 mslabel:go2rtc a=ssrc:2051924775 label:go2rtc-audio a=msid:go2rtc go2rtc-audio a=inactive
1:49:18.847 PM trace [webrtc] local candidate=candidate:632112936 1 udp 2130706431 192.168.1.184 8555 typ host
1:49:18.847 PM trace [webrtc] local candidate=candidate:2556311240 1 tcp 1671430143 192.168.1.184 8555 typ host tcptype passive
1:49:18.888 PM trace [webrtc] local candidate=candidate:181094971 1 udp 1694498815 94.224.67.92 11486 typ srflx raddr 0.0.0.0 rport 51948
1:50:18.691 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 Session: 45A64243 CSeq: 5 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe"
1:50:18.694 PM trace [rtsp] client response: RTSP/1.0 200 OK Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER Cseq: 5 Date: Wed, Jun 04 2025 11:50:20 GMT
1:51:18.705 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 CSeq: 6 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe" Session: 45A64243
1:51:18.707 PM trace [rtsp] client response: RTSP/1.0 200 OK Cseq: 6 Date: Wed, Jun 04 2025 11:51:20 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
1:52:18.708 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 CSeq: 7 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe" Session: 45A64243
1:52:18.721 PM trace [rtsp] client response: RTSP/1.0 200 OK Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER Cseq: 7 Date: Wed, Jun 04 2025 11:52:20 GMT
1:53:18.738 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 Session: 45A64243 CSeq: 8 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe"
1:53:18.743 PM trace [rtsp] client response: RTSP/1.0 200 OK Cseq: 8 Date: Wed, Jun 04 2025 11:53:20 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
1:54:18.741 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 CSeq: 9 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe" Session: 45A64243
1:54:18.798 PM trace [rtsp] client response: RTSP/1.0 200 OK Cseq: 9 Date: Wed, Jun 04 2025 11:54:20 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
1:55:18.740 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 CSeq: 10 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe" Session: 45A64243
1:55:18.747 PM trace [rtsp] client response: RTSP/1.0 200 OK Date: Wed, Jun 04 2025 11:55:20 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER Cseq: 10
1:56:18.796 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 Session: 45A64243 CSeq: 11 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe"
1:56:18.799 PM trace [rtsp] client response: RTSP/1.0 200 OK Cseq: 11 Date: Wed, Jun 04 2025 11:56:20 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
1:57:18.852 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 CSeq: 12 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe" Session: 45A64243
1:57:18.855 PM trace [rtsp] client response: RTSP/1.0 200 OK Cseq: 12 Date: Wed, Jun 04 2025 11:57:20 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
1:58:18.861 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 CSeq: 13 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe" Session: 45A64243
1:58:18.864 PM trace [rtsp] client response: RTSP/1.0 200 OK Cseq: 13 Date: Wed, Jun 04 2025 11:58:20 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
1:59:18.873 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 Session: 45A64243 CSeq: 14 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe"
1:59:18.877 PM trace [rtsp] client response: RTSP/1.0 200 OK Cseq: 14 Date: Wed, Jun 04 2025 11:59:20 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
2:00:18.886 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 CSeq: 15 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe" Session: 45A64243
2:00:18.888 PM trace [rtsp] client response: RTSP/1.0 200 OK Cseq: 15 Date: Wed, Jun 04 2025 12:00:20 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
2:01:18.923 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 Session: 45A64243 CSeq: 16 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe"
2:01:18.925 PM trace [rtsp] client response: RTSP/1.0 200 OK Cseq: 16 Date: Wed, Jun 04 2025 12:01:20 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
2:02:18.966 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 CSeq: 17 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe" Session: 45A64243
2:02:18.968 PM trace [rtsp] client response: RTSP/1.0 200 OK Cseq: 17 Date: Wed, Jun 04 2025 12:02:20 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
2:03:19.029 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 CSeq: 18 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe" Session: 45A64243
2:03:19.032 PM trace [rtsp] client response: RTSP/1.0 200 OK Cseq: 18 Date: Wed, Jun 04 2025 12:03:20 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
2:04:19.026 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 CSeq: 19 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe" Session: 45A64243
2:04:19.063 PM trace [rtsp] client response: RTSP/1.0 200 OK Cseq: 19 Date: Wed, Jun 04 2025 12:04:20 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
2:05:19.037 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 CSeq: 20 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe" Session: 45A64243
2:05:19.074 PM trace [rtsp] client response: RTSP/1.0 200 OK Cseq: 20 Date: Wed, Jun 04 2025 12:05:20 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
2:06:19.037 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 CSeq: 21 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe" Session: 45A64243
2:06:19.042 PM trace [rtsp] client response: RTSP/1.0 200 OK Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER Cseq: 21 Date: Wed, Jun 04 2025 12:06:20 GMT
2:07:19.055 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe" Session: 45A64243 CSeq: 22
2:07:19.090 PM trace [rtsp] client response: RTSP/1.0 200 OK Date: Wed, Jun 04 2025 12:07:20 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER Cseq: 22
2:08:19.059 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe" Session: 45A64243 CSeq: 23
2:08:19.062 PM trace [rtsp] client response: RTSP/1.0 200 OK Cseq: 23 Date: Wed, Jun 04 2025 12:08:20 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
2:09:19.108 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 CSeq: 24 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe" Session: 45A64243
2:09:19.111 PM trace [rtsp] client response: RTSP/1.0 200 OK Date: Wed, Jun 04 2025 12:09:20 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER Cseq: 24
2:10:19.147 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 CSeq: 25 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe" Session: 45A64243
2:10:19.149 PM trace [rtsp] client response: RTSP/1.0 200 OK Cseq: 25 Date: Wed, Jun 04 2025 12:10:20 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
2:11:19.147 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 Session: 45A64243 CSeq: 26 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe"
2:11:19.155 PM trace [rtsp] client response: RTSP/1.0 200 OK Cseq: 26 Date: Wed, Jun 04 2025 12:11:20 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
2:12:19.159 PM trace [rtsp] client request: OPTIONS rtsp://192.168.1.98/Preview_02_main/ RTSP/1.0 CSeq: 27 Authorization: Digest username="admin", realm="BC Streaming Media", nonce="7eb97f3e7b6a59db1e8d0ec123311584", uri="rtsp://192.168.1.98/Preview_02_main/", response="0c4ed78bdd4d52334a6f9261b6e94cbe" Session: 45A64243
2:12:19.172 PM trace [rtsp] client response: RTSP/1.0 200 OK Cseq: 27 Date: Wed, Jun 04 2025 12:12:21 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER

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

No branches or pull requests

9 participants