Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create silent .ogg audio file

Tags:

ffmpeg

audio

ogg

In answer to the question "How-to make a silent mp3 or wav-file" on ubuntuforums.org FakeOutdoorsman provided the following recipe:

Another method by using FFmpeg. 60 seconds of silent audio in WAV:

ffmpeg -ar 48000 -t 60 -f s16le -acodec pcm_s16le -ac 2 -i /dev/zero -acodec copy output.wav

60 seconds of silent audio in MP3:

ffmpeg -ar 48000 -t 60 -f s16le -acodec pcm_s16le -ac 2 -i /dev/zero -acodec libmp3lame -aq 4 output.mp3

How could I do something similar to create a silent .ogg audio file?

For a web app, I want to create a very short file for testing whether the browser will preload an audio file, or whether it will wait until the file is actually played before starting to stream it.

like image 581
James Newton Avatar asked Aug 14 '15 20:08

James Newton


2 Answers

Silent audio

That's an outdated method. You can now use the anullsrc filter instead, and it will work on any OS:

ffmpeg -f lavfi -i anullsrc -t 5 -c:a libvorbis output.ogg
  • Default sample rate is 44100, and default channel layout is stereo. If you want something different you can do something like: anullsrc=r=48000:cl=mono (or use cl=1 for mono).

  • For Vorbis in general, avoid the native encoder vorbis if possible; libvorbis will provide a better output (although it doesn't really matter with a silent output).


Other somewhat related examples

Test tone

An annoying tone or beeping tone can be made with sine filter. Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:

ffmpeg -f lavfi -i sine=f=220:b=4:d=5 -c:a libvorbis output.oga

Just black video

Using the color filter.

ffmpeg -f lavfi -i color=d=5 -c:v libtheora output.ogv
  • Default frame rate is 25 and default video size is 320x240. To change it: color=r=24:s=1280x720:d=5.

  • But who uses Theora anymore? A more modern alternative that likely fills its niche is VP8/VP9 + Vorbis in WebM: -c:v libvpx output.webm.

Test pattern + 440 Hz tone

Using testsrc and sine filters:

ffmpeg -f lavfi -i testsrc -f lavfi -i sine -t 10 -c:v libtheora -c:a libvorbis \
-q:v 5 -q:a 5 output.ogv
  • Change frame rate and video size the same way as shown above for the color filter.

  • See FFmpeg Filter Documentation: Video Sources for a list of many other video source filters such as smptehdbars.

Also see

  • FFmpeg Wiki: A Brief Theora and Vorbis Encoding Guide
  • FFmpeg Codecs Documentation: libtheora
  • FFmpeg Codecs Documentation: libvorbis
  • ​Hydrogen Audio: Recommended Vorbis Encoder Settings
  • FFmpeg Wiki: VP8 Video in WebM Encoding Guide
like image 140
llogan Avatar answered Sep 18 '22 18:09

llogan


Specify -acodec to be vorbis (instead of libmp3lame) and put .ogg at the end of the output file (in place of .mp3).

like image 33
Multimedia Mike Avatar answered Sep 18 '22 18:09

Multimedia Mike