IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

Enregistrement vidéo/son en mème temps [Python 3.X]


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Nouveau membre du Club Avatar de Jesarey
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    octobre 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : octobre 2015
    Messages : 17
    Points : 27
    Points
    27
    Par défaut Enregistrement vidéo/son en mème temps
    Bonsoir,

    J'ai un programme qui enregistre le son et la vidéo de mon PC et qui combine en une vidéo l'audio et la vidéo enregistrés.

    Dans mon code, l'enregistrement du son démarre peu après l'enregistrement de la vidéo. Je cherche à enregistrer le son et la vidéo exactement en mème temps. Quels conseils à me donner ?

    J'utilise pyaudio et wave pour la partie audio, screen_recorder_sdk pour la partie vidéo.

    Mon code :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    # pip install pyaudio wave moviepy screen_recorder_sdk
     
    # AUDIO
    import pyaudio
    import wave
     
    # VIDEO
    from screen_recorder_sdk import screen_recorder
     
     
    # AUDIO
    # the file name output you want to record into
    filename = "audio.wav"
    # set the chunk size of 1024 samples
    chunk = 1024
    # sample format
    FORMAT = pyaudio.paInt16
    # mono, change to 2 if you want stereo
    channels = 2
    # 44100 samples per second
    sample_rate = 44100
     
    # initialize PyAudio object
    p = pyaudio.PyAudio()
     
    # Avoir la liste des périphériques audio
    for i in range(0, p.get_device_count()):
       print(i, p.get_device_info_by_index(i)['name'])
     
    # Sélectionner "3 Mixage stéréo (Realtek(R) Audio" pour avoir le son sortant
    device_index = int(input('Device index: '))
     
    # open stream object as input & output
    stream = p.open(format=FORMAT,
                    channels=channels,
                    rate=sample_rate,
                    input=True,
                    output=True,
                    frames_per_buffer=chunk,
                    input_device_index = device_index)
     
    frames = []
    print("Recording...")
     
    recording = True
     
     
    # VIDEO
    params = screen_recorder.RecorderParams ()
    screen_recorder.init_resources (params)
    screen_recorder.start_video_recording ('video.mp4', 30, 8000000, True)
     
    # AUDIO
    while(recording == True):
        try:
            data = stream.read(chunk)
            # if you want to hear your voice while recording
            stream.write(data)
            frames.append(data)
        except KeyboardInterrupt:
            print("Ctrl + c")
            break
        except:
            break #generic error processing
     
     
    # stop and close stream
    stream.stop_stream()
    stream.close()
    # terminate pyaudio object
    p.terminate()
     
     
    #VIDEO
    screen_recorder.stop_video_recording ()
    screen_recorder.free_resources ()
     
    print("Finished recording.")
     
    # save audio file
    # open the file in 'write bytes' mode
    wf = wave.open(filename, "wb")
    # set the channels
    wf.setnchannels(channels)
    # set the sample format
    wf.setsampwidth(p.get_sample_size(FORMAT))
    # set the sample rate
    wf.setframerate(sample_rate)
    # write the frames as bytes
    wf.writeframes(b"".join(frames))
    # close the file
    wf.close()
     
     
     
    # Pour combiner l'audio et la vidéo dans une vidéo
    def combine_audio(vidname, audname, outname, fps=30): 
        import moviepy.editor as mpe
        my_clip = mpe.VideoFileClip(vidname)
        audio_background = mpe.AudioFileClip(audname)
        final_clip = my_clip.set_audio(audio_background)
        final_clip.write_videofile(outname,fps=fps)
     
     
    combine_audio("video.mp4", "audio.wav", "ma_video.mp4")
    Merci beaucoup !

    Clément

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    20 780
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 20 780
    Points : 35 872
    Points
    35 872
    Par défaut
    Salut,

    C'est compliqué le "en même temps" surtout lorsqu'on a 2 fils d'évènements à réunir: il serait plus raisonnable d'avoir des threads côté capture.... Et des bibliothèques qui soient adaptées.
    Tout çà pour dire que si vous ne regardez pas ce qui a déjà été fait pour vous en inspirer, la courbe d'apprentissage risque d'être longue.

    Jetez un oeil a cet article de SOW

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau membre du Club Avatar de Jesarey
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    octobre 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : octobre 2015
    Messages : 17
    Points : 27
    Points
    27
    Par défaut
    Hello,

    Je ne me suis pas assez bien exprimé, je cherche en fait à enregistrer ce qui se passe sur mon écran et non ma webcam.

    Cela dit, je pense que le principe est le mème qu'avec une webcam (dans le sens où il faut utiliser des threads pour capturer le son et la vidéo en mème temps)

    Je vais voir un peu comment utiliser ces threads.

    Merci !

  4. #4
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    décembre 2008
    Messages
    3 651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2008
    Messages : 3 651
    Points : 8 703
    Points
    8 703
    Par défaut
    hello,
    si le but est d'enregistrer ce qui se passe sur l'écran du PC, pourquoi ne pas utiliser un logiciel opensource comme OBS studio :
    OBS Studio est un logiciel populaire d’enregistrement vidéo et de streaming. Il s’adresse principalement à ceux qui souhaitent réaliser des vidéos de présentation, des tutoriels ou diffuser un flux vidéo en direct. C’est l’outil idéal pour diffuser en direct sur les plateformes Twitch, YouTube Gaming ou DailyMotion.

    L’interface utilisateur est claire, intuitive et permet de gérer le flux vidéo à diffuser avec une grande simplicité. Les contenus qui composent la vidéo peuvent être de plusieurs types et provenir de plusieurs sources. On peut utiliser des images, de l’audio et de la vidéo à partir d’un fichier ou d’un périphérique tel qu’une webcam ou un microphone. L’application offre aussi la possibilité de capturer une partie de votre écran. Tous ces éléments peuvent être arrangés librement dans une scène. Plusieurs scènes peuvent être créées et on peut passer de l’une à l’autre à n’importe quel moment.


    Enfin, OBS Studio est doté d’options de paramétrage pour définir la qualité du flux vidéo. Il prend en charge les formats H264 et AAC et supporte l’enregistrement en haute définition avec une fréquence de rafraîchissement élevée.
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  5. #5
    Nouveau membre du Club Avatar de Jesarey
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    octobre 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : octobre 2015
    Messages : 17
    Points : 27
    Points
    27
    Par défaut Très bon logiciel OBS
    Hello JP,

    Merci de m'avoir fait découvrir ce logiciel. Je l'ai testé aujourd'hui et je dois avouer qu'il envoie du lourd.

    Pour le coup, la courbe d'apprentissage est vraiment basse ^^

    Je me sens maintenant un peu bête, j'ai terminé mon programme (bon, sans les threads mais avec de beaux boutons tkinter) et j'ai finalement mieux sous la main.

    Avec ces indications, je pars du principe de la résolution de cette discussion.

    Thx

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Jouer plusieurs sons en même temps
    Par Irydion dans le forum FMOD
    Réponses: 0
    Dernier message: 18/11/2008, 19h54
  2. Réponses: 1
    Dernier message: 03/10/2008, 09h57
  3. [FMOD] Gérer plusieurs sons en même temps
    Par alex6891 dans le forum FMOD
    Réponses: 11
    Dernier message: 21/07/2008, 02h00
  4. [VB6] Lire deux sons en même temps
    Par daladim dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 17/12/2006, 20h29
  5. Lancer deux sons en même temps...
    Par Julien_riquelme dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 03/05/2003, 17h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo