<div>
                    Hi there,
                </div><div>I'm a newbie to libav and now having trouble encoding & mux a sound sample array to m4a file. The process done without any problem, but output file is not hearable and the size is very small, e.g. I have around 88000 sound samples but output file size is only around 1.8KB.</div><div>My code below is mostly base on decoding_encoding.c & muxing.c samples from ffmpeg, but no pts, dts parts are set as I donot understand how to set them for audio encoding yet. Maybe problem comes from that?</div><div>Please help.</div><div><br></div><div>~~~~~</div><div><div><div>avcodec_register_all();</div><div>av_register_all();</div><div><br></div><div>codec = avcodec_find_encoder(CODEC_ID_AAC);</div><div>c = avcodec_alloc_context3(codec);</div><div>c->bit_rate = 64000;</div><div>c->sample_fmt = AV_SAMPLE_FMT_FLTP;</div><div>c->sample_rate = rate;</div><div>c->channel_layout = AV_CH_LAYOUT_MONO;</div><div>c->channels = 1;</div><div>c->strict_std_compliance = FF_COMPLIANCE_EXPERIMENTAL;</div><div><br></div><div>// Open it</div><div>avcodec_open2(c, codec, NULL) < 0);</div><div><br></div><div>frame = avcodec_alloc_frame();</div><div>frame->nb_samples     = c->frame_size;</div><div>frame->format         = c->sample_fmt;</div><div>frame->channel_layout = c->channel_layout;</div><div><br></div><div>buffer_size = av_samples_get_buffer_size(NULL, c->channels, c->frame_size,</div><div>                                         c->sample_fmt, 0);</div><div>samples = (uint16_t *)av_malloc(buffer_size);</div><div><br></div><div>// setup the data pointers in the AVFrame</div><div>avcodec_fill_audio_frame(frame, c->channels, c->sample_fmt,</div><div>                               (const uint8_t*)samples, buffer_size, 0);</div><div><br></div><div><br></div><div>// allocate the output media context</div><div>avformat_alloc_output_context2(&oc, NULL, NULL, filename);</div><div>ofmt = oc->oformat;</div><div>audio_st = avformat_new_stream(oc, NULL);</div><div>audio_st->codec = c;</div><div>if (oc->oformat->flags & AVFMT_GLOBALHEADER)</div><div>    c->flags |= CODEC_FLAG_GLOBAL_HEADER;</div><div><br></div><div>// open the output file</div><div>if (!(ofmt->flags & AVFMT_NOFILE)) {</div><div>    avio_open(&oc->pb, filename, AVIO_FLAG_WRITE);</div><div>}</div><div>ret = avformat_write_header(oc, NULL);</div><div><br></div><div>// captureBuffer is a sound buffer captured with parameters: mono, 16bit/sample, sample rate = 22050</div><div>captureBufPtr = captureBuffer;</div><div>samplesLeft = samplesCaptured;</div><div>samplesToCopy = 0;</div><div>if (frame) {</div><div>    frame->pts = 0;</div><div>}</div><div>// Encoding loop</div><div>for (;samplesLeft > 0;) {</div><div>    av_init_packet(&pkt);</div><div>    pkt.data = NULL; // packet data will be allocated by the encoder</div><div>    pkt.size = 0;</div><div><br></div><div>    samplesToCopy = samplesLeft >= frame->nb_samples? frame->nb_samples : samplesLeft;</div><div>    memcpy(samples, captureBufPtr, samplesToCopy * 2);</div><div>    captureBufPtr += samplesToCopy * 2;</div><div>    samplesLeft -= samplesToCopy;</div><div><br></div><div>    ret = avcodec_encode_audio2(c, &pkt, frame, &got_output);</div><div>    ret = av_interleaved_write_frame(oc, &pkt);</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>av_free_packet(&pkt);</div><div><span class="Apple-tab-span" style="white-space:pre">    </span></div><div>}</div><div><br></div><div>// Get delayed frame</div><div>for (got_output = 1; got_output;) {</div><div>    ret = avcodec_encode_audio2(c, &pkt, NULL, &got_output);</div><div>    if (got_output) {</div><div>    <span class="Apple-tab-span" style="white-space:pre">      </span>ret = av_interleaved_write_frame(oc, &pkt);</div><div><span class="Apple-tab-span" style="white-space:pre">              </span>av_free_packet(&pkt);</div><div>    }</div><div>}</div><div><br></div><div>if (oc) {</div><div><span class="Apple-tab-span" style="white-space:pre">     </span>av_write_trailer(oc);</div><div>}</div></div></div><div>~~~~~</div><div><br></div><div><div><br></div></div>