mirror of
https://github.com/eliasstepanik/vdo.ninja.git
synced 2026-01-12 14:18:28 +00:00
ios fix
This commit is contained in:
parent
c2556bbc0b
commit
2bf7451fbe
@ -2295,11 +2295,11 @@
|
||||
// session.defaultBackgroundImages = ["./media/bg_sample1.webp", "./media/bg_sample2.webp"]; // for &effects=5 (virtual backgrounds)
|
||||
// session.hidehome = true; // If used, 'hide home' will make the landing page inaccessible, along with hiding a few go-home elements.
|
||||
</script>
|
||||
<script type="text/javascript" crossorigin="anonymous" id="lib-js" src="./lib.js?ver=545"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" id="lib-js" src="./lib.js?ver=552"></script>
|
||||
<!--
|
||||
// If you wish to change branding, blank offers a good clean start.
|
||||
<script type="text/javascript" id="main-js" src="./main.js" data-translation="blank"></script>
|
||||
-->
|
||||
<script type="text/javascript" crossorigin="anonymous" id="main-js" src="./main.js?ver=483"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" id="main-js" src="./main.js?ver=484"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
42
lib.js
42
lib.js
@ -4579,8 +4579,10 @@ function updateMixerRun(e=false){ // this is the main auto-mixing code. It's a
|
||||
holder.paused.className = "hidden";
|
||||
}
|
||||
|
||||
var vw = vid.videoWidth || vid.naturalWidth;
|
||||
var vh = vid.videoHeight || vid.naturalHeight;
|
||||
var vw = vid.naturalWidth || vid.videoWidth;
|
||||
var vh = vid.naturalHeight || vid.videoHeight;
|
||||
|
||||
// log(vw + " : "+vh);
|
||||
|
||||
if ((vw && vh) || (vid.width && vid.height)){
|
||||
if (("rotated" in vid) && ((vid.rotated==90) || (vid.rotated==270))){
|
||||
@ -8095,13 +8097,20 @@ function playoutdelay(UUID){ // applies a delay to all videos
|
||||
if (sync_offset<0){sync_offset=0;}
|
||||
session.rpcs[UUID].stats[tid]._sync_offset = sync_offset;
|
||||
receiver.playoutDelayHint = parseFloat(sync_offset/1000);
|
||||
var audio_delay = session.sync || 0; // video is typically showing greater delay than video
|
||||
audio_delay += target_buffer - session.rpcs[UUID].stats[tid].Buffer_Delay_in_ms
|
||||
if (receiver.track.id in session.rpcs[UUID].inboundAudioPipeline){
|
||||
if (session.rpcs[UUID].inboundAudioPipeline[receiver.track.id] && session.rpcs[UUID].inboundAudioPipeline[receiver.track.id].delayNode){
|
||||
if (audio_delay<0){audio_delay=0;}
|
||||
session.rpcs[UUID].inboundAudioPipeline[receiver.track.id].delayNode.delayTime.setValueAtTime(parseFloat(audio_delay/1000.0), session.audioCtx.currentTime+1);
|
||||
session.rpcs[UUID].stats[tid].Audio_Sync_Delay_ms = audio_delay;
|
||||
|
||||
if (session.sync!==false){
|
||||
var audio_delay = session.sync || 0; // video is typically showing greater delay than video
|
||||
audio_delay += target_buffer - session.rpcs[UUID].stats[tid].Buffer_Delay_in_ms
|
||||
if (receiver.track.id in session.rpcs[UUID].inboundAudioPipeline){
|
||||
if (session.rpcs[UUID].inboundAudioPipeline[receiver.track.id] && session.rpcs[UUID].inboundAudioPipeline[receiver.track.id].delayNode){
|
||||
if (audio_delay<0){audio_delay=0;}
|
||||
try {
|
||||
session.rpcs[UUID].inboundAudioPipeline[receiver.track.id].delayNode.delayTime.linearRampToValueAtTime(parseFloat(audio_delay/1000.0), session.audioCtx.currentTime + parseFloat(session.statsInterval/3000));
|
||||
} catch(e){
|
||||
session.rpcs[UUID].inboundAudioPipeline[receiver.track.id].delayNode.delayTime.setValueAtTime(parseFloat(audio_delay/1000.0), session.audioCtx.currentTime+1);
|
||||
}
|
||||
session.rpcs[UUID].stats[tid].Audio_Sync_Delay_ms = audio_delay;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (session.rpcs[UUID].stats[tid]._type=="video"){
|
||||
@ -18619,6 +18628,7 @@ async function grabVideo(quality = 0, eleName = 'previewWebcam', selector = "sel
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
updateRenderOutpipe();
|
||||
// senderAudioUpdate
|
||||
|
||||
@ -18651,7 +18661,7 @@ async function grabVideo(quality = 0, eleName = 'previewWebcam', selector = "sel
|
||||
}
|
||||
}
|
||||
} else if (getById("gear_webcam3").style.display === "inline-block") {
|
||||
updateStats(obscam);
|
||||
updateStats(obscam);
|
||||
}
|
||||
|
||||
// Once crbug.com/711524 is fixed, we won't need to wait anymore. This is
|
||||
@ -18715,9 +18725,9 @@ async function grabVideo(quality = 0, eleName = 'previewWebcam', selector = "sel
|
||||
} catch (e) {
|
||||
errorlog(e);
|
||||
}
|
||||
} else {
|
||||
} else if (toggleSettingsState) {
|
||||
log("16047");
|
||||
updateConstraintSliders();
|
||||
updateConstraintSliders();//listCameraSettings();
|
||||
}
|
||||
if (callback3){
|
||||
try {
|
||||
@ -18746,9 +18756,13 @@ async function grabVideo(quality = 0, eleName = 'previewWebcam', selector = "sel
|
||||
session.setResolution(); // this runs already when updateCameraConstraints succeeds
|
||||
}
|
||||
|
||||
//log("16075");
|
||||
//log("16075");
|
||||
updateForceRotate();
|
||||
|
||||
if (iOS || iPad){
|
||||
updateMixer(); // if we don't do this, portrait videos may be detected as horizontal
|
||||
}
|
||||
|
||||
// this will reset scaling for all viewers of this stream. I also call it when aspect ratio, width, or height is changed via applyConstraints
|
||||
|
||||
dragElement(session.videoElement);
|
||||
@ -18897,7 +18911,7 @@ function updateRenderOutpipe(){ // video only.
|
||||
}
|
||||
|
||||
function pushOutVideoTrack(track){
|
||||
|
||||
log("pushOutVideoTrack");
|
||||
if (session.chunked){
|
||||
for (UUID in session.pcs) {
|
||||
session.chunkedStream(UUID); // make sure we check that this connection allows video / audio
|
||||
|
||||
4
main.js
4
main.js
@ -2855,8 +2855,8 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
|
||||
} else {
|
||||
session.buffer = parseFloat(urlParams.get('buffer')) || 0;
|
||||
log("buffer Changed: " + session.buffer);
|
||||
session.sync = 0;
|
||||
session.audioEffects = true;
|
||||
//session.sync = 0;
|
||||
//session.audioEffects = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user