<div dir="rtl"><div dir="ltr">you right (I tried to make it simpler) this is the code:<br><br>#include "libavformat/avformat.h"<br>#include <libavcodec/avcodec.h><br>#include <libavutil/avutil.h><br>#include <libavutil/rational.h><br>#include <libavutil/samplefmt.h><br>#include "libswresample/swresample.h"<br><br>#include <stdio.h><br>#include <assert.h><br><br>#define AVCODEC_MAX_AUDIO_FRAME_SIZE 19200<br><br>void die(const char *msg)<br>{<br> fprintf(stderr,"%s\n",msg);<br> exit(1);<br>}<br><br>int main(int argc, char** argv)<br>{<br> <br> av_register_all();<br> avformat_network_init();<br> <br> <br> const char* input_filename=argv[1];<br> <br> AVFormatContext* container=avformat_alloc_context();<br> if(avformat_open_input(&container,input_filename,NULL,NULL)<0)<br> die("Could not open file");<br> <br> if(avformat_find_stream_info(container,NULL)<0)<br> die("Could not find file info");<br> <br> <br> av_dump_format(container,0,input_filename,0);<br><br> <br> int stream_id=-1;<br> int i;<br> for(i=0;i<container->nb_streams;i++)<br> {<br> if(container->streams[i]->codec->codec_type==AVMEDIA_TYPE_AUDIO)<br> {<br> stream_id=i;//audio stream index<br> break;<br> }<br> }<br> if(stream_id==-1){<br> die("Could not find Audio Stream");<br> }<br><br> AVDictionary *metadata=container->metadata;<br><br> AVCodecContext *ctx=container->streams[stream_id]->codec;<br> AVCodec *codec=avcodec_find_decoder(ctx->codec_id);<br> <br> ctx=avcodec_alloc_context3(codec);<br> <br> if(codec==NULL){<br> die("cannot find codec!");<br> }<br><br> <br> if(avcodec_open2(ctx,codec, NULL)<0){<br> die("Codec cannot be found");<br> }<br> <br> int bits;<br> enum AVSampleFormat sfmt=ctx->sample_fmt;<br><br> if(sfmt==AV_SAMPLE_FMT_U8){<br> printf("U8\n");<br><br> bits=8;<br> }else if(sfmt==AV_SAMPLE_FMT_S16){<br> printf("S16\n");<br> bits=16;<br> }else if(sfmt==AV_SAMPLE_FMT_S32){<br> printf("S32\n");<br> bits=32;<br> }<br> else if(sfmt==AV_SAMPLE_FMT_FLTP){<br> bits=32;<br> }<br> <br> printf("\nBits: %d, Channels:%d\nRate: %d\n",bits, ctx->channels, ctx->sample_rate );<br> <br> <br> // prepare to read data<br> AVPacket packet;<br> av_init_packet(&packet);<br><br> AVFrame *frame=av_frame_alloc();<br> if (!frame)<br> {<br> fprintf(stderr, "Error allocating the frame\n");<br> return -1;<br> }<br> <br> int buffer_size=AVCODEC_MAX_AUDIO_FRAME_SIZE+ FF_INPUT_BUFFER_PADDING_SIZE;<br> <br> uint8_t buffer[buffer_size];<br> packet.data=buffer;<br> packet.size =buffer_size;<br> packet.pos = 0; //add from <a href="https://lists.ffmpeg.org/pipermail/ffmpeg-user/2013-August/017040.html">https://lists.ffmpeg.org/pipermail/ffmpeg-user/2013-August/017040.html</a><br> <br> int len;<br> int frameFinished=0;<br> i = 0;<br> <br> while(av_read_frame(container,&packet)>=0)<br> {<br><br> if(packet.stream_index==stream_id){<br> //printf("Audio Frame read \n");<br> int len=avcodec_decode_audio4(ctx,frame,&frameFinished,&packet);<br> //frame-><br> if(frameFinished){<br> printf("Finished reading Frame len : %d , nb_samples:%d buffer_size:%d line size: %d \n",len,frame->nb_samples,buffer_size,frame->linesize[0]);<br> <br> if (i == 0)<br> {<br> printf("play\n");<br> i++;<br> }<br> }else<br> {<br> printf("Not Finished\n");<br> }<br><br> }else {<br> printf("Some other packet possibly Video\n");<br> }<br><br><br> }<br><br> avformat_close_input(&container);<br> return 0;<br>}<br></div></div><div class="gmail_extra"><br><div class="gmail_quote"><div dir="ltr">2017-04-04 13:35 GMT+03:00 Carl Eugen Hoyos <span dir="ltr"><<a href="mailto:ceffmpeg@gmail.com" target="_blank">ceffmpeg@gmail.com</a>></span>:</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">2017-04-04 12:15 GMT+02:00 יוסף אלון <<a href="mailto:yos104104@gmail.com">yos104104@gmail.com</a>>:<br>
><br>
> I am reading a udp data and recieve:<br>
><br>
> Input #0, mpegts, from 'udp://<a href="http://224.10.0.15:1234" rel="noreferrer" target="_blank">224.10.0.15:1234</a>':<br>
> Duration: N/A, start: 66502.042356, bitrate: N/A<br>
> Program 29<br>
> Metadata:<br>
> service_name : Galatz<br>
> service_provider: Idan +<br>
> Stream #0:0[0xb81]: Audio: aac_latm (HE-AAC) ([17][0][0][0] / 0x0011),<br>
> 48000 Hz, stereo, fltp<br>
><br>
> But when I print the codec context I receive the following data:<br>
> Bits: 8, Channels:2048<br>
> sample_rate: 8.<br>
<br>
</span>The code you posted looks different from this output.<br>
<br>
Carl Eugen<br>
______________________________<wbr>_________________<br>
Libav-user mailing list<br>
<a href="mailto:Libav-user@ffmpeg.org">Libav-user@ffmpeg.org</a><br>
<a href="http://ffmpeg.org/mailman/listinfo/libav-user" rel="noreferrer" target="_blank">http://ffmpeg.org/mailman/<wbr>listinfo/libav-user</a><br>
</blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="rtl"><div style="TEXT-ALIGN:center">בברכה, יוסף אלון</div>
<div style="TEXT-ALIGN:center">050-4916740</div></div></div>
</div>