Bonjour,
Dans l'exemple simplifié ci dessous:
- Quelle sont les valeurs min et max possible ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 with av.open("audio_file.ogg", "r") as container: stream = container.streams.audio[0] frame = next(container.decode(stream)) array = frame.to_ndarray() # max et min ?
- Quels types sont possibles ?
La doc de cette fonction ne dit rien. Les seuls exemples trouvés sont des exemples de tests non quantitatifs. Je n'ai pas réussi à mettre la main sur le code source github.
D'après la doc, la fonction to_ndarray accepte des kwargs. Mais lesquels ?
J'ai lancé le code suivant affin de faire une estimation:
Voici le résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 import os import pathlib import pprint import av dtypes = {} for root, _, files in os.walk("/"): for file in files: suffix = pathlib.Path(file).suffix.lower() if suffix not in {".mp3", ".ogg", ".wav", ".wave", ".flac", ".aac", ".mp4", ".mkv", ".avi"}: continue try: with av.open(os.path.join(root, file), "r") as container: for stream in container.streams.audio: for frame in container.decode(stream): array = frame.to_ndarray() dtype = (array.dtype, suffix) if dtype not in dtypes: dtypes[dtype] = (0, 0) mini, maxi = array.min(), array.max() if mini < dtypes[dtype][0] or maxi > dtypes[dtype][1]: dtypes[dtype] = (min(dtypes[dtype][0], mini), max(dtypes[dtype][1], maxi)) except av.error.InvalidDataError: continue pprint.pprint(dtypes)
Si vous en savez plus, ça aidera sûrement du monde (et moi aussi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 {(dtype('int16'), '.wav'): (-32768, 32513), (dtype('float32'), '.mp3'): (-1.333013, 1.415781), (dtype('float32'), '.ogg'): (-0.7092452, 0.9921398), (dtype('int16'), '.mkv'): (-32768, 32767), (dtype('float32'), '.avi'): (-1.8093933, 1.8056028), (dtype('float32'), '.mkv'): (-1.6858864, 1.8667902), (dtype('float32'), '.mp4'): (-1.1447644, 1.1121304)})
Partager