fix(media): yt-dlp ins Runtime-Image + Fallback bei ytdl HTTP 410/403; sollte YouTube-Streams stabilisieren
This commit is contained in:
parent
cfc3f899a2
commit
9e12f2a208
2 changed files with 14 additions and 2 deletions
|
|
@ -26,7 +26,10 @@ ENV NODE_ENV=production
|
||||||
ENV PORT=8080
|
ENV PORT=8080
|
||||||
ENV SOUNDS_DIR=/data/sounds
|
ENV SOUNDS_DIR=/data/sounds
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y ffmpeg && rm -rf /var/lib/apt/lists/*
|
RUN apt-get update && apt-get install -y ffmpeg curl ca-certificates && rm -rf /var/lib/apt/lists/* \
|
||||||
|
&& curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp \
|
||||||
|
&& chmod a+rx /usr/local/bin/yt-dlp \
|
||||||
|
&& yt-dlp --version || true
|
||||||
|
|
||||||
COPY --from=server-build /app/server/dist ./server/dist
|
COPY --from=server-build /app/server/dist ./server/dist
|
||||||
COPY --from=server-build /app/server/node_modules ./server/node_modules
|
COPY --from=server-build /app/server/node_modules ./server/node_modules
|
||||||
|
|
|
||||||
|
|
@ -625,7 +625,16 @@ app.post('/api/play-url', async (req: Request, res: Response) => {
|
||||||
// Audio-Stream besorgen
|
// Audio-Stream besorgen
|
||||||
let stream: any;
|
let stream: any;
|
||||||
if (ytdl.validateURL(url)) {
|
if (ytdl.validateURL(url)) {
|
||||||
stream = ytdl(url, { filter: 'audioonly', quality: 'highestaudio', highWaterMark: 1 << 25 });
|
// Nutze ytdl-core, fallback auf yt-dlp bei HTTP Fehlern (410/403 etc.)
|
||||||
|
try {
|
||||||
|
stream = ytdl(url, { filter: 'audioonly', quality: 'highestaudio', highWaterMark: 1 << 25 });
|
||||||
|
stream.on('error', (e: any) => { throw e; });
|
||||||
|
} catch (e) {
|
||||||
|
console.warn('ytdl-core fehlgeschlagen, versuche yt-dlp:', e);
|
||||||
|
const yt = child_process.spawn('yt-dlp', ['-f', 'bestaudio', '-o', '-', url]);
|
||||||
|
yt.on('error', (err) => console.error('yt-dlp spawn error:', err));
|
||||||
|
stream = yt.stdout;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Fallback via yt-dlp, benötigt binary im Image/Host
|
// Fallback via yt-dlp, benötigt binary im Image/Host
|
||||||
// wir nutzen stdout mit ffmpeg pipe
|
// wir nutzen stdout mit ffmpeg pipe
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue