|
import asyncio |
|
import logging |
|
from typing import List |
|
|
|
import av |
|
import streamlit as st |
|
from streamlit_webrtc import WebRtcMode, webrtc_streamer |
|
|
|
logger = logging.getLogger(__name__) |
|
|
|
|
|
delay = st.slider("Delay", 0.0, 5.0, 1.0, 0.05) |
|
|
|
|
|
async def queued_video_frames_callback( |
|
frames: List[av.VideoFrame], |
|
) -> List[av.VideoFrame]: |
|
logger.debug("Delay: %f", delay) |
|
|
|
|
|
|
|
|
|
await asyncio.sleep(delay) |
|
return frames |
|
|
|
|
|
async def queued_audio_frames_callback( |
|
frames: List[av.AudioFrame], |
|
) -> List[av.AudioFrame]: |
|
await asyncio.sleep(delay) |
|
return frames |
|
|
|
|
|
webrtc_streamer( |
|
key="delay", |
|
mode=WebRtcMode.SENDRECV, |
|
rtc_configuration={"iceServers": [{"urls": ["stun:stun.l.google.com:19302"]}]}, |
|
queued_video_frames_callback=queued_video_frames_callback, |
|
queued_audio_frames_callback=queued_audio_frames_callback, |
|
async_processing=True, |
|
) |
|
|