Full overhawl of video & audio playback to make it more complete (#1432)
* Add support for capturing media attributes in rrweb-snapshot * Add loop to mediaInteractionParam * Add support for loop in RRMediaElement * Add support for recording loop attribute on media elements * Update video playback and fix bugs * Update cross-origin iframe media attributes and player state
This commit is contained in:
@@ -250,6 +250,8 @@ function diffAfterUpdatingChildren(
|
||||
oldMediaElement.currentTime = newMediaRRElement.currentTime;
|
||||
if (newMediaRRElement.playbackRate !== undefined)
|
||||
oldMediaElement.playbackRate = newMediaRRElement.playbackRate;
|
||||
if (newMediaRRElement.loop !== undefined)
|
||||
oldMediaElement.loop = newMediaRRElement.loop;
|
||||
break;
|
||||
}
|
||||
case 'CANVAS': {
|
||||
|
||||
@@ -563,6 +563,7 @@ export function BaseRRMediaElementImpl<
|
||||
public paused?: boolean;
|
||||
public muted?: boolean;
|
||||
public playbackRate?: number;
|
||||
public loop?: boolean;
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
attachShadow(_init: ShadowRootInit): IRRElement {
|
||||
throw new Error(
|
||||
|
||||
@@ -280,6 +280,7 @@ describe('diff algorithm for rrdom', () => {
|
||||
rrMedia.muted = true;
|
||||
rrMedia.paused = false;
|
||||
rrMedia.playbackRate = 0.5;
|
||||
rrMedia.loop = false;
|
||||
|
||||
diff(element, rrMedia, replayer);
|
||||
expect(element.volume).toEqual(0.5);
|
||||
@@ -287,6 +288,7 @@ describe('diff algorithm for rrdom', () => {
|
||||
expect(element.muted).toEqual(true);
|
||||
expect(element.paused).toEqual(false);
|
||||
expect(element.playbackRate).toEqual(0.5);
|
||||
expect(element.loop).toEqual(false);
|
||||
|
||||
rrMedia.paused = true;
|
||||
diff(element, rrMedia, replayer);
|
||||
|
||||
@@ -1079,6 +1079,7 @@ describe('Basic RRDocument implementation', () => {
|
||||
expect(node.paused).toBeUndefined();
|
||||
expect(node.muted).toBeUndefined();
|
||||
expect(node.playbackRate).toBeUndefined();
|
||||
expect(node.loop).toBeUndefined();
|
||||
expect(node.play).toBeDefined();
|
||||
expect(node.pause).toBeDefined();
|
||||
expect(node.toString()).toEqual('VIDEO ');
|
||||
|
||||
Reference in New Issue
Block a user