0

I'm trying to create a sine wave in .wav using ffmpeg exactly like this S.E. question: How to generate a sine wave with ffmpeg?

For some sample formats it's working good but for big endian encoding, it's not.

Here is my command:

ffmpeg -f lavfi -i "sine=frequency=1000:duration=5" -c:a pcm_f32be test.wav

And its output

ffmpeg version 2.8.15-0ubuntu0.16.04.1 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.10) 20160609
  configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Input #0, lavfi, from 'sine=frequency=1000:duration=5':
  Duration: N/A, start: 0.000000, bitrate: 705 kb/s
    Stream #0:0: Audio: pcm_s16le, 44100 Hz, mono, s16, 705 kb/s
[wav @ 0x174f080] pcm_f32be codec not supported in WAVE format
Output #0, wav, to 'test.wav':
  Metadata:
    encoder         : Lavf56.40.101
    Stream #0:0: Audio: pcm_f32be, 44100 Hz, mono, flt, 1411 kb/s
    Metadata:
      encoder         : Lavc56.60.100 pcm_f32be
Stream mapping:
  Stream #0:0 -> #0:0 (pcm_s16le (native) -> pcm_f32be (native))
Could not write header for output file #0 (incorrect codec parameters ?): Function not implemented

But a file is actually created:

$ ls -al test.wav                                                                                                                                                                               
-rw-rw-r-- 1 user user 20 oct.  30 17:22 test.wav

Where 20 is the size of the file.

My question is: why such a file is created even though the encoding failed?

ggrelet
  • 303

1 Answers1

1

The operation failed during the header writing function. So the header was started and some byes were written to file. ffmpeg doesn't delete files it has started writing. You can file a ticket at trac.ffmpeg.org if you'd like this behaviour changed.

Gyan
  • 38,955