v1.7.10: fix registrazione BlackHole muta (device by name)
QuickTime registrava da BlackHole, MusicTools no: il bug era che list_input_devices passava al record l'index AVFoundation, ma l'index puo' rinumerarsi tra l'elenco e l'apertura (iPhone in continuita', Multi-Output Device, hot-plug). Quando ffmpeg apriva :<index> col numero sbagliato, registrava silenzio dal device "vero" mappato a quel numero. Fix: in _list_macos uso il NOME del device come id (es. "BlackHole 2ch"). ffmpeg AVFoundation accetta sia :<index> sia :<name> ed il nome e' stabile. Aggiunto campo 'index' solo per log/diagnostica. Nessun cambio Windows (gia' faceva by-name).
This commit is contained in:
1 parent
d8349fb79f
commit
415175ec4d
2 files changed
+15
-3
No files matched your search
+1
-1
@@ -5,7 +5,7 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
VERSION = "v1.7.9"
|
VERSION = "v1.7.10"
|
||||||
|
|
||||||
|
|
||||||
APP_NAME = "MusicTools"
|
APP_NAME = "MusicTools"
|
||||||
|
|||||||
+14
-2
@@ -73,7 +73,14 @@ def _is_virtual(name: str) -> bool:
|
|||||||
|
|
||||||
def _list_macos(ffmpeg: str) -> list[dict]:
|
def _list_macos(ffmpeg: str) -> list[dict]:
|
||||||
"""Parsa l'output di `ffmpeg -f avfoundation -list_devices true -i ""`.
|
"""Parsa l'output di `ffmpeg -f avfoundation -list_devices true -i ""`.
|
||||||
L'output va su stderr."""
|
L'output va su stderr.
|
||||||
|
|
||||||
|
IMPORTANTE: come 'id' usiamo il NOME del device (non l'index numerico).
|
||||||
|
AVFoundation rinumera silenziosamente i device quando cambia il set di
|
||||||
|
hardware collegato (es. iPhone in continuita', Multi-Output Device, ecc).
|
||||||
|
Il nome e' invece stabile; ffmpeg AVFoundation accetta sia ':<index>'
|
||||||
|
sia ':<name>' come specifica del device input.
|
||||||
|
"""
|
||||||
try:
|
try:
|
||||||
proc = subprocess.run(
|
proc = subprocess.run(
|
||||||
[ffmpeg, "-hide_banner", "-f", "avfoundation",
|
[ffmpeg, "-hide_banner", "-f", "avfoundation",
|
||||||
@@ -105,7 +112,12 @@ def _list_macos(ffmpeg: str) -> list[dict]:
|
|||||||
if not m:
|
if not m:
|
||||||
continue
|
continue
|
||||||
idx, name = m.group(1), m.group(2).strip()
|
idx, name = m.group(1), m.group(2).strip()
|
||||||
devices.append({"id": idx, "name": name, "is_virtual": _is_virtual(name)})
|
devices.append({
|
||||||
|
"id": name, # nome stabile (vedi docstring)
|
||||||
|
"index": idx, # solo informativo per debug
|
||||||
|
"name": name,
|
||||||
|
"is_virtual": _is_virtual(name),
|
||||||
|
})
|
||||||
|
|
||||||
return devices
|
return devices
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user