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 :

Convertir un fichier binaire


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    février 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : février 2023
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Convertir un fichier binaire
    Bonjour
    J'ai actuellement un problème je développe un script qui converti un fichier un mp4 par exemple en fichier binaire puis en vidéo rgb cependant quand je passe à la phase de récupération du fichier d'origine (binaire vers le format d'origine la fin du fichier est incomplet et seulement quelques secondes fonctionne (pour le fichier de sorti)

    Je ne comprend pas ou est mon erreur j'aimerais que le fichier ne soit pas corrompu

    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
    def decode(invideo_path, outfile_path):
        i = 0
        step = 20
        chunk_size = 1_000_000
        chunk = []
        cap = cv2.VideoCapture(invideo_path)
        ret, frame = cap.read()
        while ret:
            frame_shape = np.shape(frame)
            for j in range(0, frame_shape[0], step):
                for k in range(0, frame_shape[1], step):
                    piece = frame[j:j+step, k:k+step].reshape(step*step, 3)
                    rounded = normal(piece.mean(0)).round().astype(np.uint8)
                    chunk.append(rounded)
                    if len(chunk) >= chunk_size:
                        data_bits = np.array(chunk).reshape(len(chunk) * 3, 1)
                        data_bytes = np.packbits(data_bits)
                        len_of_data = int.from_bytes(data_bytes[:4], byteorder='big')
                        data_bytes_retrieved = data_bytes[4:len_of_data]
                        with open(outfile_path, 'ab') as f:
                            f.write(data_bytes_retrieved)
                        chunk = []
            ret, frame = cap.read()
            i += 1
        cap.release()
        if chunk:
            data_bits = np.array(chunk).reshape(len(chunk) * 3, 1)
            data_bytes = np.packbits(data_bits)
            len_of_data = int.from_bytes(data_bytes[:4], byteorder='big')
            data_bytes_retrieved = data_bytes[4:len_of_data]
            with open(outfile_path, 'ab') as f:
                f.write(data_bytes_retrieved)
    Si quelqu'un aurais une idée pourquoi la fin du fichier fini corrompu...

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    20 770
    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 770
    Points : 35 851
    Points
    35 851
    Par défaut
    Citation Envoyé par Canterpython Voir le message
    Je ne comprend pas ou est mon erreur j'aimerais que le fichier ne soit pas corrompu
    Pour comprendre où est l'erreur, il faut déjà reproduire le problème.

    Partant de la fonction que vous avez posté, ça fait quand même pas mal de boulot... d'autant que vous ne fournissez même pas les informations permettant de fabriquer un environnement d'exécution. D'autant qu'arrivé là, trouver quoi regarder pour trouver la cause du soucis, consiste à mettre au point un code difficile à lire car on ne l'a pas écrit...

    Et tout çà n'est que le boulot de base du programmeur qu'on a intérêt d'avoir appris/intégré avant de se lancer à écrire du code... et que l'on sait suffisamment difficile pour éviter de coder chaque fois qu'on trouvera une bibliothèque qui...

    Ici, par exemple, pourquoi ne pas utiliser ffmpeg?

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

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    février 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : février 2023
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Pour comprendre où est l'erreur, il faut déjà reproduire le problème.

    Partant de la fonction que vous avez posté, ça fait quand même pas mal de boulot... d'autant que vous ne fournissez même pas les informations permettant de fabriquer un environnement d'exécution. D'autant qu'arrivé là, trouver quoi regarder pour trouver la cause du soucis, consiste à mettre au point un code difficile à lire car on ne l'a pas écrit...

    Et tout çà n'est que le boulot de base du programmeur qu'on a intérêt d'avoir appris/intégré avant de se lancer à écrire du code... et que l'on sait suffisamment difficile pour éviter de coder chaque fois qu'on trouvera une bibliothèque qui...

    Ici, par exemple, pourquoi ne pas utiliser ffmpeg?

    - W
    L'usage de ffmpeg est prévu il s'agit d'un script ancien script github où j'ai modifié la fonction de décodage pour prendre en compte les chunk l'auteur d'origine utilise opencv pour l'encodage et le decodage

    https://github.com/lewangdev/youtube-drive
    L'erreur est reproduisible avec un fichier video mp4

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    20 770
    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 770
    Points : 35 851
    Points
    35 851
    Par défaut
    Citation Envoyé par Canterpython Voir le message
    L'usage de ffmpeg est prévu il s'agit d'un script ancien script github où j'ai modifié la fonction de décodage pour prendre en compte les chunk
    Si le code original fonctionne vous aurez déjà une piste: les modifications que vous avez fait.

    Pour le reste, c'est de la mise au point et du temps à passer à... faire des hypothèses sur ce que le code devrait faire et vérifier qu'il le fait effectivement: boulot de base d'un programmeur qui n'a rien à voir avec Python.

    Si quelqu'un a envie de s'y coller, il se manifestera un jour... et il vous suffit de patienter. De mon côté, j'ai déjà ma pile de problème à résoudre et mes excursions ici, c'est juste 5 mns de pause et pas récupérer du boulot en plus.

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

Discussions similaires

  1. Convertir un fichier texte en fichier binaire
    Par guicecal dans le forum Bibliothèque standard
    Réponses: 5
    Dernier message: 04/09/2009, 11h16
  2. Réponses: 17
    Dernier message: 31/03/2009, 15h52
  3. Fonction pour convertir un fichier IDX en binaire ?
    Par Marie.B dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 17/12/2008, 14h08
  4. Convertir un fichier en binaire
    Par Yann39 dans le forum Langage
    Réponses: 6
    Dernier message: 16/11/2008, 17h43
  5. convertir un fichier binaire en ascii
    Par M_JOU79 dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 11/06/2007, 23h48

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