SFML - Mettre en pause un enregistrement audio
Résolu
MemeTech
Messages postés
90
Statut
Membre
-
MemeTech Messages postés 90 Statut Membre -
MemeTech Messages postés 90 Statut Membre -
Bonjour !
Tout est dans le titre, je souhaite proposer à l'utilisateur de mon enregistreur audio de mettre en pause l'enregistrement et de le reprendre quand il le souhaite.
La doc ne semble pas proposer de fonction pause () à la classe sf::SoundBufferRecorder, peut être il y a-t-il une autre solution ?
Merci d'avance !
Tout est dans le titre, je souhaite proposer à l'utilisateur de mon enregistreur audio de mettre en pause l'enregistrement et de le reprendre quand il le souhaite.
La doc ne semble pas proposer de fonction pause () à la classe sf::SoundBufferRecorder, peut être il y a-t-il une autre solution ?
Merci d'avance !
A voir également:
- SFML - Mettre en pause un enregistrement audio
- Musique audio - Télécharger - Lecture & Playlists
- Comment couper un enregistrement audio - Guide
- Realtek audio driver - Télécharger - Pilotes & Matériel
- Transcription audio en texte word gratuit - Guide
- Extraire audio mp4 - Guide
4 réponses
'lut,
la pause n'est pas souvent une fonctionnalité dispo sur les APIs d'enregistrement, donc rien d'exceptionnel de la part de la SFML.
Une solution (parmi d'autres) consiste à arrêter l'enregistrement (
Sinon j'ai rapidement regardé le code des classes d'enregistrement de la SFML et, bien que pas testé, il me semble que l'on peut faire start/stop plusieurs fois sur un même
la pause n'est pas souvent une fonctionnalité dispo sur les APIs d'enregistrement, donc rien d'exceptionnel de la part de la SFML.
Une solution (parmi d'autres) consiste à arrêter l'enregistrement (
stop()) quand on veut mettre en pause, et garder les buffers résultat quelque part (mémoire, disque, ...) tant qu'on arrête pas complètement l'enregistrement. Quand on a fini, on prend les buffers et les combine (en sortant les données des buffers avec
SoundBuffer::getSamples, les copiant dans un conteneur tel que
std::vector<Int16>, et les rechargeant avec
SoundBuffer::loadFromSamples).
Sinon j'ai rapidement regardé le code des classes d'enregistrement de la SFML et, bien que pas testé, il me semble que l'on peut faire start/stop plusieurs fois sur un même
SoundBufferRecorder, permettant de mettre en pause. Ce n'est documenté nulle part, ceci dit, donc à vérifier.
Merci pour m'avoir aidé si vite !
Pour mettre en pause avec start () / stop (), j ai déjà essayé, ça ne fonctionne pas.
En revanche, j'imagine que les std::vector doivent fonctionner, mais je ne sais pas comment faire, je ne connais pas le fonctionnement de ces échantillons audio.
Pourriez-vous m'éclairer à ce sujet ?
Pour mettre en pause avec start () / stop (), j ai déjà essayé, ça ne fonctionne pas.
En revanche, j'imagine que les std::vector doivent fonctionner, mais je ne sais pas comment faire, je ne connais pas le fonctionnement de ces échantillons audio.
Pourriez-vous m'éclairer à ce sujet ?
Up !
Voilà plusieurs jours que je galère avec ces tableaux de samples et je commence à sécher...
J'ai fait une fonction pause () appelée quand l'utilisateur veut suspendre son enregistrement qui ajoute au un tableau d'échantillons l'enregistrement juste arrêté.
Souci, Code::Blocks me dit :
error: invalid conversion from 'const Int16*' {aka 'const short int*'} to 'sf::Int16*' {aka 'short int*'} [-fpermissive]|
Voilà un petit extrait de mon code :
Merci pour votre aide !
Voilà plusieurs jours que je galère avec ces tableaux de samples et je commence à sécher...
J'ai fait une fonction pause () appelée quand l'utilisateur veut suspendre son enregistrement qui ajoute au un tableau d'échantillons l'enregistrement juste arrêté.
Souci, Code::Blocks me dit :
error: invalid conversion from 'const Int16*' {aka 'const short int*'} to 'sf::Int16*' {aka 'short int*'} [-fpermissive]|
Voilà un petit extrait de mon code :
void MRecorder::pause () { sBackground.setTexture (tPaused); // Change l'image de fond de l'appli recorder.stop (); // Arrête l'enregistreur (logique... :-D) Int16* nextRecording = recorder.getBuffer ().getSamples (); // Initialise le buffer unsigned long int const MAX_INDEX = recorder.getBuffer ().getSampleCount (); // Le nombre de samples dans le dernier enregistrement for (unsigned int i = 0 ; i != MAX_INDEX ; i++) // Boucle qui ajoute à recording le dernier enregistrement recording.push_back (nextRecording[i]); }
Merci pour votre aide !