3

I am struggling on a ffmpeg media conversion script.
I am using fluent-ffmpeg library with node.js.

My app is supposed to receive a stream as input, resize it using ffmpeg, and then outputing a stream.

However, I am absolutely unable to process an input stream with ffmpeg, even when specifying the input format (-f ffmpeg's option).

However, when execuyting the exact same ffmpeg command on an mp4 file (without extension), it works and converts properly the media !

Working code (no stream)

import * as ffmpeg from 'fluent-ffmpeg';

ffmpeg('myMp4File')
  .inputFormat('mp4')
  .audioCodec('aac')
  .videoCodec('libx264')
  .format('avi')
  .size('960x540')
  .save('mySmallAviFile');

Failing code (using stream)

import * as ffmpeg from 'fluent-ffmpeg';
import { createReadStream } from 'fs';

ffmpeg(createReadStream('myMp4File'))
  .inputFormat('mp4')
  .audioCodec('aac')
  .videoCodec('libx264')
  .format('avi')
  .size('960x540')
  .save('mySmallAviFile');

It generates the following ffmpeg's error:

Error: ffmpeg exited with code 1: pipe:0: Invalid data found when processing input
Cannot determine format of input stream 0:0 after EOF
Error marking filters as finished
Conversion failed!

This error explicitely says that ffmpeg could not identify the input format, in despite of argument -f mp4.

I read pages and pages of ffmpeg's man but I could find any relevant information concerining my issue.

Complementary information

Here is the output of command._getArguments(), showing the full ffmpeg command baked by the library:

[
  '-f',                'mp4',      
  '-i',                'pipe:0',       
  '-y',                '-acodec',   
  'aac',               '-vcodec',     
  'libx264',           '-filter:v',    
  'scale=w=960:h=540', '-f',
  'avi',               'mySmallAviFile'
]                                      

So the full ffmpeg command is the following:

ffmpeg -f mp4 -i pipe:0 -y -acodec 'aac' -vcodec 'libx264 -filter:v 'scale=w=960:h=540' -f 'avi' mySmallAviFile

wakobu
  • 318
  • 1
  • 11

1 Answers1

0

I was getting the same error but only for files which had moov atom metadata at the end of a file.
After moving mov atom to the beginning of the file with:
ffmpeg -i input.mp4 -movflags faststart out.mp4
the error dissapeared.

Serguei A
  • 334
  • 1
  • 2
  • 10