mediaSource API not working on Chrome but works smoothly on Firefox -
i trying stream webm format video being generated using gstreamer , individual frame being sent on websockets. typical byte arrangement of webm file (you may familiar this).
ebml (head size: 12 bytes, data: 16 bytes, pos: 0, '0x0') doctype (head size: 3 bytes, data: 5 bytes, pos: 12l, '0xcl') : 'webm\x00' doctypeversion (head size: 3 bytes, data: 1 bytes, pos: 20l, '0x14l') : 2 doctypereadversion (head size: 3 bytes, data: 1 bytes, pos: 24l, '0x18l') : 2 ... ... segmentinfo (head size: 12 bytes, data: 91 bytes, pos: 192l, '0xc0l') timecodescale (head size: 4 bytes, data: 3 bytes, pos: 204l, '0xccl') : 1000000 duration (head size: 3 bytes, data: 8 bytes, pos: 211l, '0xd3l') : 0.0 muxingapp (head size: 3 bytes, data: 31 bytes, pos: 222l, '0xdel') : 'gstreamer plugin version 1.2.4\x00' writingapp (head size: 3 bytes, data: 25 bytes, pos: 256l, '0x100l') : 'gstreamer matroska muxer\x00' dateutc (head size: 3 bytes, data: 8 bytes, pos: 284l, '0x11cl') : 447902803000000000l video (head size: 9 bytes, data: 8 bytes, pos: 295l, '0x127l') pixel width (head size: 2 bytes, data: 2 bytes, pos: 351l, '0x15fl') : 640 pixel height (head size: 2 bytes, data: 2 bytes, pos: 355l, '0x163l') : 480 codec id (head size: 2 bytes, data: 6 bytes, pos: 359l, '0x167l') : 'v_vp8\x00' cluster (head size: 12 bytes, data: 72057594037927935l bytes, pos: 367l, '0x16fl') timecode (head size: 2 bytes, data: 2 bytes, pos: 379l, '0x17bl') : 1514 simpleblock (head size: 4 bytes, data: 44618 bytes, pos: 383l, '0x17fl') : 'binary' track number : 1, keyframe : true, invisible : 'no', discardable : 'no' lace : 'no lacing', time code : 0, time code(absolute) : 1514 simpleblock (head size: 3 bytes, data: 793 bytes, pos: 45005l, '0xafcdl') : 'binary' track number : 1, keyframe : false, invisible : 'no', discardable : 'no' lace : 'no lacing', time code : 27, time code(absolute) : 1541 <<conitnued....>>
what see, absolute time code , relative time code being written correctly when redirect gstreamer output filesink. same gstreamer pipeline used extract byte sequences (samples). these samples transmitted on websocket , received on client side using mediasource api.
my implementation of client javascript described here. when run client in firefox, video runs smoothly without glitches. on chrome, video freezes after time or @ beginning.
i tried modifying sourcebuffer.mode = "sequence" or "segments", none of options work on chrome, whereas video feed on firefox totally unaffected value of "sourcebuffer.mode". description of these modes here. (i assuming mediasource api works same way on ie , firefox, no documentation available on mozilla website).
also, mediasource.duration infinity/nan in chrome , firefox both.
no matter way try, the live feed on chrome not @ working, whereas firefox displays smooth video. suggestions, why happening?
updates: upgraded chrome version 41 gives more details on chrome://media-internals. message shown is:
render_id: 23 player_id: 1 pipeline_state: kstopped event: webmediaplayer_destroyed url: blob:http%3a//localhost%3a8080/172f68c8-9ff3-4983-9dcb- 396b3f843752 found_video_stream: true video_codec_name: vp8 duration: unknown video_dds: false video_decoder: ffmpegvideodecoder error: append: stream parsing failed. data size=2283 append_window_start=0 append_window_end=inf pipeline_error: pipeline: decode error timestamp property value 00:00:00 00 pipeline_state kcreated 00:00:00 00 event pipeline_created 00:00:00 00 event webmediaplayer_created 00:00:00 00 url blob:http%3a//localhost%3a8080/172f68c8-9ff3-4983-9dcb-396b3f843752 00:00:00 00 pipeline_state kinitdemuxer 00:00:01 687 found_video_stream true 00:00:01 692 video_codec_name vp8 00:00:01 692 duration unknown 00:00:01 692 pipeline_state kinitrenderer 00:00:01 694 video_dds false 00:00:01 694 video_decoder ffmpegvideodecoder 00:00:01 695 pipeline_state kplaying 00:00:10 989 event play 00:00:11 276 error got block timecode before previous block. 00:00:11 276 error append: stream parsing failed. data size=2283 append_window_start=0 append_window_end=inf 00:00:11 276 pipeline_error pipeline: decode error 00:00:11 276 pipeline_state kstopping 00:00:11 277 pipeline_state kstopped 00:01:14 239 event webmediaplayer_destroyed
how fix or calculate "append_window_end"???
Comments
Post a Comment