Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#101 25-05-2020 11:18:30

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.5.2-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

J'ai voulu être sûr.
Je viens d'essayer ton script sur l'ordinateur portable de ma femme.
C'est une Debian Buster avec pulseaudio par défaut.
Le script me détecte donc sur celui-ci un hw:0,0 et un hw:0,1.
Je laisse hw:0,0 (défaut) .
Mis à part un son de canard ( je dois passer par le micro interne) et vu que je n'ai pas surtout pas envie de trifouiller dans cette "censuré" de pulse, le son passe. hmm


Il faudrait que d'autres l'essaie et fassent des retours.

à toi smolski big_smile

Dernière modification par golgot200 (25-05-2020 11:28:54)

Hors ligne

#102 25-05-2020 14:55:27

MicP
Membre
Inscription : 29-02-2016

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

Bonjour

Dans le script du message #65

pour économiser :
- 5 lancements de la commande cat
- 5 pipes
- 5 lancements de la commande awk
- et la création et suppression d'un fichier

vous pourriez remplacer :

#!/bin/bash

OUTPUT=~/SCREENSHOT

[ -d "$OUTPUT" ] || mkdir "$OUTPUT"

xwininfo >> "$OUTPUT"/info.txt
WINDOW=$(cat "$OUTPUT"/info.txt | awk '/Window id:/ { print $5 }')
WIDHT=$(cat "$OUTPUT"/info.txt | awk '/Width:/ { print $2 }')
HEIGHT=$(cat "$OUTPUT"/info.txt | awk '/Height:/ { print $2 }')

ABSOLUTE_X=$(cat "$OUTPUT"/info.txt | awk '/Absolute upper-left X:/ { print $4 }')
ABSOLUTE_Y=$(cat "$OUTPUT"/info.txt | awk '/Absolute upper-left Y:/ { print $4 }')


## HQ LOSSLESS
#ffmpeg -thread_queue_size 512 -f alsa -ac 2 -i hw:0,0 -f x11grab -s "$WIDHT"x"$HEIGHT" -i :0.0+"$ABSOLUTE_X","$ABSOLUTE_Y" -r 30 -acodec libmp3lame -vcodec libx264 -preset ultrafast -qp 0 -pix_fmt yuv444p -threads 0 -loglevel repeat+verbose "$OUTPUT/[Le $JOUR à $HEURE]_SCREENSHOT.mkv"

#ffmpeg -thread_queue_size 512 -f alsa -ac 2 -i hw:0,0 -f x11grab -s "$WIDHT"x"$HEIGHT" -i :0.0+"$ABSOLUTE_X","$ABSOLUTE_Y" -r 30 -acodec libmp3lame -vcodec libx264 -preset ultrafast -pix_fmt yuv444p -threads 0 -loglevel repeat+verbose "$OUTPUT/[Le $JOUR à $HEURE]_SCREENSHOT.mkv"

#ffmpeg -thread_queue_size 512 -f pulse -ac 2 -i $(pactl list sources | sed -n '/alsa.*monitor/s/.*: \(.*\)$/\1/p') -f x11grab -s "$WIDHT"x"$HEIGHT" -i :0.0+"$ABSOLUTE_X","$ABSOLUTE_Y" -r 30 -acodec libmp3lame -c:v h264_nvenc -preset hq -loglevel repeat+verbose "$OUTPUT/$WINDOW-[Le $(date +%d-%m-%y) à $(date +%H:%M:%S)].mkv"

# sortie carte son pcie xonar dgx IEC958
# (pactl list sources)
#ffmpeg -thread_queue_size 512 -f pulse -ac 2 -i alsa_output.pci-0000_06_04.0.iec958-stereo.monitor -f x11grab -s "$WIDHT"x"$HEIGHT" -i :0.0+"$ABSOLUTE_X","$ABSOLUTE_Y" -r 30 -acodec libmp3lame -vcodec libx264 -preset ultrafast -pix_fmt yuv444p -threads 0 -loglevel repeat+verbose "$OUTPUT/[Le $JOUR à $HEURE]_SCREENSHOT.mkv"

# micro usb (pactl list sources)
# alsa_input.usb-AKM_AK5371-00.analog-stereo
ffmpeg -thread_queue_size 512 -f pulse -ac 2 -i alsa_input.usb-AKM_AK5371-00.analog-stereo -f x11grab -s "$WIDHT"x"$HEIGHT" -i :0.0+"$ABSOLUTE_X","$ABSOLUTE_Y" -r 30 -acodec libmp3lame -vcodec libx264 -preset ultrafast -pix_fmt yuv444p -threads 0 -loglevel repeat+verbose "$OUTPUT/[Le $JOUR à $HEURE]_SCREENSHOT.mkv"


rm -f "$OUTPUT"/info.txt


par :

#!/bin/bash

theRegex='Window.id:.*"(.*)".*Absolute upper-left X: *([0-9]+).*Absolute upper-left Y: *([0-9]+).*Width: *([0-9]+).*Height: *([0-9]+)'
[[ $(xwininfo) =~ $theRegex ]]
WINDOW=${BASH_REMATCH[1]}
ABSOLUTE_X=${BASH_REMATCH[2]}
ABSOLUTE_Y=${BASH_REMATCH[3]}
WIDHT=${BASH_REMATCH[4]}
HEIGHT=${BASH_REMATCH[5]}


## HQ LOSSLESS
#ffmpeg -thread_queue_size 512 -f alsa -ac 2 -i hw:0,0 -f x11grab -s "$WIDHT"x"$HEIGHT" -i :0.0+"$ABSOLUTE_X","$ABSOLUTE_Y" -r 30 -acodec libmp3lame -vcodec libx264 -preset ultrafast -qp 0 -pix_fmt yuv444p -threads 0 -loglevel repeat+verbose "$OUTPUT/[Le $JOUR à $HEURE]_SCREENSHOT.mkv"

#ffmpeg -thread_queue_size 512 -f alsa -ac 2 -i hw:0,0 -f x11grab -s "$WIDHT"x"$HEIGHT" -i :0.0+"$ABSOLUTE_X","$ABSOLUTE_Y" -r 30 -acodec libmp3lame -vcodec libx264 -preset ultrafast -pix_fmt yuv444p -threads 0 -loglevel repeat+verbose "$OUTPUT/[Le $JOUR à $HEURE]_SCREENSHOT.mkv"

#ffmpeg -thread_queue_size 512 -f pulse -ac 2 -i $(pactl list sources | sed -n '/alsa.*monitor/s/.*: \(.*\)$/\1/p') -f x11grab -s "$WIDHT"x"$HEIGHT" -i :0.0+"$ABSOLUTE_X","$ABSOLUTE_Y" -r 30 -acodec libmp3lame -c:v h264_nvenc -preset hq -loglevel repeat+verbose "$OUTPUT/$WINDOW-[Le $(date +%d-%m-%y) à $(date +%H:%M:%S)].mkv"

# sortie carte son pcie xonar dgx IEC958
# (pactl list sources)
#ffmpeg -thread_queue_size 512 -f pulse -ac 2 -i alsa_output.pci-0000_06_04.0.iec958-stereo.monitor -f x11grab -s "$WIDHT"x"$HEIGHT" -i :0.0+"$ABSOLUTE_X","$ABSOLUTE_Y" -r 30 -acodec libmp3lame -vcodec libx264 -preset ultrafast -pix_fmt yuv444p -threads 0 -loglevel repeat+verbose "$OUTPUT/[Le $JOUR à $HEURE]_SCREENSHOT.mkv"

# micro usb (pactl list sources)
# alsa_input.usb-AKM_AK5371-00.analog-stereo
ffmpeg -thread_queue_size 512 -f pulse -ac 2 -i alsa_input.usb-AKM_AK5371-00.analog-stereo -f x11grab -s "$WIDHT"x"$HEIGHT" -i :0.0+"$ABSOLUTE_X","$ABSOLUTE_Y" -r 30 -acodec libmp3lame -vcodec libx264 -preset ultrafast -pix_fmt yuv444p -threads 0 -loglevel repeat+verbose "$OUTPUT/[Le $JOUR à $HEURE]_SCREENSHOT.mkv"
 



Dernière modification par MicP (25-05-2020 15:42:33)

Hors ligne

#103 25-05-2020 15:44:30

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.5.2-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

Je viens de tester sur un autre ordinateur. Le script avec pulseaudio n'est pas simple. Je ne capture que sur le micro.
Il faudrait regarder plus en détails ce qui merdouille.

Je me documente pour l'instant ici :

https://trac.ffmpeg.org/wiki/Capture/ALSA

Hors ligne

#104 25-05-2020 16:11:26

enicar
Membre
Lieu : ailleurs
Distrib. : sid
Noyau : 5.6.13
(G)UI : openbox
Inscription : 26-08-2010

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

Plutôt que de faire :


WINDOW=$(cat "$OUTPUT"/info.txt | awk '/Window id:/ { print $5 }')
 


Tu pourrais faire :


WINDOW=$(awk '/Window id:/ { print $5 }' <"$OUTPUT"/info.txt)
 


Je trouve que c'est mieux. À chaque fois que l'on fait :


cat $fichier | commande
 


il est préférable de faire :


commande <$fichier
 


Voilà, c'était juste une petite interlude « bonne pratique pour la
programmation avec le shell » wink

Je ne suis pas fan de la regexp de MicP, mais c'est aussi une façon de faire
et qui doit être assez efficace en plus.

Dernière modification par enicar (25-05-2020 16:13:16)

Hors ligne

#105 25-05-2020 18:18:56

Croutons
Membre
Distrib. : Debian10 Buster
Noyau : Linux 4.19.0-9-amd64
(G)UI : Mate
Inscription : 16-12-2016

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

désolé j'en remet une couche mes vidéos ne passaient pas sur mon lecteur de salon
il suffit juste de changer un paramètre

-pix_fmt yuv444p


a changer par

-pix_fmt yuv420p


Encodage pour les players stupides

Vous devrez peut-être utiliser -vf format = yuv420p (ou l'alias -pix_fmt yuv420p ) pour que votre sortie fonctionne dans QuickTime et la plupart des autres lecteurs. Ces lecteurs ne prennent en charge que l'espace colorimétrique plan YUV avec un sous-échantillonnage de chrominance 4: 2: 0 pour la vidéo H.264. Sinon, en fonction de votre source, ffmpeg peut produire un format pixel qui peut être incompatible avec ces lecteurs.


https://trac.ffmpeg.org/wiki/Encode/H.2 … tsandtunes

Dernière modification par Croutons (25-05-2020 18:19:17)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<--
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#106 26-05-2020 07:56:05

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.5.2-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

Bonjour,

j'ai peut-être compris ce qui ce passe:


Audio stream

Find your capture card

aplay -L

Note that I'm using a big "L" here to have symbolic names instead of index numbers.

You want to select the audio stream that is coming directly from your capture card. Those streams always begin with "hw:"

Based on the discovered information, the capture section of ffmpeg will look like :

ffmpeg \
        -f alsa -ac 2 -i hw:CARD=HDMI,DEV=0

Note the "-ac 2" to select stereo input.
 




je teste :


theRegex='CARD.*'
cards=($(while read -r; do [[ $REPLY =~ $theRegex ]]    \
&& printf "hw:${BASH_REMATCH[0]} ";  \
done <<< $(LANG=C aplay -L)))
 




EDIT:

CARDS.png

Par contre dans le script, je ne sais pas comment insérer "uniq" pour n'avoir que :


CARD=Audigy2
CARD=Audigy2,DEV=0
 

Dernière modification par golgot200 (26-05-2020 08:21:16)

Hors ligne

#107 26-05-2020 08:48:16

MicP
Membre
Inscription : 29-02-2016

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

Bonjour

Donne moi le retour des lignes de commandes suivantes :

LANG=C aplay -L

LANG=C aplay -l

et donne moi la liste résultante
que tu souhaites obtenir dans ta boîte de dialogue.

Hors ligne

#108 26-05-2020 09:17:58

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.5.2-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

Bonjour MicP

LANG=C aplay -L




surround21
    2.1 Surround output to Front and Subwoofer speakers
surround40
    4.0 Surround output to Front and Rear speakers
surround41
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50
    5.0 Surround output to Front, Center and Rear speakers
surround51
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
null
    Discard all samples (playback) or generate zero samples (capture)
samplerate
    Rate Converter Plugin Using Samplerate Library
speexrate
    Rate Converter Plugin Using Speex Resampler
jack
    JACK Audio Connection Kit
oss
    Open Sound System
pulse
    PulseAudio Sound Server
speex
    Plugin using Speex DSP (resample, agc, denoise, echo, dereverb)
upmix
    Plugin for channel upmix (4,6,8)
vdownmix
    Plugin for channel downmix (stereo) with a simple spacialization
default:CARD=Audigy2
    SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
    Default Audio Device
sysdefault:CARD=Audigy2
    SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
    Default Audio Device
front:CARD=Audigy2,DEV=0
    SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
    Front speakers
rear:CARD=Audigy2,DEV=0
    SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
    Rear speakers
center_lfe:CARD=Audigy2,DEV=0
    SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
    Center and Subwoofer speakers
side:CARD=Audigy2,DEV=0
    SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
    Side speakers
surround21:CARD=Audigy2,DEV=0
    SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=Audigy2,DEV=0
    SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
    4.0 Surround output to Front and Rear speakers
surround41:CARD=Audigy2,DEV=0
    SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Audigy2,DEV=0
    SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Audigy2,DEV=0
    SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Audigy2,DEV=0
    SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Audigy2,DEV=0
    SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
    IEC958 (S/PDIF) Digital Audio Output
usbstream:CARD=Audigy2
    SB Audigy 2 ZS [SB0350]
    USB Stream Output

 



LANG=C aplay -l




**** List of PLAYBACK Hardware Devices ****
card 0: Audigy2 [SB Audigy 2 ZS [SB0350]], device 0: emu10k1 [ADC Capture/Standard PCM Playback]
  Subdevices: 31/32
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
  Subdevice #8: subdevice #8
  Subdevice #9: subdevice #9
  Subdevice #10: subdevice #10
  Subdevice #11: subdevice #11
  Subdevice #12: subdevice #12
  Subdevice #13: subdevice #13
  Subdevice #14: subdevice #14
  Subdevice #15: subdevice #15
  Subdevice #16: subdevice #16
  Subdevice #17: subdevice #17
  Subdevice #18: subdevice #18
  Subdevice #19: subdevice #19
  Subdevice #20: subdevice #20
  Subdevice #21: subdevice #21
  Subdevice #22: subdevice #22
  Subdevice #23: subdevice #23
  Subdevice #24: subdevice #24
  Subdevice #25: subdevice #25
  Subdevice #26: subdevice #26
  Subdevice #27: subdevice #27
  Subdevice #28: subdevice #28
  Subdevice #29: subdevice #29
  Subdevice #30: subdevice #30
  Subdevice #31: subdevice #31
card 0: Audigy2 [SB Audigy 2 ZS [SB0350]], device 2: emu10k1 efx [Multichannel Capture/PT Playback]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 0: Audigy2 [SB Audigy 2 ZS [SB0350]], device 3: emu10k1 [Multichannel Playback]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: Audigy2 [SB Audigy 2 ZS [SB0350]], device 4: p16v [p16v]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
 




J'ai modifié à ma manière :


#!/bin/bash

OUTPUT=~/MAGNETO

[ -d "$OUTPUT" ] || mkdir "$OUTPUT"


theRegex='CARD.*'
cards=($(while read -r; do [[ $REPLY =~ $theRegex ]]    \
&& printf "hw:${BASH_REMATCH[0]} ";  \
done <<< $(LANG=C aplay -L)))

titleHeight=92
lineHeight=23

boxHeight=$((($titleHeight+$lineHeight+(${#cards[@]}*$lineHeight))))
lstForZen=(${cards[@]/hw:/FALSE hw:})
lstForZen[0]="TRUE"
choice=$(zenity --list --radiolist --width=218 --height=$boxHeight  \
        --title "Capture"                                           \
        --text="Sélectionnez un périphérique"                       \
        --column="Choix" --column="Périphériques" ${lstForZen[@]})

# https://www.cyberciti.biz/faq/bash-shell-find-out-if-a-variable-has-null-value-or-not/
condition="$choice"
if [ -z "$condition" ]
then
      echo "Annulation"
exit 0
else
      echo "Choix validé"


size=$(slop -f "-s %wx%h -i :0.0+%x,%y")


ffmpeg -guess_layout_max 0 -f alsa -thread_queue_size 512 -ac 2 -i $choice \
    -f x11grab -thread_queue_size 512 -probesize 42M $size -filter:v fps=60 \
    -acodec libmp3lame -c:v h264_nvenc -preset llhq -loglevel repeat+verbose \
    "$OUTPUT/CAPTURE-[Le $(date +%d-%m-%y) à $(date +%H:%M:%S)].mkv"

fi

 



Résultat :

CARDS.png

Dernière modification par golgot200 (26-05-2020 09:20:44)

Hors ligne

#109 26-05-2020 09:27:33

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.5.2-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

Je précise que le script modifié fonctionne bien sur mon système ALSA sans PULSE.
J'ai testé sur une Debian Buster avec Pulseaudio. Il fonctionne mais je tape toujours sur le micro pour la capture du son. Je ne pense pas que c'est dû au script mais à une config à modifier.

Dernière modification par golgot200 (26-05-2020 09:29:21)

Hors ligne

#110 26-05-2020 10:04:27

MicP
Membre
Inscription : 29-02-2016

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

Pour savoir ce qu'il faudra changer dans le script
il faudrait que tu me donnes
la liste résultante que tu souhaites obtenir dans ta boîte de dialogue.

Hors ligne

#111 26-05-2020 10:22:30

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.5.2-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

Et bien


toto
titi
tutu
tutu
tutu
titi
titi
toto
 



en


toto
titi
tutu
 



en utilisant en bash la fonction "uniq" peut-être.

Hors ligne

#112 26-05-2020 10:33:21

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.5.2-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

Attends, je teste autre chose :

Other_Choice.png

Hors ligne

#113 26-05-2020 10:58:50

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.5.2-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

Je peine avec :


theRegex='.*CARD.*'
 



Il me prend que 7 CARD au lieu des 14 désirés. C'est bizarre ce truc smile

Hors ligne

#114 26-05-2020 11:33:18

MicP
Membre
Inscription : 29-02-2016

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

#!/bin/bash

theRegex='(CARD=.*,DEV=.*)'
while read -r;  do {
    [[ $REPLY =~ $theRegex ]] && {
        [[ $lst == *${BASH_REMATCH[1]}* ]] || lst+="hw:${BASH_REMATCH[1]} "
    }
}
done <<< $(LANG=C aplay -L)
cards=( $lst )

titleHeight=92
lineHeight=23

boxHeight=$((($titleHeight+$lineHeight+(${#cards[@]}*$lineHeight))))
lstForZen=(${cards[@]/hw:/FALSE hw:})
lstForZen[0]="TRUE"

choice=$(zenity --list --radiolist --width=400 --height=$boxHeight  \
        --title "Capture"                                           \
        --text="Sélectionnez un périphérique"                       \
        --column="Choix" --column="Périphériques" ${lstForZen[@]})
# https://www.cyberciti.biz/faq/bash-shell-find-out-if-a-variable-has-null-value-or-not/
condition="$choice"
if [ -z "$condition" ]
then
      echo "Annulation"
exit 0
else
      echo "Choix validé"


size=$(slop -f "-s %wx%h -i :0.0+%x,%y")


ffmpeg -guess_layout_max 0 -f alsa -thread_queue_size 512 -ac 2 -i $choice \
    -f x11grab -thread_queue_size 512 -probesize 42M $size -filter:v fps=60 \
    -acodec libmp3lame -c:v h264_nvenc -preset llhq -loglevel repeat+verbose \
    "$OUTPUT/CAPTURE-[Le $(date +%d-%m-%y\ à\ %H:%M:%S)].mkv"

fi



=======
Et si tu veux qu'il te retourne dans la liste :

front:CARD=Audigy2,DEV=0
rear:CARD=Audigy2,DEV=0
center_lfe:CARD=Audigy2,DEV=0
side:CARD=Audigy2,DEV=0
surround21:CARD=Audigy2,DEV=0
surround40:CARD=Audigy2,DEV=0
surround41:CARD=Audigy2,DEV=0
surround50:CARD=Audigy2,DEV=0
surround51:CARD=Audigy2,DEV=0
surround71:CARD=Audigy2,DEV=0
iec958:CARD=Audigy2,DEV=0

alors, dans mon script,
remplace la ligne d'assignation de la valeur de la variable theRegex
par cette ligne :

theRegex='(.*CARD=.*,DEV=.*)'

Dernière modification par MicP (26-05-2020 11:51:17)

Hors ligne

#115 26-05-2020 12:00:07

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.5.2-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

Script au post 114

J'ai modifié pour ça :

#theRegex='(CARD=.*,DEV=.*)'
theRegex='.*CARD.*'
while read -r;  do {
    [[ $REPLY =~ $theRegex ]] && {
        [[ $lst == *${BASH_REMATCH[0]}* ]] || lst+="hw:${BASH_REMATCH[0]} "
    }
}
done <<< $(LANG=C aplay -L)
cards=( $lst )



.
qui me donne ce que je cherche mais avec ce hw: qui m'embête. J'ai bien le 14 CARDS  :


14_CARDS.png


mais voilà la commande ffmpeg n'accepte  pas le hw: devant le périphérique.


cannot open audio device hw:default:CARD=Audigy2 (No such file or directory)
hw:default:CARD=Audigy2: Input/output error
 



Il me faut en exemple :

default:CARD=Audigy2



Si je vire le hw: dans le script, je ne retrouve plus 7 CARD :


theRegex='.*CARD.*'
while read -r;  do {
    [[ $REPLY =~ $theRegex ]] && {
        [[ $lst == *${BASH_REMATCH[0]}* ]] || lst+="${BASH_REMATCH[0]} "
    }
}
done <<< $(LANG=C aplay -L)
cards=( $lst )
 



7_CARDS.png

Mais là, ça fonctionne. ( mais 7 CARD )

C'est ce satané hw: qui me bloque roll

EDIT: Désolé, j'ai croisé ton post

Dernière modification par golgot200 (26-05-2020 12:07:39)

Hors ligne

#116 26-05-2020 12:17:55

MicP
Membre
Inscription : 29-02-2016

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

golgot200 a écrit :

… C'est ce satané hw: qui me bloque roll

Alors remplace la ligne :

        [[ $lst == *${BASH_REMATCH[1]}* ]] || lst+="hw:${BASH_REMATCH[1]} "

par :

        [[ $lst == *${BASH_REMATCH[1]}* ]] || lst+="${BASH_REMATCH[1]} "

Dernière modification par MicP (26-05-2020 12:21:09)

Hors ligne

#117 26-05-2020 12:28:30

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.5.2-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

big_smile big_smile big_smile

ça fait une plombe que j'essaie sur :

[[ $lst == *${BASH_REMATCH[0]}* ]] || lst+="hw:${BASH_REMATCH[0]} "




passe pas : 7 CARD

[[ $lst == *${BASH_REMATCH[0]}* ]] || lst+="${BASH_REMATCH[0]} "




ça, ça passe : (en mettant un caractère bidon "a" puis espace. (Si collé au $, le "a" apparait dans le menu déroulant comme le "hw:" avec plus que 7 CARD)
Mes 14 CARD

[[ $lst == *${BASH_REMATCH[0]}* ]] || lst+="a ${BASH_REMATCH[0]} "



smile

Dernière modification par golgot200 (26-05-2020 12:35:03)

Hors ligne

#118 26-05-2020 13:36:50

MicP
Membre
Inscription : 29-02-2016

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

Remplace :

[[ $lst == *${BASH_REMATCH[0]}* ]] || lst+="${BASH_REMATCH[0]} "

par :

[[ $lst == *${BASH_REMATCH[0]}* ]] || lst+="FALSE ${BASH_REMATCH[0]} "

et supprime la ligne :

 lstForZen=(${cards[@]/hw:/FALSE hw:})

Hors ligne

#119 26-05-2020 18:04:49

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.5.2-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

Bon, j'ai installé pulseaudio pour voir comment réagissait le script sans ces dernières modifications. Il fonctionne parfaitement comme tu me l'a signalé.
Je vais laisser tout ça dans l'état. wink

Merci à toi pour ta patience wink


Celui-ci fonctionne bien en prenant une modification sur ton dernier post mais sans supprimer :

lstForZen=(${cards[@]/hw:/FALSE hw:})





#!/bin/bash

OUTPUT=~/MAGNETO

[ -d "$OUTPUT" ] || mkdir "$OUTPUT"


theRegex='.*CARD.*'
while read -r;  do {
    [[ $REPLY =~ $theRegex ]] && {
        [[ $lst == *${BASH_REMATCH[0]}* ]] || lst+="FALSE ${BASH_REMATCH[0]} "
    }
}
done <<< $(LANG=C aplay -L)
cards=( $lst )

titleHeight=92
lineHeight=23

boxHeight=$((($titleHeight+$lineHeight+(${#cards[@]}*$lineHeight))))
lstForZen=(${cards[@]/hw:/FALSE hw:})
lstForZen[0]="TRUE"
choice=$(zenity --list --radiolist --width=218 --height=$boxHeight  \
        --title "Capture"                                           \
        --text="Sélectionnez un périphérique"                       \
        --column="Choix" --column="Périphériques" ${lstForZen[@]})

# https://www.cyberciti.biz/faq/bash-shell-find-out-if-a-variable-has-null-value-or-not/
condition="$choice"
if [ -z "$condition" ]
then
      echo "Annulation"
exit 0
else
      echo "Choix validé"


size=$(slop -f "-s %wx%h -i :0.0+%x,%y")


ffmpeg -guess_layout_max 0 -f alsa -thread_queue_size 512 -ac 2 -i $choice \
    -f x11grab -thread_queue_size 512 -probesize 42M $size -filter:v fps=60 \
    -acodec libmp3lame -c:v h264_nvenc -preset llhq -loglevel repeat+verbose \
    "$OUTPUT/CAPTURE-[Le $(date +%d-%m-%y) à $(date +%H:%M:%S)].mkv"

fi
 



J'ai un meilleur visuel sur les périphériques et ta modification sur le hw: à réglé tout ça  smile


VISUEL.png

Tous les périphériques répondent présent ou pas sur ma configuration. C'est nickel !!! smile

Dernière modification par golgot200 (26-05-2020 18:46:27)

Hors ligne

#120 26-05-2020 22:29:05

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.5.2-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

Voilà, j'ai supprimé :

lstForZen=(${cards[@]/hw:/FALSE hw:})





#!/bin/bash

OUTPUT=~/MAGNETO

[ -d "$OUTPUT" ] || mkdir "$OUTPUT"


theRegex='.*CARD.*'
while read -r;  do {
    [[ $REPLY =~ $theRegex ]] && {
        [[ $lst == *${BASH_REMATCH[0]}* ]] || lst+="FALSE ${BASH_REMATCH[0]} "
    }
}
done <<< $(LANG=C aplay -L)
cards=( $lst )

cards[0]="TRUE"

choice=$(zenity --list --radiolist --width=450 --height=640 \
        --title "Capture"                                           \
        --text="Sélectionnez un périphérique"                       \
        --column="Choix" --column="Périphériques" ${cards[@]})

# https://www.cyberciti.biz/faq/bash-shell-find-out-if-a-variable-has-null-value-or-not/
condition="$choice"
if [ -z "$condition" ]
then
      echo "Annulation"
exit 0
else
      echo "Choix validé"


size=$(slop -f "-s %wx%h -i :0.0+%x,%y")


ffmpeg -guess_layout_max 0 -f alsa -thread_queue_size 512 -ac 2 -i $choice \
    -f x11grab -thread_queue_size 512 -probesize 42M $size -filter:v fps=60 \
    -acodec libmp3lame -c:v h264_nvenc -preset llhq -loglevel repeat+verbose \
    "$OUTPUT/CAPTURE-[Le $(date +%d-%m-%y) à $(date +%H:%M:%S)].mkv"

fi

 



Sans hw: selon ce qui est spécifié sur cette page :

https://trac.ffmpeg.org/wiki/Capture/ALSA

Hors ligne

#121 26-05-2020 22:40:39

MicP
Membre
Inscription : 29-02-2016

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

Tu peux aussi supprimer les .* qui ne servent à rien
en remplaçant :

theRegex='.*CARD.*'

par :

theRegex='CARD'

Hors ligne

#122 27-05-2020 07:52:31

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.5.2-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

MicP a écrit :

Tu peux aussi supprimer les .* qui ne servent à rien
en remplaçant :

theRegex='.*CARD.*'

par :

theRegex='CARD'



Bonjour,

j'ai déjà essayé mais sans succès. En mettant :

theRegex='CARD'



je me retrouve juste avec un CARD dans la liste.

Hors ligne

#123 27-05-2020 08:05:05

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.5.2-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

Croutons a écrit :

désolé j'en remet une couche mes vidéos ne passaient pas sur mon lecteur de salon
il suffit juste de changer un paramètre

-pix_fmt yuv444p


a changer par

-pix_fmt yuv420p


Encodage pour les players stupides

Vous devrez peut-être utiliser -vf format = yuv420p (ou l'alias -pix_fmt yuv420p ) pour que votre sortie fonctionne dans QuickTime et la plupart des autres lecteurs. Ces lecteurs ne prennent en charge que l'espace colorimétrique plan YUV avec un sous-échantillonnage de chrominance 4: 2: 0 pour la vidéo H.264. Sinon, en fonction de votre source, ffmpeg peut produire un format pixel qui peut être incompatible avec ces lecteurs.


https://trac.ffmpeg.org/wiki/Encode/H.2 … tsandtunes




Bonjour,

j'avais mis yuv444p par rapport à des warnings à l'époque dans mon terminal. Mais je n'ai pas pris de notes ou de liens sur le sujet. Dommage. En tout cas merci pour le retour wink

Dernière modification par golgot200 (27-05-2020 08:05:45)

Hors ligne

#124 27-05-2020 08:09:03

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.5.2-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

En tout cas j'ai appris au moins une chose parmis tout ça, c'est que hw: n'est pas nécessaire devant CARD pour l'identification du périphérique smile

Dernière modification par golgot200 (27-05-2020 08:10:19)

Hors ligne

#125 27-05-2020 08:22:03

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.5.2-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [Terminé] Un magnétoscope pour Kodi (ou autres)

Une question, faut-il tout prendre à lettre les indications de Shellcheck ?

Hors ligne

Pied de page des forums