ffmpeg passt zu keinen Streams

449
beek

Ich versuche, komplexe Filter mit fließendem ffmpeg zu machen, aber ich bekomme den Fehler:

Stream-Bezeichner "pts" in der Filtergraph-Beschreibung [0: v] Setpts = 0,3333333333333333 * PTS [pts]; [pts] crop = out_w = 3381.4186868767238: out_h = 1728: x = 0: y = 0 [left]; = out_w = 74.58131312327646: out_h = 1728: x = 3381.4186868767238: y = 0 [rechts]; [links] [rechts] hstack = Eingaben = 2 [orientiert]; [1: v] Skala = 3456: 1728 [hs1]; hs1] colorkey = 0x00ff00: 0.8: 0.1 [hs1x]; [orientiert] [hs1x] overlay [out] passt zu keinen Streams.

So versuche ich den Filter zu bauen

 const filter = []  let init = '[0:v]'   if(node.video.playBackRate){  filter.push() init = '[pts]'  }  if(node.scene && node.scene.cameraDefault){ const theta = JSON.parse(node.scene.cameraDefault).rotationY const per = height * (theta/180) const left = height + per const right = height - per  filter.push(, inputs: init, outputs: '[left]'}) filter.push(, inputs: init, outputs: '[right]'})  filter.push(, inputs: ['[left]','[right]'], outputs: '[orientated]'}) init = '[orientated]' }   if(node.hotspots){  const overlays = [init]  node.hotspots.forEach((hotspot, index) => { if(hotspot.render){  const options = {}  if(hotspot.startTime) options['-ss'] = hotspot.startTime  if(hotspot.endTime) options['-t'] = hotspot.endTime - (hotspot.startTime || 0)  node.ffmpeg.addInput(dir + '/' + hotspot.render)//.withInputOptions(options)  filter.push(:$`, inputs: `[$:v]`, outputs: `[hs$]`}) filter.push(]`, outputs: `[hs$x]`}) overlays.push(`[hs$x]`) } })  filter.push() }  node.ffmpeg.complexFilter(filter, '[out]') 

Wohin gehe ich falsch?

Ich gehe davon aus, dass es der rechte Erntefilter ist. Ich muss diese Filter irgendwie mit der gleichen Eingabe ausführen.

0

1 Antwort auf die Frage

0
Gyan

Sie kennen die Syntax von fluent-ffmpeg nicht, aber ich kann das Problem identifizieren. Sie können die im Filtergraph generierten Filterausgaben nicht wiederverwenden. Die benötigte Methode besteht darin, die Ausgabe aufzuteilen, so dass der Anfang des Filtergraphen so aussehen würde:

[0:v]setpts=0.3333333333333333*PTS,split=2[pts1][pts2]; [pts1]crop=out_w=3381.4186868767238:out_h=1728:x=0:y=0[left]; [pts2]crop=out_w=74.58131312327646:out_h=1728:x=3381.4186868767238:y=0[right];