diff --git a/services/capture/src/capture-manager.js b/services/capture/src/capture-manager.js index 60cf556..d225dd5 100644 --- a/services/capture/src/capture-manager.js +++ b/services/capture/src/capture-manager.js @@ -689,9 +689,16 @@ class CaptureManager { // (which would otherwise abort the video/audio outputs and produce nothing). const ff = ['ffmpeg', '-y', '-hide_banner', '-loglevel', 'warning', '-stats']; // SDI input is interlaced; yadif then split into the master + preview taps. + // When there's an HLS dir we split the decode into the master ([vhi]) and + // the H.264 preview ([vlo]); with no HLS dir, split=1 (master only) so no + // split output is ever left unconnected (deltacast growing master had no + // HLS dir, leaving [vlo] orphaned -> 'split output 1 (vlo) unconnected'). + const filterComplex = hlsDir + ? '[0:v]yadif=mode=1:deint=1,split=2[vhi][vlo]' + : '[0:v]yadif=mode=1:deint=1,split=1[vhi]'; const ffArgs = [ ...inputArgs, - '-filter_complex', '[0:v]yadif=mode=1:deint=1,split=2[vhi][vlo]', + '-filter_complex', filterComplex, // (a) MPEG-2 422 elementary video → "$VF" '-map', '[vhi]', ...GROWING_VIDEO_ELEMENTARY_ARGS, @@ -982,7 +989,7 @@ exit "$BMXRC" framerate, audioChannels, outPath: growingPath, - hlsDir: (sourceType === 'sdi') ? sdiHlsDir : null, + hlsDir: (sourceType === 'sdi' || sourceType === 'deltacast') ? sdiHlsDir : null, videoCodec, audioMap, });