SOX got nothing from SoundFlower on OS 10.10; 10.11; 10.11.6
Opened this issue · 2 comments
For some reason on some comps SoundFlower does not catch audio. I.e. there are SoundFlower but when I switch input\output to the SoundFlower I cannot get any sound. I have got only not empty file without any sound.
Okay, how I try to get the sound...
Just FYI:
$ system_profiler SPSoftwareDataType
System Software Overview:
System Version: OS X 10.10.5 (14F1912)
Kernel Version: Darwin 14.5.0
Boot Volume: Macintosh HD
Boot Mode: Normal
Computer Name: Craig Computer
User Name: Craig (craigm)
Secure Virtual Memory: Enabled
Time since boot: 1 day22:12
Gonna check is AVFoundation works:
$ ./ffmpeg -h demuxer=avfoundation
Demuxer avfoundation [AVFoundation input device]:
AVFoundation input device AVOptions:
-list_devices <int> .D...... list available devices (from 0 to 1) (default false)
true .D......
false .D......
-video_device_index <int> .D...... select video device by index for devices with same name (starts at 0) (from -1 to INT_MAX) (default -1)
-audio_device_index <int> .D...... select audio device by index for devices with same name (starts at 0) (from -1 to INT_MAX) (default -1)
-pixel_format <pix_fmt> .D...... set pixel format (default yuv420p)
-framerate <video_rate> .D...... set frame rate (default "ntsc")
-video_size <image_size> .D...... set video size
-capture_cursor <int> .D...... capture the screen cursor (from 0 to 1) (default 0)
-capture_mouse_clicks <int> .D...... capture the screen mouse clicks (from 0 to 1) (default 0)
Gonna get list of AVFoundation audio devices:
$ ./ffmpeg -f avfoundation -list_devices true -i ''
ffmpeg version 3.1.1-tessus Copyright (c) 2000-2016 the FFmpeg developers
built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --as=yasm --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzmq --enable-version3 --disable-ffplay --disable-indev=qtkit --disable-indev=x11grab_xcb
libavutil 55. 28.100 / 55. 28.100
libavcodec 57. 48.101 / 57. 48.101
libavformat 57. 41.100 / 57. 41.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 47.100 / 6. 47.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
libpostproc 54. 0.100 / 54. 0.100
[AVFoundation input device @ 0x7fda40421000] AVFoundation video devices:
[AVFoundation input device @ 0x7fda40421000] [0] Built-in iSight
[AVFoundation input device @ 0x7fda40421000] [1] Capture screen 0
[AVFoundation input device @ 0x7fda40421000] AVFoundation audio devices:
[AVFoundation input device @ 0x7fda40421000] [0] Soundflower (64ch)
[AVFoundation input device @ 0x7fda40421000] [1] Built-in Microphone
[AVFoundation input device @ 0x7fda40421000] [2] Soundflower (2ch)
[AVFoundation input device @ 0x7fda40421000] [3] Built-in Input
: Input/output error
Okay, we have SoundFlower in devices: [AVFoundation input device @ 0x7fda40421000] [2] Soundflower (2ch)
Then I run AppleScript which gonna switch to the "SoundFlower (2ch)":
enableSF("input")
enableSF("output")
Where enableSF(stdname) is:
on enableSF(stdname)
tell application "System Preferences"
-- activate
tell anchor stdname of pane "com.apple.preference.sound" to reveal
tell application "System Events"
tell application process "System Preferences"
tell tab group 1 of window 1
delay 2
set rowslist to selected of row of table 1 of scroll area 1
set counter to 0
repeat with id in rowslist
set counter to counter + 1
set rowName to (value of text field 1 of row counter of table 1 of scroll area 1)
set output to stdname & " " & rowName
set scrpt to "echo \"" & output & "\" >> ~/Desktop/ds.log"
do shell script scrpt
if (rowName is equal to "Soundflower (2ch)") then
set selected of row counter of table 1 of scroll area 1 to true
set output to "
!!! FOUND SF for " & stdname & " " & rowName
set scrpt to "echo \"" & output & "\" >> ~/Desktop/ds.log"
log output
do shell script scrpt
exit repeat
end if
end repeat
end tell
end tell
end tell
end tell
end enableSF
In result I have got this:
input Internal Microphone
input Line In
input Digi CoreAudio Device
input Soundflower (2ch)
!!! FOUND SF for input Soundflower (2ch)
output Headphones
output Digi CoreAudio Device
output Soundflower (2ch)
!!! FOUND SF for output Soundflower (2ch)
It means that we switch to the SoundFlower. Actually the same can be done by hands, but the script is more reliable as for me.
Okay, next we can try to save some audio via SOX:
$ /Applications/sox-14.3.2/sox -d ~/Desktop/out.wav
Input File : 'default' (coreaudio)
Channels : 2
Sample Rate : 44100
Precision : 32-bit
Sample Encoding: 32-bit Signed Integer PCM
In:0.00% 00:00:00.00 [00:00:00.00] Out:0 [ | ] Clip:0
...
...
...
In:0.00% 00:00:02.51 [00:00:00.00] Out:106k [ | ] Clip:0
...
...
...
In:0.00% 00:00:11.80 [00:00:00.00] Out:516k [ | ] Clip:0 /Applications/sox-14.3.2/sox WARN coreaudio: coreaudio: unhandled buffer overrun. Data discarded.
...
...
...
In:0.00% 00:00:12.35 [00:00:00.00] Out:545k [ | ] Clip:0 /Applications/sox-14.3.2/sox WARN coreaudio: coreaudio: unhandled buffer overrun. Data discarded.
...
...
...
In:0.00% 00:00:13.28 [00:00:00.00] Out:582k [ | ] Clip:0
Aborted.
And, as you can see, the SOX gives me an empty file. Rather, it gives the data, but there is no sound.
This happens on all OS from 10.10 to 10.11.6. Normal output should be this type:
In:0.00% 00:00:00.28 [00:00:00.00] Out:8.19k [======|======] Clip:0
...
...
...
In:0.00% 00:00:04.37 [00:00:00.00] Out:188k [ -====|===== ] Hd:1.1 Clip:0
...
...
...
In:0.00% 00:00:08.82 [00:00:00.00] Out:385k [======|=====-] Hd:1.1 Clip:0
In:0.00% 00:00:09.01 [00:00:00.00] Out:393k [-=====|=====-] Hd:1.1 Clip:0
In:0.00% 00:00:09.20 [00:00:00.00] Out:401k [======|======] Hd:1.1 Clip:0
Hey @mattingalls, could you help me with that?
@xiaose Have you had sox output the devices it sees? Depending on whether or not there is a BlueTooth device attached, I've seen the length of the device names reported by sox to fluctuate (e.g. Soundflower (2
). You can get it to output the devices it sees by doing something like this:
$ sox -V6 -t null lol.nul -t coreaudio dkgjjweigew
sox: SoX v
time: Sep 22 2016 00:01:30
uname: Darwin nkjnkjnjknjknkj.local 15.6.0 Darwin Kernel Version 15.6.0: Thu Sep 1 15:01:16 PDT 2016; root:xnu-3248.60.11~2/RELEASE_X86_64 x86_64
compiler: gcc 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)
arch: 1288 48 88 L
sox INFO nulfile: sample rate not specified; using 48000
Input File : 'lol.nul' (null)
Channels : 1
Sample Rate : 48000
Precision : 32-bit
sox INFO coreaudio: Found Audio Device "Built-in Microphone"
sox INFO coreaudio: Found Audio Device "Built-in Output"
sox INFO coreaudio: Found Audio Device "Soundflower 1"
sox INFO coreaudio: Found Audio Device "Soundflower 2"
sox INFO coreaudio: Found Audio Device "Soundflower 3"
sox INFO coreaudio: Found Audio Device "Soundflower 4"
sox INFO coreaudio: Found Audio Device "Multi-Output "
sox FAIL formats: can't open output file `dkgjjweigew': can not open audio device