[FFmpeg-user] I can't get the ffmpeg to work with sound at all.

Peadar Ó'Colmáin peadar.e.ocolmain at gmail.com
Tue Dec 5 12:43:05 EET 2017


I can't seem to make any headway with ffmpeg and sound.

I've been at it for quite some time now and I have downloaded half the 
internet looking for a working example.

I am using a downloaded program falled 'fister' which is probably quite 
well known.

I have put code into it so that it will read the file, then compress and 
decompress the sound and play it.

I should be getting my own voice back but I get nothing.

Here is the code.

I can send the whole fister project if anyone could like to have a look 
at it.

Again, thanks in advance for any help received.

Peadar


void CPipe::ReadSoundDataFromFile(CBuffer* buffer)
{
     char ErrLine[501];

     int j,k,ret, got_output, len2, cnt;
     uint8_t *       out[]   = { audio_buf };

     if(m_pFile)
     {
         if(!m_pFile->Read(buffer))
         {
             OnEndOfPlayingFile();
             delete m_pFile;
         }
     }

     ChineseFrameBuff = (uint8_t *)buffer->ptr.c;

     av_init_packet(&ChinesePacket);
     ChinesePacket.data = NULL;
     ChinesePacket.size = 0;

     ret = avcodec_encode_audio2(ChineseCodecCtx, &ChinesePacket, 
ChineseFrame, &got_output);
     if (ret < 0)
     {
         sprintf(ErrLine, "Error encoding audio frame");
         AfxMessageBox(ErrLine);
         exit(1);
     }

     if (got_output)
     {
         int got_frame=0;
     //    avcodec_get_frame_defaults(Mp3Frame);    // doesn't seem to 
do aything

         int len = avcodec_decode_audio4(Mp3CodecContext, Mp3Frame, 
&got_frame, &ChinesePacket);

         if (len < 0 || got_frame == 0)
         {
             sprintf(ErrLine, "Error while decoding");
             AfxMessageBox(ErrLine);
             exit(1);
         }
         if(m_pSwrCtx == NULL)
         {
             m_pSwrCtx = swr_alloc_set_opts(NULL
                             , AV_CH_LAYOUT_STEREO
                             , AV_SAMPLE_FMT_S16
                             , Mp3CodecContext->sample_rate
                             , 
av_get_default_channel_layout(Mp3Frame->channels)
                             , (AVSampleFormat)Mp3Frame->format
                             , Mp3Frame->sample_rate
                             , 0
                             , NULL
                             );
             swr_init(m_pSwrCtx);
         }

         len2 = swr_convert(m_pSwrCtx
                             , out
                             , AVCODEC_MAX_AUDIO_FRAME_SIZE * 4
                             , (const uint8_t **)Mp3Frame->extended_data
                             , Mp3Frame->nb_samples
                             );

         // make sure the buffer is cleared out.

         for(int count=0; count<2000; count++)
         {
             buffer->ptr.c[count] = '*';
         }

         strcpy(buffer->ptr.c,  (char *)audio_buf);
     }
}






---
This email has been checked for viruses by AVG.
http://www.avg.com



More information about the ffmpeg-user mailing list