Nodejs: I want to use url as source of ffmpeg

Viewed 1096

I want to use url as source of ffmpeg. url is like https://192.168.1.103:6666/stream.mjpg. I checked ffmpeg working on MacOS shell

ffmpeg  -f mjpeg -y -use_wallclock_as_timestamps 1 -i 'http://192.168.1.103:6535/stream.mjpg' -r 5 -reconnect 1 -loglevel 16 -c:v copy -an -qscale 10 '2.mp4'

But I want it to use in nodejs. So make it automatic. However it doesn't work when I put url in ffmpeg object as init.

var ffmpeg = new ffmpeg(url)

So this is my code

const imagePath = "http://192.168.1.103:6535/stream.mjpg"

 function mjpegVideoRecoder () {
     try {
         var process = new ffmpeg({source: imagePath})
         console.log("te");
         process
           .inputFormat('mjpeg')
           .outputOptions([
             '-y',
             '-r 25',
             '-c:v copy',
             '-an',
             '-qscale 10',
           ])
           .ouput('testtest.avi')
           .seek(30)
      } catch {
         console.log("errpr")
     }
  }
  mjpegVideoRecoder()*/

and I tried this

  1 var spawn = require('child_process').spawn
  2 var request = require('request')
  3 var args = "-f mjpeg -y -use_wallclock_as_timestamps 1 -i 'http://192.168.1.103:6535/stream.mjpg' -r 5 -reconne    ct 1 -loglevel 16 -c:v copy -an -qscale 10 '3.mp4'"
  4 var ffmpeg = require('fluent-ffmpeg')
  5 var encoder = spawn('ffmpeg', args.split(' '));
  6 encoder.stderr.pipe(process.stdout);
  7
  8 var interval = function(){
  9     request('http://192.168.1.103:6535/stream.mjpg',function(er){
 10         if(er){console.log(er)}
 11         setTimeout(function(){interval()},1000)
 12     }).pipe(encoder.stdin,{end:false})
 13 }
 14 interval();

But it also failed

this is error msg

'http://192.168.1.103:6535/stream.mjpg': No such file or directory
internal/streams/legacy.js:61
      throw er; // Unhandled stream error in pipe.
      ^

Error: write EPIPE
    at WriteWrap.onWriteComplete [as oncomplete] (internal/stream_base_commons.js:92:16) {
  errno: -32,
  code: 'EPIPE',
  syscall: 'write'
}

How can I handle it. plz help me.

1 Answers

use option .fromFormat('image2pipe')

Related