trying a new method

This commit is contained in:
legop3
2025-11-28 00:37:54 -05:00
parent 52a5b9bab4
commit 9e089b6e4d
7 changed files with 25 additions and 32 deletions
Vendored
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+6 -27
View File
@@ -20,27 +20,11 @@ VIDEO_FPS="${VIDEO_FPS:-30}"
VIDEO_BITRATE="${VIDEO_BITRATE:-3000000}"
AUDIO_ENABLE="${AUDIO_ENABLE:-0}"
AUDIO_DEVICE="${AUDIO_DEVICE:-plughw:0,0}"
AUDIO_RATE="${AUDIO_RATE:-48000}"
AUDIO_CHANNELS="${AUDIO_CHANNELS:-1}"
AUDIO_BITRATE="${AUDIO_BITRATE:-24000}"
AUDIO_CODEC="${AUDIO_CODEC:-pcm_mulaw}"
# Normalize device/rate to match the HAT capture; plughw handles any minor conversions.
AUDIO_DEVICE="plughw:0,0"
AUDIO_CODEC="pcm_s16le"
# Keep the audio path simple for the Pi Zero; we hardcode a single PCM profile.
AUDIO_RATE=16000
AUDIO_CHANNELS=1
# Defaults chosen to keep Pi Zero CPU low. Opus can be enabled by setting AUDIO_CODEC=libopus.
if [[ "${AUDIO_CODEC}" == "libopus" ]]; then
AUDIO_RATE=16000
AUDIO_BITRATE=16000
else
# G.711 mu-law (or A-law if AUDIO_CODEC=pcm_alaw): very low CPU, 8 kHz mono, ~64 kbps.
AUDIO_CODEC="pcm_mulaw"
AUDIO_RATE=8000
AUDIO_BITRATE=64000
fi
# Disable audio streaming for now; only video will be published.
AUDIO_ENABLE=0
AUDIO_DEVICE="plughw:0,0"
# Flip the camera 180deg (supported by rpicam-vid/libcamera-vid)
FLIP_ARGS=(--rotation 180)
@@ -64,9 +48,6 @@ else
exit 1
fi
# Flip using the native rotation flag (0/180 supported per rpicam-vid --help).
FLIP_ARGS=(--rotation 180)
run_pipeline() {
if [[ "${AUDIO_ENABLE}" -eq 1 ]]; then
# Try audio + video; if audio device is missing, fallback to video-only.
@@ -101,11 +82,9 @@ run_pipeline() {
-i "${AUDIO_DEVICE}" \
-c:v copy \
-c:a "${AUDIO_CODEC}" \
-b:a "${AUDIO_BITRATE}" \
$( [[ "${AUDIO_CODEC}" == "libopus" ]] && echo "-compression_level 0 -application voip -frame_duration 60" ) \
-ac:a "${AUDIO_CHANNELS}" \
-ar:a "${AUDIO_RATE}" \
-af "$( [[ "${AUDIO_CODEC}" == "libopus" ]] && echo "pan=1c|c0=c0," )volume=20dB" \
-ac:a "${AUDIO_CHANNELS}" \
-af "volume=20dB" \
-flush_packets 1 \
-f mpegts \
"${PUBLISH_URL}"
+3 -1
View File
@@ -204,8 +204,10 @@ VIDEO_WIDTH=1280
VIDEO_HEIGHT=720
VIDEO_FPS=30
VIDEO_BITRATE=2000000
AUDIO_ENABLE=1
AUDIO_ENABLE=0
AUDIO_DEVICE=plughw:0,0
AUDIO_RATE=16000
AUDIO_CHANNELS=1
ENV
chown roverd:roverd /var/lib/roverd/video.env
chmod 0640 /var/lib/roverd/video.env
+1 -1
View File
@@ -143,7 +143,7 @@ func LoadConfig(path string) (*Config, error) {
Audio: AudioConfig{
CaptureEnabled: false,
CaptureDevice: "plughw:0,0",
SampleRate: 48000,
SampleRate: 16000,
Channels: 1,
Bitrate: 24000,
TTSEnabled: false,
+14 -2
View File
@@ -25,8 +25,20 @@ func UpdatePublisherEnv(media MediaConfig, audio AudioConfig) error {
fmt.Fprintf(&buf, "VIDEO_HEIGHT=%d\n", media.VideoHeight)
fmt.Fprintf(&buf, "VIDEO_FPS=%d\n", media.VideoFPS)
fmt.Fprintf(&buf, "VIDEO_BITRATE=%d\n", media.VideoBitrate)
// Disable mic streaming; audio is handled locally for TTS only.
fmt.Fprintf(&buf, "AUDIO_ENABLE=0\n")
audioDevice := audio.CaptureDevice
if audioDevice == "" {
audioDevice = "plughw:0,0"
}
if audio.SampleRate <= 0 {
audio.SampleRate = 16000
}
if audio.Channels <= 0 {
audio.Channels = 1
}
fmt.Fprintf(&buf, "AUDIO_ENABLE=%d\n", boolToInt(audio.CaptureEnabled))
fmt.Fprintf(&buf, "AUDIO_DEVICE=%s\n", audioDevice)
fmt.Fprintf(&buf, "AUDIO_RATE=%d\n", audio.SampleRate)
fmt.Fprintf(&buf, "AUDIO_CHANNELS=%d\n", audio.Channels)
if err := os.WriteFile(publisherEnvPath, buf.Bytes(), 0o640); err != nil {
return err
}
+1 -1
View File
@@ -40,7 +40,7 @@ cameraServo:
audio:
captureEnabled: false
captureDevice: plughw:0,0
sampleRate: 48000
sampleRate: 16000
channels: 1
bitrate: 24000
ttsEnabled: false