shinyoshiaki / werift-webrtc

WebRTC Implementation for TypeScript (Node.js), includes ICE/DTLS/SCTP/RTP/SRTP/WEBM/MP4

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MediaRecord Error: baseTime not exist

kolserdav opened this issue · comments

After updating to version 0.17.7, recording through MediaRecorder stopped working with the following error:

[0] [1] 01:46:25  error  unhandledRejection  Error: baseTime not exist
[0] [1]     at ClusterTimestamp.update (/home/kol/Projects/werift-sfu-react/node_modules/werift/lib/rtp/src/processor/webm.js:246:19)
[0] [1]     at WebmStream.onFrameReceived (/home/kol/Projects/werift-sfu-react/node_modules/werift/lib/rtp/src/processor/webm.js:142:40)
[0] [1]     at WebmStream.processInput (/home/kol/Projects/werift-sfu-react/node_modules/werift/lib/rtp/src/processor/webm.js:116:14)
[0] [1]     at WebmStream.value [as processAudioInput] (/home/kol/Projects/werift-sfu-react/node_modules/werift/lib/rtp/src/processor/webm.js:87:26)
[0] [1]     at Object.write (/home/kol/Projects/werift-sfu-react/node_modules/werift/lib/rtp/src/processor/webmStream.js:39:26)
[0] [1]     at ensureIsPromise (node:internal/webstreams/util:172:19)
[0] [1]     at writableStreamDefaultControllerProcessWrite (node:internal/webstreams/writablestream:1091:5)
[0] [1]     at writableStreamDefaultControllerAdvanceQueueIfNeeded (node:internal/webstreams/writablestream:1206:5)
[0] [1]     at writableStreamDefaultControllerWrite (node:internal/webstreams/writablestream:1080:3)
[0] [1]     at writableStreamDefaultWriterWrite (node:internal/webstreams/writablestream:969:3)  
[0] [1] 

I print the input.frame from the processAudioInput and processVideoInput methods to the console and see that the time at the audio keyframe is still undefined:

[0] [1] {
[0] [1]   data: <Buffer fc d6 f6 e0 5d a7 3e d6 b3 94 76 ea 5b be 7f 78 8a e1 8d 65 6a 4c d1 5f af e8 27 86 8e eb 6c d3 02 eb a1 a8 bb 65 b3 f8 fd 2b 91 b8 6f c8 53 de 8d 11 ... 111 more bytes>,
[0] [1]   isKeyframe: true,
[0] [1]   time: undefined,
[0] [1]   sequence: 0,
[0] [1]   rtpSeq: 26622,
[0] [1]   timestamp: 3195314228
[0] [1] } audio
[0] [1] 2
[0] [1] 02:43:53  error  unhandledRejection  Error: baseTime not exist
[0] [1]     at ClusterTimestamp.update (/home/kol/Projects/werift-sfu-react/node_modules/werift/lib/rtp/src/processor/webm.js:249:19)
[0] [1]     at WebmStream.onFrameReceived (/home/kol/Projects/werift-sfu-react/node_modules/werift/lib/rtp/src/processor/webm.js:145:40)
[0] [1]     at WebmStream.processInput (/home/kol/Projects/werift-sfu-react/node_modules/werift/lib/rtp/src/processor/webm.js:118:14)
[0] [1]     at WebmStream.value [as processAudioInput] (/home/kol/Projects/werift-sfu-react/node_modules/werift/lib/rtp/src/processor/webm.js:88:26)
[0] [1]     at Object.write (/home/kol/Projects/werift-sfu-react/node_modules/werift/lib/rtp/src/processor/webmStream.js:39:26)
[0] [1]     at ensureIsPromise (node:internal/webstreams/util:172:19)
[0] [1]     at writableStreamDefaultControllerProcessWrite (node:internal/webstreams/writablestream:1091:5)
[0] [1]     at writableStreamDefaultControllerAdvanceQueueIfNeeded (node:internal/webstreams/writablestream:1206:5)
[0] [1]     at writableStreamDefaultControllerWrite (node:internal/webstreams/writablestream:1080:3)
[0] [1]     at writableStreamDefaultWriterWrite (node:internal/webstreams/writablestream:969:3)  
[0] [1] 
[0] [1] 1
[0] [1] {
[0] [1]   data: <Buffer d1 27 00 e3 9b 3f b8 97 f0 ed 20 62 bc e0 3d 59 bd 9b bf 64 84 71 0d ee 84 00 41 56 34 42 46 d8 82 59 3c de ac 04 97 55 55 72 b1 48 cf df 0a 81 79 a2 ... 2289 more bytes>,
[0] [1]   isKeyframe: false,
[0] [1]   time: 0,
[0] [1]   sequence: 0,
[0] [1]   rtpSeq: 9800,
[0] [1]   timestamp: 4173142451
[0] [1] } video

You can also see that the video input doesn't start at a keyframe (but that's a separate issue).

This is

where item.time is expected to be valid, but at run time the input looks like this:

[0] [1] {
[0] [1]   rtp: RtpPacket {
[0] [1]     header: RtpHeader {
[0] [1]       version: 2,
[0] [1]       padding: false,
[0] [1]       paddingSize: 0,
[0] [1]       extension: false,
[0] [1]       marker: false,
[0] [1]       payloadOffset: 12,
[0] [1]       payloadType: 109,
[0] [1]       sequenceNumber: 25080,
[0] [1]       timestamp: 1597379503,
[0] [1]       ssrc: 4085557688,
[0] [1]       csrcLength: 0,
[0] [1]       csrc: [],
[0] [1]       extensionProfile: 48862,
[0] [1]       extensionLength: undefined,
[0] [1]       extensions: []
[0] [1]     },
[0] [1]     payload: <Buffer fc 72 e2 18 37 ed 37 85 3f 94 ae d0 4e 0e dc 41 35 b0 31 3f b3 7d 07 22 65 97 9d 5c a8 e9 53 46 f4 d7 36 c1 9d 0c 39 52 d5 cd 2c 7e 21 b1 d8 31 40 a6 ... 151 more bytes>
[0] [1]   }
[0] [1] }
[0] [1] 11:38:28  error  unhandledRejection  Error: baseTime not exist
[0] [1]     at ClusterTimestamp.update (/home/kol/Projects/werift-sfu-react/node_modules/werift/lib/rtp/src/processor/webm.js:246:19)
[0] [1]     at WebmStream.onFrameReceived (/home/kol/Projects/werift-sfu-react/node_modules/werift/lib/rtp/src/processor/webm.js:142:40)
[0] [1]     at WebmStream.processInput (/home/kol/Projects/werift-sfu-react/node_modules/werift/lib/rtp/src/processor/webm.js:116:14)
[0] [1]     at WebmStream.value [as processAudioInput] (/home/kol/Projects/werift-sfu-react/node_modules/werift/lib/rtp/src/processor/webm.js:87:26)
[0] [1]     at Object.write (/home/kol/Projects/werift-sfu-react/node_modules/werift/lib/rtp/src/processor/webmStream.js:39:26)
[0] [1]     at ensureIsPromise (node:internal/webstreams/util:172:19)
[0] [1]     at writableStreamDefaultControllerProcessWrite (node:internal/webstreams/writablestream:1091:5)
[0] [1]     at writableStreamDefaultControllerAdvanceQueueIfNeeded (node:internal/webstreams/writablestream:1206:5)
[0] [1]     at writableStreamDefaultControllerWrite (node:internal/webstreams/writablestream:1080:3)
[0] [1]     at writableStreamDefaultWriterWrite (node:internal/webstreams/writablestream:969:3)  
[0] [1] 

@kolserdav try v0.18.0

Build error #317