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
|
||||
from pathlib import Path
|
||||
|
||||
VERSION = "v1.7.9"
|
||||
VERSION = "v1.7.10"
|
||||
|
||||
|
||||
APP_NAME = "MusicTools"
|
||||
|
||||
+14
-2
@@ -73,7 +73,14 @@ def _is_virtual(name: str) -> bool:
|
||||
|
||||
def _list_macos(ffmpeg: str) -> list[dict]:
|
||||
"""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:
|
||||
proc = subprocess.run(
|
||||
[ffmpeg, "-hide_banner", "-f", "avfoundation",
|
||||
@@ -105,7 +112,12 @@ def _list_macos(ffmpeg: str) -> list[dict]:
|
||||
if not m:
|
||||
continue
|
||||
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
|
||||
|
||||
|
||||
Reference in new issue
Block a user