[LAU] ecasound/jack records empty files

Kai Vehmanen kvehmanen at eca.cx
Mon May 23 20:02:51 UTC 2011


Hi,

On Mon, 16 May 2011, Eric Steinberg wrote:

> and start ecasound:
> 
> $sudo ecasound -a:1,2,3,4,5,6,7,8 -f:s16_le,8,44100 -i jack,system -a:1 -o channelone.mp3 -a:2 -o channeltwo.mp3 -a:3 -o channelthree.mp3 -a:4 -o
> channelfour.mp3 -a:5 -o channelfive.mp3 -a:6 -o channelsix.mp3 -a:7 -o channelseven.mp3 -a:8 -o channeleight.mp3
[...]
> ...this starts recording without problems.  However, when I stop 
> recording by issuing ctrl-c to ecasound and then start recording again, 
> the files created now have zero bytes.  If I stop and restart the jack

as Julien already recommended, I'd first try with 
'-G:jack,ecasound,notransport'. With this you state that you do not wish 
to follow JACK transport state (e.g. what's the current position), but 
just record whatever is coming from the JACK ports. In your use-case, you 
probably want '-x' as well (always truncate outputs).

This (disable transport) is now the default for batchmode in ecasound 
2.8.0 and newer (just released).

Otherwise, I think your setup is not deinterleaving the channels quite the 
way you probably intended. I think what you are looking for (guessing 
based on your file naming):

ecasound -f:f32,2,44100 \
   -G:jack,ecasound,notransport -x \
   -a:1 -i jack_multi,system:capture_1,system:capture_2 -o chpair1.mp3 \
   -a:2 -i jack_multi,system:capture_3,system:capture_4 -o chpair2.mp3 \
   -a:3 -i jack_multi,system:capture_5,system:capture_6 -o chpair3.mp3 \
   -a:4 -i jack_multi,system:capture_7,system:capture_8 -o chpair4.mp3

If you want to specifically to capture the mono channels, then it's
a bit more complicated due to odd limitations of eca+lame combination,
but still possible:

ecasound -f:f32,1,44100 \
   -G:jack,ecasound,notransport -x \
   -a:1 -i jack_multi,system:capture_1 -o ch1.mp3 -chcopy:1,2 \
   -a:2 -i jack_multi,system:capture_2 -o ch2.mp3 -chcopy:1,2 \
   -a:3 -i jack_multi,system:capture_3 -o ch3.mp3 -chcopy:1,2 \
   -a:4 -i jack_multi,system:capture_4 -o ch4.mp3 -chcopy:1,2 \
   -a:5 -i jack_multi,system:capture_5 -o ch5.mp3 -chcopy:1,2 \
   -a:6 -i jack_multi,system:capture_6 -o ch6.mp3 -chcopy:1,2
   ...

This is a bit clumsy due to having to feed a stereo stream to mp3 encoding 
(probably ecasound should do this implicitly under the hood), but still 
manageable.

I'd personally consider recording to flac (no need for the extra chcopy 
for flac files). Its nonlossy and allows for more options (multichannel 
files).

PS Thanks for the post btw. I found one nasty regression in
    recent 2.8.0 release that impacted this particular use-case.
    Naturally I recommend the just released 2.8.1 for the above
    examples... :)


More information about the Linux-audio-user mailing list