J'essaie de diffuser de l'audio en direct à l'aide ffmpeg
d'un microphone USB externe. J'ai suivi ce tutoriel presque
J'ai dû adapter certaines étapes mais finalement, j'ai réussi à recevoir le flux de mon ordinateur portable en utilisant cette commande:
ffmpeg -f oss -i /dev/dsp1 -acodec libmp3lame -ab 32k -ac 1 -re -f rtp rtp://192.168.28.116:1234
Le CPU est proche de 100%, j'ai un mauvais son pendant deux secondes et après rien ... Je vois dans Wireshark que la carte envoie des trames en continu.
Quelqu'un a-t-il des idées pour réduire l'utilisation du processeur?
Réponses:
Pour répondre à votre question spécifique, vous pouvez réduire le processeur en canalisant un enregistrement dans ffmpeg:
Vous devrez remplacer plughw: 1,0 par votre carte son spécifique. Voir arecord -l pour plus d'informations. Sur mon Rasp Pi, il est passé de ~ 95% CPU à ~ 35%.
la source
Entrée ALSA
Une alternative est de passer par ALSA. Une commande similaire à celle ci-dessus serait
Je ne sais pas comment cela affectera l'utilisation du processeur.
la source
Cela fonctionne et réduit l'utilisation du processeur:
Assurez-vous de remplacer la valeur par défaut: CARD = U0x46d0x819 avec votre ID de microphone (obtenu à partir de arecord -l) ou vous pouvez spécifier
-i hw:0,0
(ou quel que soit le périphérique).J'ai eu un problème similaire - l'encodage mp3 a pris plus de 90% de la puissance du processeur et ne pouvait tout simplement pas suivre le son - alors je l'ai changé en encodage mp2. Cela a utilisé environ 15 à 18% du CPU (vi mesuré
top
) et est diffusé en douceur vers VLC sur mon LAN. Cela ferait un babyphone parfait, ou autre chose. Il y a juste une seconde ou deux délais, qui est la mise en mémoire tampon à la fin de VLC.Remarque: l' adresse IP est une adresse de multidiffusion ([224-239] .xyz). Vous n'avez pas à le viser sur un périphérique réseau particulier de votre réseau local et votre routeur à large bande gardera le trafic local (par défaut).
la source
Vous pouvez réduire considérablement la charge du processeur en réduisant la fréquence d'échantillonnage audio du périphérique d'entrée (
-ar 8000
avant-f alsa
) et en définissant le débit binaire audio du codec sur 128k (-b:a 128k
). Ironiquement, la réduction du nombre de canaux (-ac 1
) semblait augmenter la charge du processeur, j'ai donc trouvé que cette commande s'exécute sur un processeur assez faible:Bien que l'on doive se rappeler que cela dépend aussi des capacités du matériel de capture que l'on essaie d'utiliser et des versions de ffmpeg / avconv.
la source