Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Enregistrer les sons qui passent

31 réponses
Avatar
Yliur
Bonjour

J'aimerais savoir comment enregistrer les sons qui sont jou=E9s sur le
PC. Il doit bien y avoir un moyen de capturer tout ce qui est envoy=E9
=E0 la carte son, non ?

J'ai essay=E9 quelques trucs trouv=E9s sur des forums, mais rien n'a
fonctionn=E9. Le plus simple semble =EAtre de demander directement =E0 Al=
sa
de faire l'enregistrement avec quelque chose comme :
arecord -f cd -d 10 stream.wav

Ca me cr=E9e bien le fichier, mais il est d=E9sesp=E9r=E9ment silencieux, a=
lors
que je joue quelque chose avec SMPlayer (donc mplayer) pendant
l'enregistrement.

Est-ce que quelqu'un a d=E9j=E0 r=E9ussi =E0 faire =E7a ?

Comme informations compl=E9mentaires : =E7a se passe sous Archlinux avec
Alsa install=E9 (les sons sont jou=E9s correctement : je peux =E9couter de
la musique par exemple).

Merci

10 réponses

1 2 3 4
Avatar
Yliur
Le 17 Dec 2009 21:26:37 GMT
Nicolas George <nicolas$ a écrit :

Yliur wrote in message :
> J'aimerais savoir comment enregistrer les sons qui sont joués sur le
> PC. Il doit bien y avoir un moyen de capturer tout ce qui est
> envoyé à la carte son, non ?

http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html#pcm_plugin s_file



J'ai écrit ça dans ~/.asoundrc

"
pcm.essaicopie {
type file
slave {
pcm hw
}
file /tmp/fic.wav
format wav
}
"

Et j'ai fait l'enregistrement avec :
"arecord -d 5 -f cd -t wav -D essaicopie > /tmp/truc.wav"

Donc ça me crée bien les fichiers fic.wav et truc.wav, mais ils sont
toujours aussi silencieux.
Avatar
Yliur
Le Fri, 18 Dec 2009 14:25:17 +0100
Sergio a écrit :

Yliur a écrit :

>> Avec l'extension Firefox "Download Helper", ça ne le fait pas ?
>>
>
> J'utilise parfois une autre extension, mais elles ne permettent de
> télécharger que les fichiers référencés dans la page, par u n flux
> de données qui passerait dans une connexion entre un module flash
> et son serveur.

Je viens de faire un essai :
Ça marche mais...
Deezer "saucissonne" les morceaux en tranche de 30s. Il faut
reconstituer ensuite (et dans le bon ordre!). Par contre avec Jiwa,
pas de problèmes...




La personne qui m'a demandé un truc de ce genre ne s'intéressait ni à
l'un ni à l'autre :) . Je cherche une solution générale au niveau du
système, ça devrait être possible.

A moins que je n'aie un problème avec mon matériel ? Est-ce que ça
marche chez toi en tapant par exemple simplement cette ligne de
commande, pour enregistrer n'importe quoi (musique de Deezer ou
locale, ...) ?
[attention, crée ou écrase le fichier stream.wav dans le
répertoire courant]
arecord -f cd -d 10 stream.wav
Avatar
Nicolas George
Yliur wrote in message :
pcm.essaicopie {
type file
slave {
pcm hw
}
file /tmp/fic.wav
format wav
}



Ça m'a l'air correct.

Et j'ai fait l'enregistrement avec :
"arecord -d 5 -f cd -t wav -D essaicopie > /tmp/truc.wav"



Pourquoi veux-tu faire un enregistrement ?
Avatar
Riquer Vincent
Yliur a écrit :
Bonjour

J'aimerais savoir comment enregistrer les sons qui sont joués sur le
PC. Il doit bien y avoir un moyen de capturer tout ce qui est envoyé
à la carte son, non ?



A condition que la carte et le pilote fournissent les ports de
monitoring. Toutes ne le font pas.

J'ai essayé quelques trucs trouvés sur des forums, mais rien n'a
fonctionné. Le plus simple semble être de demander directement à Alsa
de faire l'enregistrement avec quelque chose comme :
arecord -f cd -d 10 stream.wav

Ca me crée bien le fichier, mais il est désespérément silencieux, alors
que je joue quelque chose avec SMPlayer (donc mplayer) pendant
l'enregistrement.



La solution qui marche *partout*, c'est de faire passer l'audio dans
JACK. Avec une GUI genre qjackctl tu peux facilement router le son d'une
appli vers une autre, en quelques clics.

Tu peux même paramétrer ALSA pour router automatiquement vers JACK, ce
qui permettra de l'utiliser même avec les applis qui ne le supporte pas.

$ cat ~/.asoundrc
pcm.!default {
type plug
slave.pcm "jack"
}

pcm.jackplug {
type plug
slave { pcm "jack" }
}

pcm.jack {
type jack
playback_ports {
0 system:playback_3
1 system:playback_4
}
capture_ports {
0 system:capture_1
1 system:capture_2
}
}
--
Vincent Riquer

BOFH excuse #422:

Someone else stole your IP address, call the Internet detectives!
Avatar
Yliur
Le Fri, 18 Dec 2009 17:27:52 +0100
debug this fifo a écrit :

Yliur wrote:

>
> Et j'ai fait l'enregistrement avec :
> "arecord -d 5 -f cd -t wav -D essaicopie > /tmp/truc.wav"

stdout n'etant pas "seekable", je te déconseille la
redirection si tu ne veux pas prendre le risque d'avoir
des .wav corrompus.




Je ne comprends pas ce que tu veux dire. Ça change quoi qu'on puisse ou
non écrire où on veut dans stdout, de toutes façons le flux de sort ie
du programme on peut juste écrire dedans à la suite, qu'il soit
redirigé ou non vers un fichier, non ? Donc si le programme écrit
quelque chose dedans c'est que ça marche ?
Après si j'ai fait ça c'est qu'il crée un fichier tel que décrit da ns
le fichier de configuration et qu'en plus il affichait plein de bazar
dans la console, que j'ai redirigé vers un fichier. Et les deux
fichiers font la même taille, donc on dirait qu'il crée un fichier et
écrit en parallèle sur la sortie standard.
Avatar
Luc.Habert.00__arjf
debug this fifo :

stdout n'etant pas "seekable"



Nawak. La seekabilité ne dépend que de vers quoi pointe le fd, absolument
pas du fd lui-même. Si ça pointe vers un fichier, comme c'est le cas ici,
c'est seekable. (Après, il se peut que arecord soit buggué et décide
d'autorité que stdout n'est pas seekable, j'ai la flemme de vérifier.)
Avatar
Luc.Habert.00__arjf
Yliur :

Je ne comprends pas ce que tu veux dire.



Dans le format wav, il y a un header qui indique la longueur, donc, quand on
ne connait pas la longueur au départ, il faut, après avoir écrit le fichier
en entier, seeker au début pour inscrire cette longueur.
Avatar
Yliur
Le Wed, 23 Dec 2009 12:46:14 +0000 (UTC)
(Luc Habert) a écrit :

Yliur :

> Je ne comprends pas ce que tu veux dire.

Dans le format wav, il y a un header qui indique la longueur, donc,
quand on ne connait pas la longueur au départ, il faut, après avoir
écrit le fichier en entier, seeker au début pour inscrire cette
longueur.



Comme il connaît à l'avance la longueur de l'enregistrement, peut-être
qu'il se débrouille avec ça ? En tout cas merci pour la remarque.
Mais aucun des deux fichiers ne fonctionnaient.
Avatar
Fabien LE LEZ
On Wed, 23 Dec 2009 12:46:14 +0000 (UTC) (Luc Habert):

Dans le format wav, il y a un header qui indique la longueur, donc, quand on
ne connait pas la longueur au départ, il faut, après avoir écrit le fichier
en entier, seeker au début pour inscrire cette longueur.



On peut éventuellement garder tout en mémoire (un fichier son, même
non compressé, fait rarement plus de quelques centaines de Mo), et
envoyer tout d'un bloc une fois qu'on a l'intégralité des infos.
Avatar
Yliur
Le Fri, 18 Dec 2009 20:59:22 +0100
Riquer Vincent a écrit :

Yliur a écrit :
> Bonjour
>
> J'aimerais savoir comment enregistrer les sons qui sont joués sur le
> PC. Il doit bien y avoir un moyen de capturer tout ce qui est
> envoyé à la carte son, non ?

A condition que la carte et le pilote fournissent les ports de
monitoring. Toutes ne le font pas.



C'est possible que les cartes que j'ai essayé ne le gèrent pas.


> J'ai essayé quelques trucs trouvés sur des forums, mais rien n'a
> fonctionné. Le plus simple semble être de demander directement à
> Alsa de faire l'enregistrement avec quelque chose comme :
> arecord -f cd -d 10 stream.wav
>
> Ca me crée bien le fichier, mais il est désespérément silencieu x,
> alors que je joue quelque chose avec SMPlayer (donc mplayer) pendant
> l'enregistrement.

La solution qui marche *partout*, c'est de faire passer l'audio dans
JACK. Avec une GUI genre qjackctl tu peux facilement router le son
d'une appli vers une autre, en quelques clics.

Tu peux même paramétrer ALSA pour router automatiquement vers JACK,
ce qui permettra de l'utiliser même avec les applis qui ne le
supporte pas.

$ cat ~/.asoundrc
pcm.!default {
type plug
slave.pcm "jack"
}

pcm.jackplug {
type plug
slave { pcm "jack" }
}

pcm.jack {
type jack
playback_ports {
0 system:playback_3
1 system:playback_4
}
capture_ports {
0 system:capture_1
1 system:capture_2
}
}



Si j'ajoute ça à mon fichier de configuration alsa, alsa enverra les
sons qui passent vers jack, c'est ça ? Et il continuera à ls jouer
normalement en parallèle ?
1 2 3 4