You are not logged in.
Hi,
I'm currently trying to capture my microphone and my pc sound with ffmpeg. When I'm simply using:
ffmpeg -f alsa -i pulse out.wav
It just records the microphone.
As solution I most articles/sites describe an audio loop, but if I set it up with:
#!/bin/bash
pactl load-module module-null-sink sink_name=mix
pactl load-module module-loopback sink=mix
pactl load-module module-loopback sink=mix
And the settings in pavucontrol it works fine for some time. But after around 40 seconds to one minute I get the output:
Press [q] to stop, [?] for help
st:0 PTS: 3903486 DTS: 3903486 < 3903489 invalid, clipping
st:0 PTS: 4403071 DTS: 4403071 < 4403074 invalid, clipping
And after one of these messages appear the sound quality becomes really bad.
Is there a way to fix this or is there a better solution to mix two audio streams with pulseaudio?
Last edited by tdc (2013-06-08 14:54:14)
Offline
I'm not sure why you're trying to use a video tool for audio. I'd suggest sox, this is what is made for.
SoX reads and writes audio files in most popular formats and can optionally apply effects to them. It can combine multiple input sources, synthesise audio,
and, on many systems, act as a general purpose audio player or a multi-track audio recorder. It also has limited ability to split the input into multiple out‐
put files
"UNIX is simple and coherent..." - Dennis Ritchie, "GNU's Not UNIX" - Richard Stallman
Online
The problem is that I have to combine it with video later. I just removed the video capturing parts of the script to make it simpler.
Offline
Later meaning in a different part of the script, or later as in at some later point you're going to add that to the same command?
"UNIX is simple and coherent..." - Dennis Ritchie, "GNU's Not UNIX" - Richard Stallman
Online
Up until now I captured audio and video in the same command.
Last edited by tdc (2013-06-01 20:38:52)
Offline
I took another look into it and this article uses amix to mix the two streams. The problem I got there is that it seems like pulseaudio is blocking alsa because if I try to use e.g.:
ffmpeg -f alsa -i hw:0,0 out.wav
I get:
[alsa @ 0xdc6f80] cannot open audio device hw:0,0 (Device or resource busy)
hw:0,0: Input/output error
How can I still use alsa when I have pulseaudio running on my System?
Offline
Does your audio system contain a hardware loopback device? You can see in alsamixer and it would likely have the word "mix" in its name such as "Stereo Mix" or "Wave out mix". Seems to be a rare thing these days, but if you do then ffmpeg can use that directly. If not then you can look into dmix and/or dsnoop.
Offline
My alsamixer shows just two bars "Master" and "Capture"... the problem is I don't know how to use amix or dmix because usually you give them the alsa input sources. It seems like for me pulseaudio blocks these sources. (see my last reply)
I could shutdown pulseaudio but some applications I use need it. Is there a way to use the alsa input sources while pulseaudio is running?
Edit: Seems like I solved it. First I had to close all applications using pulseaudio so that the "Device or resource busy" message doesn't appear anymore. Then I had to activate both capture-switches in alsamixer and mix hw:0,0 und hw:0,2 with amix.
Last edited by tdc (2013-06-08 14:51:18)
Offline