Accéder au contenu.
Menu Sympa

linux-31 - Re: [Linux-31] Capture avec avconv

Objet : Discussions sur le logiciel libre

Archives de la liste

Re: [Linux-31] Capture avec avconv


Chronologique Discussions 
  • From: Aymeric <mulx AT aplu.fr>
  • To: Pierre ESTREM <peterpan31 AT free.fr>,Pierre ESTREM <linux-31 AT culte.org>,Linux 31 <linux-31 AT culte.org>
  • Subject: Re: [Linux-31] Capture avec avconv
  • Date: Fri, 27 Sep 2019 10:47:45 +0200
  • Authentication-results: pic2s.le-pic.org; dkim=pass (4096-bit key; unprotected) header.d=aplu.fr header.i= AT aplu.fr header.b="V6jB3dku"; dkim=pass (4096-bit key) header.d=aplu.fr header.i= AT aplu.fr header.b="INwN8lMR"; dkim-atps=neutral
  • Authentication-results: eva.aplu.fr; dmarc=fail (p=none dis=none) header.from=aplu.fr

Hello,

Étrange effectivement que le micro soit vu comme une entrée stéréo avec un
nom "mono" dedans et je me doute qu'il est bien en mono !
Du coup je ne pense pas que tu ai besoin de changer le format pour le forcer
en stéréo.

La vidéo est en yuv444p, je pense que tu peux la réduire en yuv420p sans
problème, au niveau qualité tu ne verra pas la différence est ça améliorera
la lecture avec les lecteurs, et ça va sûrement réduire l'usage CPU :)

Il y'a aussi un problème avec le thread_queue_size qui doit être aussi liée
au fait que ton CPU n'arrive pas à suivre et qui cause la désynchro ou les
coupures, on peut essayer de l'augmenter mais je ne suis pas sûr que ça aide
vraiment.

Donc je dirais :
ffmpeg -f pulse -ac 2 -thread_queue_size 512 -i
alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -f pulse -ac 2
-thread_queue_size 512 -i alsa_input.usb-AKM_AK5370-00-AK5370.analog-mono -f
x11grab -r 25 -s 1920x1080 -i :0.0 -filter_complex '[0:a][1:a] amix=inputs=2
[audio] ; [2:v] format=yuv420p [video]' -map [audio] -map [video] -c:v
libx264 -preset ultrafast capture.mp4

Autre idée, si c'est bien un problème de CPU qui n'arrive pas à suivre,
est-ce que tu peux installer le paquet vainfo et exécuter la commande
suivante :

vainfo | grep -i EncSlice

Si tu as des lignes avec VAProfileH264 tu peux tester ta capture comme ça
suivante, ça utilisera le processeur graphique pour faire l'encodage, qui
permettra de faire du temps réel sans soucis :

ffmpeg -vaapi_device /dev/dri/renderD128 -f pulse -ac 2 -i
alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -f pulse -ac -i
alsa_input.usb-AKM_AK5370-00-AK5370.analog-mono -f x11grab -r 25 -s 1920x1080
-i :0.0 -filter_complex '[0:a][1:a] amix=inputs=2 [audio] ; [2:v]
format=nv12;hwupload [video]' -map [audio] -map [video] -c:v h264_vaapi -qp
18 capture.mp4

Dans tous les cas donne les retours complets des commandes :)

A+
Aymeric

Le 25 septembre 2019 22:59:29 GMT+02:00, Pierre ESTREM <linux-31 AT culte.org> a
écrit :
>Bonsoir,
>
>Le micro est en mono !
>La ligne qui lui correspond fait un enregistrement en 2 canaux.
>Bizarre ou normal ?
>
>Effectivement c'est mieux avec des simples quotes :
>
>avconv -f pulse -i alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
>-f
>pulse -i alsa_input.usb-AKM_AK5370-00-AK5370.analog-mono
>-filter_complex
>'[1:a] aformat=channel_layouts=stereo [mic] ; [0:a] [mic]
>amix=inputs=2'
>-f x11grab -r 15 -s 1920x1080 -i :0.0 -vcodec libx264 -preset ultrafast
>
>capture.mkv
>
>Ca marche avec le format mkv et avi.
>
>Avec .mp4 VLC n'affiche RIEN et dit RIEN.
>J'ai joint le nohup.out associé...
>
>Je dois encore vérifié si j'ai des déphasages... ils ne manqueront pas
>à
>mon avis...
>
>Merci
>pierre estrem
>
>
>Le 25/09/2019 à 10:40, Aymeric a écrit :
>> Bonjour,
>>
>> Je pense qu'il te manque des quotes pour les filtres, en tout cas la
>commande dans les quotes ne fonctionnera pas.
>>
>> -filter_complex '[1:a] .... etc ... inputs=2'
>>
>> Sinon, si elle plante, elle doit afficher un message d'erreur, est-ce
>que tu peux le fournir ?
>>
>> Tu devrais rester avec le format mp4 qui est quand même plus moderne
>est mieux que avi, surtout pour du codec H264.
>>
>> Le mix est effectivement en 48kHz mais est-ce que le flux d'entrée
>l'ai lui aussi ?
>>
>> Tu peux donner le retour complet de la commande ffmepg, ça permettra
>d'avoir des informations.
>>
>> Aymeric.
>>
>> Le 25 septembre 2019 02:06:47 GMT+02:00, Pierre
>ESTREM<linux-31 AT culte.org> a écrit :
>>> Bonjour,
>>>
>>> Ce sont deux flux :
>>> - le flux audio 2 canaux 48 Khz 128 Kb/s constant (mix du micro et
>>> speakers que tu m'as recommandé).
>>>  - le flux vidéo (h264)
>>> Voir résultat de mediainfo en PJ.
>>>
>>> La commande "avconv -f pulse -i
>>> alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -f pulse -i
>>> alsa_input.usb-AKM_AK5370-00-AK5370.analog-mono -filter_complexe
>[1:a]
>>> aformat=channel_layouts=stereo [mic] ; [0:a] [mic] amix=inputs=2 -f
>>> x11grab -r 15 -s 1920x1080 -i :0.0 -vcodec libx264 -preset ultrafast
>>> capture.avi" plante.
>>>
>>> Donc avec :
>>> avconv -f pulse -i
>alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
>>> -f
>>> pulse -i alsa_input.usb-AKM_AK5370-00-AK5370.analog-mono
>>> -filter_complexe amix=inputs=2 -f x11grab -r 15 -s 1920x1080 -i :0.0
>>> -vcodec libx264 -preset ultrafast capture.avi
>>>
>>> cela marcherait, mais j'ai un décalage des sources mic et speakers
>et
>>> vidéo trop important.
>>>
>>> Le but des vidéos : des démos logicielles pour présenter à de
>"grands
>>> débutants".
>>>
>>> Je n'ai pas encore essayé le tout (audio + video) en "raw" et 60 Hz.
>>> Aurais-je alors des choses synchrones ???
>>>
>>> Merci
>>> pierre estrem
>>>
>>>
>>> Le 24/09/2019 à 09:20, Aymeric a écrit :
>>>> Le 23 septembre 2019 01:00:46 GMT+02:00, Pierre
>>> ESTREM<linux-31 AT culte.org> a écrit :
>>>>> Bonsoir,
>>>>>
>>>>> Merci pour ta commande car elle m'a aidé, bien que l'option "-af"
>>> m'a
>>>>> provoqué une erreur.
>>>>>
>>>>> J'ai fait ceci :
>>>>>
>>>>> $ avconv -f pulse -i
>>> alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
>>>>> -f pulse -i alsa_input.usb-AKM_AK5370-00-AK5370.analog-mono
>>>>> -filter_complex amix=inputs=2 -f x11grab -r 15 -s 1920x1080 -i
>:0.0
>>>>> -vcodec libx264 -preset ultrafast -y capture.mp4
>>>>>
>>>>> Cela fonctionne presque.
>>>>> J'ai des coupures courtes  (pas de son) par intermitence.
>>>>> C'est pour cela que j'ai baissé le "rate" à 15 fps, mais c'est
>idem.
>>>>>
>>>>> Une astuce pour que le son soit fluide ?
>>>>>
>>>> Je pense que c'est un problème d'échantillonnage, les deux flux
>audio
>>> ne doivent pas avoir les mêmes fréquences d'échantillonnage.
>>>> Est-ce que tu peux vérifier que les deux flux audio sont ben
>44.1kHz
>>> oou 48kHz ?
>>>> Peux tu essayer pour déjà avoir les deux flux en stéréo:
>>>> -filter_complexe '[1:a] aformat=channel_layouts=stereo [mic] ;
>[0:a]
>>> [mic] amix=inputs=2'
>>>>> J'ai essayé aussi "amerge=inputs=2" et franchement je ne remarque
>>> pas de
>>>>> différence avec "amix"...
>>>>> mix et merge ne signifient-ils pas tout deux  "mélanger" ?
>>>> amix : mixe plusieurs entrée audio dans une seule sortie audio.
>>>> amerge : mixe plusieurs entrée audio dans un seul flux multi piste.
>>>>
>>>> La différence est subtile mais dans ton cas je pense que amix est
>>> plus approprié :)
>>>> Aymeric.
>>>>
>>>>> Merci
>>>>> pierre estrem
>>>>>
>>>>>
>>>>> Le 22/09/2019 à 19:18, Aymeric (via linux-31 Mailing List) a
>écrit :
>>>>>> On 21/09/2019 02:25, Pierre ESTREM (via linux-31 Mailing List)
>>> wrote:
>>>>>>> Je ne parviens pas à faire de ces 2 commandes 1 seule commande.
>>>>>>>
>>>>>>> Pour les speakers :
>>>>>>>
>>>>>>> $ avconv -f pulse -i
>>>>>>> alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -f x11grab -r
>>> 30
>>>>> -s
>>>>>>> 1920x1080 -i :0.0 -vcodec libx264 -preset ultrafast -threads 4
>-y
>>>>>>> speakers.mp4
>>>>>>>
>>>>>>> Pour le mic :
>>>>>>>
>>>>>>> $ avconv -f pulse -i
>>> alsa_input.usb-AKM_AK5370-00-AK5370.analog-mono
>>>>>>> -f x11grab -r 30 -s 1920x1080 -i :0.0 -vcodec libx264 -preset
>>>>>>> ultrafast -threads 4 -y mic.mp4
>>>>>>>
>>>>>>> Si je réunis les 2 commandes l'enregistrement du mic passe à la
>>>>> trappe
>>>>>>> (en position 2) :
>>>>>>>
>>>>>>> $ avconv -f pulse -i
>>>>>>> alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -f pulse -i
>>>>>>> alsa_input.usb-AKM_AK5370-00-AK5370.analog-mono -f x11grab -r 30
>>> -s
>>>>>>> 1920x1080 -i :0.0 -vcodec libx264 -preset ultrafast -threads 4
>-y
>>>>>>> speakers-mic.mp4
>>>>>>>
>>>>>>> Comment n'en faire qu'une ligne ?
>>>>>> Salut,
>>>>>>
>>>>>> Il te manque un filtre audio pour regrouper les flux audio dans
>un
>>>>> seul
>>>>>> ou il faudrait changer le codec audio de sortie pour supporter du
>>>>>> multipiste comme ac3, dts (mais je ne pense pas que ça soit ton
>but
>>>>>> recherché).
>>>>>>
>>>>>> https://ffmpeg.org/ffmpeg-filters.html#amerge-1
>>>>>>
>>>>>> Pas testé, mais un truc du genre devrait faire l’affaire:
>>>>>>
>>>>>> ffmpeg -f pulse -i
>>> alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
>>>>> -f
>>>>>> pulse -i alsa_input.usb-AKM_AK5370-00-AK5370.analog-mono -af
>'[a:0]
>>>>>> [a:1] amerge=inputs=2' -f x11grab -r 30 -s 1920x1080 -i :0.0
>>> -vcodec
>>>>>> libx264 -preset ultrafast -threads 4 -y speakers-mic.mp4
>>>>>>
>>>>>> Sinon tu n’as normalement pas besoin de l’option -threads ça le
>>> fait
>>>>>> tout seul.
>>>>>>
>>>>>> ""
>>>>>> threads integer (decoding/encoding,video)
>>>>>>            Set the number of threads to be used, in case the
>>>>> selected
>>>>>> codec implementation supports multi-threading.
>>>>>> [...]
>>>>>> Default value is auto
>>>>>>
>>>>>> ""
>>>>>>
>>>>>> A+
>>>>>>
>>>>>> PS : Il me semblait que ffmpeg était revenu dans Ubuntu par
>défaut
>>> et
>>>>>> que la "guerre" avconv/ffmpeg était finie…
>>>>>>
>>>>>> -- Aymeric
>>>> Aymeric
>> Aymeric

Aymeric



Archives gérées par MHonArc 2.6.19+.

Haut de le page