- End customer's video feed plays cleanly in VLC.
- Same RTSP URL fed into Scout's Media Server pipeline produces visible video artifacts.
- Source chain: IP camera → exacqVision NVR → RTSP republish → Scout's Media Server.
- Stream is HEVC, 2048x1536, 10 fps, yuvj420p, advertised SDP title
H265, streamed by rtspserverpi, RTSP path/3480576. - Diagnostic was run on Scout's own machine:
C:\Program Files\RunScoutAI\Media Server\ffmpeg.exe(ffmpeg 8.0-essentials build). - Artifact pattern is identical over both
-rtsp_transport tcpand-rtsp_transport udp. Network packet loss is therefore not the root cause.
You are helping a non-engineer (but computer-savvy) user get a working outbound phone-calling voice agent running with Pipecat and Daily PSTN. Be friendly, patient, and explain every step clearly. Don't assume they know git workflows, Python packaging, or API key management. When something fails, help them debug it step by step.
Before doing anything else, verify the user has these installed. If anything is missing, walk them through installing it:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env -S uv run | |
| """Fetch IP addresses from Daily.co IP info API by region. | |
| This script fetches host information from the Daily.co IP info API and filters | |
| for hosts in the 'iad' region. It tracks changes by storing the lastUpdated | |
| timestamp and prints "NEW LIST" when updates are detected. | |
| Usage: | |
| ./regions.py |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # | |
| # Copyright (c) 2025, Daily | |
| # | |
| # SPDX-License-Identifier: BSD 2-Clause License | |
| # | |
| import asyncio | |
| import os | |
| import sentry_sdk |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # | |
| # Copyright (c) 2024–2025, Daily | |
| # | |
| # SPDX-License-Identifier: BSD 2-Clause License | |
| # | |
| import argparse | |
| import asyncio | |
| import collections | |
| import json |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| token_params = DailyMeetingTokenParams( | |
| properties=DailyMeetingTokenProperties( | |
| room_name="YOUR_ROOM_NAME", | |
| enable_recording="cloud", | |
| start_cloud_recording=True | |
| ) | |
| ) | |
| token = await helper.get_token( | |
| room_url="https://your-domain.daily.co/YOUR_ROOM_NAME", | |
| params=token_params |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| class CustomLLMService(AIService): | |
| def __init__(self, backend: BackendBase): | |
| super().__init__() | |
| self.backend = backend | |
| def create_context_aggregator( | |
| self, | |
| context: OpenAILLMContext, | |
| *, | |
| user_params: LLMUserAggregatorParams = LLMUserAggregatorParams(), |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import os | |
| import threading | |
| import time | |
| import requests | |
| from daily import CallClient, Daily, EventHandler | |
| # Get DAILY_API_KEY from the environment | |
| DAILY_API_KEY = os.getenv("DAILY_API_KEY") | |
| if not DAILY_API_KEY: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import * as React from "react"; | |
| import { Box, Video } from "#vcs-react/components"; | |
| import { useGrid } from "#vcs-react/hooks"; | |
| import * as layoutFuncs from "../layouts.js"; | |
| import VideoSingle from "./VideoSingle.js"; | |
| import decorateVideoSplitItem from "./overrides/decorateVideoSplitItem.js"; | |
| import { PositionCorner } from "../constants.js"; | |
| import { debug } from "#vcs-stdlib/components"; | |
| import { RoomContext } from "#vcs-react/contexts"; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import * as React from 'react'; | |
| import { Box, Video } from '#vcs-react/components'; | |
| import { useGrid } from '#vcs-react/hooks'; | |
| import * as layoutFuncs from '../layouts.js'; | |
| import VideoSingle from './VideoSingle.js'; | |
| import decorateVideoSplitItem from './overrides/decorateVideoSplitItem.js'; | |
| import { PositionCorner } from '../constants.js'; | |
| export default function AugmentedSplit(props) { | |
| const { participantDescs = [] } = props; |
NewerOlder