Search code examples
ffmpegconcatenation

Concatenating on Windows throws "Invalid data found when processing input" while it works on Mac and Linux


I need to run a command with a nightly build of FFMPEG to report a bug on the concat protocol. I found it difficult to compile from source with libx264 support on Linux, and I want to spare my Mac computer, so I use the nightly build on Windows from Zeranoe.

I call this command to concatenate the files:

ffmpeg -safe 0 concat -i files_to_combine -vcodec libx264 show.mp4

where files_to_combine is:

file ./short_DSC_0013.MOV
file ./short_DSC_0014.MOV
file ./short_DSC_0015.MOV
file ./short_DSC_0016.MOV
file ./short_DSC_0017.MOV
file ./short_DSC_0018.MOV
file ./short_DSC_0019.MOV

I call this command from the directory containing the video files and files_to_combine.

On Windows with a nightly build, I get the error:

files_to_combine: Invalid data found when processing input

I changed file ./DSC_0013.MOV to these options, all with the same error:

file 'short_DSC_0013.MOV'
file '.\short_DSC_0013.MOV'
file 'F:\short_DSC_0013.MOV'

How can I debug this error, or what is the syntax for concatenating on Windows with a nightly build?

Update with log-level 48

I ran the same command with -v 48 and got:

F:\brain squids>C:\Users\migue\Desktop\ffmpeg-20200211-f15007a-win64-static\bin\ffmpeg.exe -v 48 -i files_to_combine -vcodec libx264 show.mp4
ffmpeg version git-2020-02-11-f15007a Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 9.2.1 (GCC) 20200122
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
  libavutil      56. 39.100 / 56. 39.100
  libavcodec     58. 68.102 / 58. 68.102
  libavformat    58. 38.100 / 58. 38.100
  libavdevice    58.  9.103 / 58.  9.103
  libavfilter     7. 75.100 /  7. 75.100
  libswscale      5.  6.100 /  5.  6.100
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument '48'.
Reading option '-i' ... matched as input url with argument 'files_to_combine'.
Reading option '-vcodec' ... matched as option 'vcodec' (force video codec ('copy' to copy stream)) with argument 'libx264'.
Reading option 'show.mp4' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument 48.
Successfully parsed a group of options.
Parsing a group of options: input url files_to_combine.
Successfully parsed a group of options.
Opening an input file: files_to_combine.
[NULL @ 0000021c781784c0] Opening 'files_to_combine' for reading
[file @ 0000021c78179580] Setting default whitelist 'file,crypto,data'
[AVIOContext @ 0000021c781817c0] Statistics: 182 bytes read, 0 seeks
files_to_combine: Invalid data found when processing input

The contents of files_to_combine is:

file 'short_DSC_0013.MOV'
file 'short_DSC_0014.MOV'
file 'short_DSC_0015.MOV'
file 'short_DSC_0016.MOV'
file 'short_DSC_0017.MOV'
file 'short_DSC_0018.MOV'
file 'short_DSC_0019.MOV'

Update because of wrong command

I had mistyped the command. The right command has a -f in front of concat, which I found because the accepted answer was able to make the command work in a similar environment:

ffmpeg -safe 0 -f concat -i files_to_combine -vcodec libx264 show.mp4

Solution

  • I tested it successfully on Windows 10:

    (ffmpeg version N-95216-ge6625ca41f)

    1. Videos 01.mp4, 02.mp4and .txt are in C:\Users\drake7\Desktop\
    2. Content of files_to_combine.txt:

    _

    file 'C:\Users\drake7\Desktop\01.mp4'
    file 'C:\Users\drake7\Desktop\02.mp4'
    

    Note: 02.mp4 is a copy of 01.mp4. For this quick test I wanted to keep it really simple.

    .txt created with right-click > New > Text Document

    (With my windows command prompt I am in C:\Users\drake7\Desktop\ffmpeg\bin)

    "ffmpeg.exe" -f concat -safe 0 -i "C:\Users\drake7\Desktop\files_to_combine.txt" -vcodec libx264 "C:\Users\drake7\Desktop\show.mp4"