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

C Discussion :

speex encodage audio


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 47
    Par défaut speex encodage audio
    bonjour a tous,
    voila j'essaye d'utiliser speex pour encoder un flux audio
    dans un premier temps j'essaye d'utiliser des exemple de code fourni dans la doc pour cerner le fonctionnement et j'ai un petit soucis

    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
    char *inFile;
    FILE *fin;
    FILE *out;
    short in[FRAME_SIZE];
    float input[FRAME_SIZE];
    printf("FRAME_SIZE: %i\n", FRAME_SIZE);
    char cbits[4096];
    int nbBytes;
    /*Holds the state of the encoder*/
    void *state;
    /*Holds bits so they can be read and written to by the Speex routines*/
    SpeexBits bits;
    int i, tmp;
     
     
    /*Create a new encoder state in narrowband mode*/
    state = speex_encoder_init(&speex_nb_mode);
     
    /*Set the quality to 8 (15 kbps)*/
    tmp=8;
    speex_encoder_ctl(state, SPEEX_SET_QUALITY, &tmp);
     
    inFile = "test.mp3";
    if ((fin = fopen(inFile, "r")) == NULL)
    {
    printf("Warning: Cannot open file!\n");
    system("pause");
    return 0;
    }
     
    if ((out = fopen("test.out", "w+")) == NULL)
    {
    printf("Warning: Cannot open file!\n");
    system("pause");
    return 0;
    }
     
    /*Initialization of the structure that holds the bits*/
    speex_bits_init(&bits);
    while (1)
    {
    /*Read a 16 bits/sample audio frame*/
    fread(in, sizeof(short), FRAME_SIZE, fin);
     
    if (feof(fin))
    break;
    /*Copy the 16 bits values to float so Speex can work on them*/
    for (i=0;i<FRAME_SIZE;i++)
    input[i]=in[i];
     
    /*Flush all the bits in the struct so we can encode a new frame*/
    speex_bits_reset(&bits);
     
    /*Encode the frame*/
    speex_encode(state, input, &bits);
    int toto = 0;
    while (toto < FRAME_SIZE)
    {
    	std::cout << input[toto] << " " << in[toto] << std::endl;
    toto++;
    }
    /*Copy the bits to an array of char that can be written*/
    nbBytes = speex_bits_write(&bits, cbits, FRAME_SIZE);
     
    /*Write the size of the frame first. This is what sampledec expects but
    it's likely to be different in your own application*/
    fwrite(&nbBytes, sizeof(int), 1, out);
    /*Write the compressed data*/
    std::cout << nbBytes << std::endl;
    fwrite(cbits, 1, nbBytes, out);
     
    }
    system("pause");
    /*Destroy the encoder state*/
    speex_encoder_destroy(state);
    /*Destroy the bit-packing struct*/
    speex_bits_destroy(&bits);
    fclose(fin);
    fclose(fout);
    le problème que j'ai est que le fichier générer fait 42 octet alors que le fichier source test.mp3 fait 3.6 mo
    le problème doit être flagrant mais pas moyen de le trouver, un peu d'aide ne serai pas de refus

    cordialement

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Hormis les flux, le reste du code est en C ainsi que l'interface de la bibliothèque. D'où le déplacement ici.

Discussions similaires

  1. Encodage et décodage Audio
    Par benkil dans le forum Multimédia
    Réponses: 0
    Dernier message: 30/11/2010, 21h48
  2. JMF RTP : probleme d'encodage audio-video
    Par meswatt dans le forum Multimédia
    Réponses: 0
    Dernier message: 29/09/2010, 14h31
  3. cherche module ou langage pour récupérer des données audio..
    Par Ry_Yo dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/05/2003, 17h44
  4. programmation audio !?
    Par martimacfly dans le forum DirectX
    Réponses: 1
    Dernier message: 09/03/2003, 12h55
  5. [VB6] fonction d' encodage URL en VB
    Par jeanseb dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/01/2003, 11h16

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