Recherche avancée

Médias (1)

Mot : - Tags -/embed

Autres articles (42)

  • Récupération d’informations sur le site maître à l’installation d’une instance

    26 novembre 2010, par

    Utilité
    Sur le site principal, une instance de mutualisation est définie par plusieurs choses : Les données dans la table spip_mutus ; Son logo ; Son auteur principal (id_admin dans la table spip_mutus correspondant à un id_auteur de la table spip_auteurs)qui sera le seul à pouvoir créer définitivement l’instance de mutualisation ;
    Il peut donc être tout à fait judicieux de vouloir récupérer certaines de ces informations afin de compléter l’installation d’une instance pour, par exemple : récupérer le (...)

  • Pas question de marché, de cloud etc...

    10 avril 2011

    Le vocabulaire utilisé sur ce site essaie d’éviter toute référence à la mode qui fleurit allègrement
    sur le web 2.0 et dans les entreprises qui en vivent.
    Vous êtes donc invité à bannir l’utilisation des termes "Brand", "Cloud", "Marché" etc...
    Notre motivation est avant tout de créer un outil simple, accessible à pour tout le monde, favorisant
    le partage de créations sur Internet et permettant aux auteurs de garder une autonomie optimale.
    Aucun "contrat Gold ou Premium" n’est donc prévu, aucun (...)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

Sur d’autres sites (4898)

  • PLAYBACK AUDIO USING FFMPEG in C [on hold]

    4 avril 2019, par GOBI
    I have some Errors in the Below code. what can I do to run this code?

    #include
    #include
    #include
    #include
    #include <sys></sys>types.h>

    #include
    #include <alsa></alsa>asoundlib.h>

    #include <libavutil></libavutil>opt.h>
    #include <libavutil></libavutil>mem.h>
    #include <libavcodec></libavcodec>avcodec.h>  
    #include <libavformat></libavformat>avformat.h>
    #include <libavutil></libavutil>samplefmt.h>
    #include <libswresample></libswresample>swresample.h>

    #define INBUF_SIZE          4096
    #define AUDIO_INBUF_SIZE    20480
    #define AUDIO_REFILL_THRESH 4096
    #define FF_INPUT_BUFFER_PADDING_SIZE 4096


    void audio_decode_file(const char *outfilename, const char *filename)
    {
       AVCodec *codec;
       AVCodecContext *c= NULL;
       int len;
       FILE *f, *outfile;
       uint8_t inbuf[AUDIO_INBUF_SIZE + FF_INPUT_BUFFER_PADDING_SIZE];
       AVPacket avpkt;
       AVFrame *decoded_frame = NULL;

       av_init_packet(&amp;avpkt);

       printf("Decode audio file %s to %s\n", filename, outfilename);

       /* find the mpeg audio decoder */
       codec = avcodec_find_decoder(AV_CODEC_ID_MP3);
       if (!codec) {
           printf("Codec not found\n");
           exit(1);
       }

       c = avcodec_alloc_context3(codec);
       if (!c) {
           printf("Could not allocate audio codec context\n");
           exit(1);
       }

       /* open it */
       if (avcodec_open2(c, codec, NULL) &lt; 0) {
           printf("Could not open codec\n");
           exit(1);
       }

       f = fopen(filename, "rb");
       if (!f) {
           printf("Could not open %s\n", filename);
           exit(1);
       }
       outfile = fopen(outfilename, "wb");
       if (!outfile) {
           av_free(c);
           exit(1);
       }

       /* decode until eof */
       avpkt.data = inbuf;
       avpkt.size = fread(inbuf, 1, AUDIO_INBUF_SIZE, f);

       while (avpkt.size > 0) {
           int got_frame = 0;

           if (!decoded_frame) {
               if (!(decoded_frame = av_frame_alloc())) {
                   printf("Could not allocate audio frame\n");
                   exit(1);
               }
           }

           len = avcodec_decode_audio4(c, decoded_frame, &amp;got_frame, &amp;avpkt);
           if (len &lt; 0) {
               printf("Error while decoding\n");
               exit(1);
           }
           if (got_frame) {
               /* if a frame has been decoded, output it */
               int data_size = av_samples_get_buffer_size(NULL, c->channels,
                                                          decoded_frame->nb_samples,
                                                          c->sample_fmt, 1);
               if (data_size &lt; 0) {
                   /* This should not occur, checking just for paranoia */
                   printf("Failed to calculate data size\n");
                   exit(1);
               }
               fwrite(decoded_frame->data[0], 1, data_size, outfile);
           }
           avpkt.size -= len;
           avpkt.data += len;
           avpkt.dts =
           avpkt.pts = AV_NOPTS_VALUE;
           if (avpkt.size &lt; AUDIO_REFILL_THRESH) {
               /* Refill the input buffer, to avoid trying to decode
                * incomplete frames. Instead of this, one could also use
                * a parser, or use a proper container format through
                * libavformat. */
               memmove(inbuf, avpkt.data, avpkt.size);
               avpkt.data = inbuf;
               len = fread(avpkt.data + avpkt.size, 1,
                           AUDIO_INBUF_SIZE - avpkt.size, f);
               if (len > 0)
                   avpkt.size += len;
           }
       }

       fclose(outfile);
       fclose(f);

       avcodec_close(c);
       av_free(c);
       av_frame_free(&amp;decoded_frame);
    }

    int snd_ctl_set_volume(int val)
    {
       int err;  
       int orig_volume = 0;
       //unsigned int count;
       static snd_ctl_t *handle = NULL;  
       snd_ctl_elem_info_t *info;  
       snd_ctl_elem_id_t *id;  
       snd_ctl_elem_value_t *control;  
       //snd_ctl_elem_type_t type;

       snd_ctl_elem_info_alloca(&amp;info);  
       snd_ctl_elem_id_alloca(&amp;id);  
       snd_ctl_elem_value_alloca(&amp;control);    

       snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_MIXER);
       snd_ctl_elem_id_set_name(id, "Headphone Playback Volume");
       // snd_ctl_elem_id_set_name(id, "PCM Playback Volume");
       // snd_ctl_elem_id_set_index(id, 1);  // "Mic Capture Volume" does not have index.  

       if ((err = snd_ctl_open(&amp;handle, "default", 0)) &lt; 0) {
           printf("Control open error: %s\n", snd_strerror(err));
           return -1;
       }  

       snd_ctl_elem_info_set_id(info, id);  
       if ((err = snd_ctl_elem_info(handle, info)) &lt; 0) {  
           printf("Cannot find the given element from control: %s\n", snd_strerror(err));  
           snd_ctl_close(handle);
           return -1;
       }

       //type = snd_ctl_elem_info_get_type(info);  
       //count = snd_ctl_elem_info_get_count(info);

       snd_ctl_elem_value_set_id(control, id);  

       if (!snd_ctl_elem_read(handle, control)) {  
           orig_volume = snd_ctl_elem_value_get_integer(control, 0);
       }

       if(val != orig_volume) {  
           printf("new_value(%d) orgin_value(%d)\n", val, orig_volume);
           snd_ctl_elem_value_set_integer(control, 0, (long)(val));
           snd_ctl_elem_value_set_integer(control, 1, (long)(val));

           if ((err = snd_ctl_elem_write(handle, control)) &lt; 0) {  
               printf("Control element write error: %s\n", snd_strerror(err));  
               snd_ctl_close(handle);  
               return -1;
           }
       }  
       snd_ctl_close(handle);  
       return 0;
    }

    snd_pcm_t *pcm_init(int bitrate)
    {
       int res;
       unsigned int val;

       snd_pcm_t *handle;
       snd_pcm_hw_params_t *params;
       // snd_pcm_uframes_t frames;

       res = snd_pcm_open(&amp;handle, "default", SND_PCM_STREAM_PLAYBACK, 0);
       //res = snd_pcm_open(&amp;handle, "plug:dmixer", SND_PCM_STREAM_PLAYBACK, 0);
       if (res &lt; 0) {
           printf("unable to open pcm device: %s\n", snd_strerror(res));
           return NULL;
       }

       snd_pcm_hw_params_alloca(&amp;params);
       snd_pcm_hw_params_any(handle, params);
       snd_pcm_hw_params_set_access(handle, params, SND_PCM_ACCESS_RW_INTERLEAVED);
       snd_pcm_hw_params_set_format(handle, params, SND_PCM_FORMAT_S16_LE);
       snd_pcm_hw_params_set_channels(handle, params, 2);

       val = bitrate - 1;
       snd_pcm_hw_params_set_rate_near(handle, params, &amp;val, 0);

       unsigned period_time = 0;
       unsigned buffer_time = 0;
       snd_pcm_hw_params_get_buffer_time_max(params, &amp;buffer_time, 0);
       if (buffer_time > 500000) buffer_time = 500000;
       period_time = buffer_time >> 2;
       snd_pcm_hw_params_set_period_time_near(handle, params, &amp;period_time, 0);
       snd_pcm_hw_params_set_buffer_time_near(handle, params, &amp;buffer_time, 0);
       //frames = 32;
       //snd_pcm_hw_params_set_period_size_near(handle, params, &amp;frames, &amp;dir);
       res = snd_pcm_hw_params(handle, params);
       if (res &lt; 0) {
           printf("unable to set hw parameters: %s\n", snd_strerror(res));
           snd_pcm_close(handle);
           return NULL;
       }

       snd_ctl_set_volume(10);

       return handle;
    }


    #define AVCODEC_MAX_AUDIO_FRAME_SIZE    512
    // uint8_t inbuf[AVCODEC_MAX_AUDIO_FRAME_SIZE * 100];
    int main(int argc, char *argv[])
    {
       if(argc &lt; 2) {
           printf("Usage : %s [mp3 file]\n", argv[0]);
           exit(1);
       }

       av_register_all();

       int i, audioStream, res;
       AVCodecContext *    pCodecCtx;
       AVFormatContext *   pFormatCtx;
       AVCodec *           pCodec;
       AVFrame *           pFrame;
       AVPacket            packet;

       uint8_t * pktdata;
       int pktsize;

       pFormatCtx = avformat_alloc_context();

       if (avformat_open_input(&amp;pFormatCtx, argv[1], NULL, NULL) != 0) {
           printf("can,t open file");
           return -1;
       }

       //if (av_find_stream_info(pFormatCtx) &lt; 0)
       if (avformat_find_stream_info(pFormatCtx, NULL) &lt; 0)
           return -1;

       av_dump_format(pFormatCtx, 0, argv[1], 0);

       audioStream = -1;
       for (i = 0; i &lt; pFormatCtx->nb_streams; ++i)  
       {
           if (pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO)
           {
               audioStream = i;
               break;
           }
       }

       if (audioStream == -1) {
           printf("no audio stream\n");
           return -1;
       }

       pCodecCtx = pFormatCtx->streams[audioStream]->codec;

       printf(" codec_id   = 0x%08X\n", pCodecCtx->codec_id);
       printf(" nb_samples = %d\n", pCodecCtx->frame_size);
       printf(" format     = %d\n", pCodecCtx->sample_fmt);

       pCodec = avcodec_find_decoder(pCodecCtx->codec_id);
       if (pCodec == NULL) {
           printf("avcodec_find_decoder error\n");
           return -1;
       }


       // Inform the codec that we can handle truncated bitstreams
       // bitstreams where frame boundaries can fall in the middle of packets
       if (pCodec->capabilities &amp; AV_CODEC_CAP_TRUNCATED)
       {
           pCodecCtx->flags |= AV_CODEC_CAP_TRUNCATED;
       }

       if (avcodec_open2(pCodecCtx, pCodec, NULL) &lt; 0) {
           printf("avcodec_open error\n");
           return -1;
       }

       struct SwrContext *swr = swr_alloc();
       av_opt_set_int(swr, "in_channel_layout",  pCodecCtx->channel_layout, 0);
       av_opt_set_int(swr, "out_channel_layout", AV_CH_LAYOUT_STEREO,  0);
       av_opt_set_int(swr, "in_sample_rate",     pCodecCtx->sample_rate, 0);
       av_opt_set_int(swr, "out_sample_rate",    pCodecCtx->sample_rate, 0);
       av_opt_set_sample_fmt(swr, "in_sample_fmt",  pCodecCtx->sample_fmt, 0);
       av_opt_set_sample_fmt(swr, "out_sample_fmt", AV_SAMPLE_FMT_S16,  0);
       swr_init(swr);

       // Hack to correct wrong frame rates that seem to be generated by some
       // codecs

       pFrame = av_frame_alloc();

       pFrame->nb_samples     = pCodecCtx->frame_size;
       pFrame->format         = pCodecCtx->sample_fmt;
       pFrame->channel_layout = pCodecCtx->channel_layout;
       pFrame->sample_rate    = pCodecCtx->sample_rate;
       av_frame_set_channels(pFrame, pCodecCtx->channels);

       snd_pcm_t *handle = pcm_init(pFrame->sample_rate);

       printf(" == PCM init ==\n");

       int got_frame;
       //int data_size;
       int dst_linesize = 0;
       uint8_t **dst_data = NULL;

       av_samples_alloc_array_and_samples(&amp;dst_data, &amp;dst_linesize, 2,
               pFrame->nb_samples, AV_SAMPLE_FMT_S16, 0);

       printf("dst_data = %p\tnb_samples = %d\n", dst_data, pFrame->nb_samples);

       while(av_read_frame(pFormatCtx, &amp;packet) >= 0)
       {
           if (packet.stream_index == audioStream)
           {
               pktdata = packet.data;
               pktsize = packet.size;


               while (pktsize > 0)
               {
                   got_frame = 0;
                   int len = avcodec_decode_audio4(pCodecCtx, pFrame, &amp;got_frame, &amp;packet);
                   //data_size = av_samples_get_buffer_size(NULL, pCodecCtx->channels,
                   //  pFrame->nb_samples, pCodecCtx->sample_fmt, 1);

                   if (len &lt; 0) {
                       printf("error\n");
                       break;
                   }

                   if (got_frame > 0) {
                       i = swr_convert(swr, dst_data, pFrame->nb_samples, (const uint8_t **)pFrame->data, pFrame->nb_samples);
                       // printf("i = %d\n", i);
                       res = snd_pcm_writei(handle, dst_data[0], pFrame->nb_samples);
                       if (res == -EPIPE) {
                           // EPIPE means underrun
                           printf("underrun occurred\n");
                           snd_pcm_prepare(handle);
                       } else if (res &lt; 0) {
                           printf("error from writei: %s\n", snd_strerror(res));
                           break;
                       }
                   }

                   pktsize -= len;
                   pktdata += len;
               }
               av_free_packet(&amp;packet);
           }
       }

       av_freep(&amp;dst_data[0]);

       av_frame_free(&amp;pFrame);
       avcodec_close(pCodecCtx);
       avformat_close_input(&amp;pFormatCtx);

       return 0;
    }

    ******By Running the Above Code :******

    gcc -std=c99 2.c -o main -I./include -L./lib -lavformat -lavcodec -lswscale -lavdevice -lavfilter -lswresample -lavutil -lpthread -lm -lasound -lrt -lz

    From the Above Code I Got the Errors like this ?

    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegpicture.c:345 : undefined reference to

    av_buffer_unref'
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegpicture.c:345: undefined reference to

    av_buffer_ref’
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegpicture.c:346 : undefined reference to

    av_buffer_unref'
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegpicture.c:346: undefined reference to

    av_buffer_ref’
    /usr/local/lib/libavcodec.a(mpegpicture.o) : In function

    ff_free_picture_tables':
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegpicture.c:472: undefined reference to

    av_buffer_unref’
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegpicture.c:473 : undefined reference to

    av_buffer_unref'
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegpicture.c:474: undefined reference to

    av_buffer_unref’
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegpicture.c:475 : undefined reference to

    av_buffer_unref'
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegpicture.c:476: undefined reference to

    av_buffer_unref’
    /usr/local/lib/libavcodec.a(mpegpicture.o) :/home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegpicture.c:477 : more undefined references to

    av_buffer_unref' follow
    /usr/local/lib/libavcodec.a(mpegpicture.o): In function

    ff_mpeg_ref_picture’ :
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegpicture.c:384 : undefined reference to

    av_buffer_ref'
    /usr/local/lib/libavcodec.a(mpegpicture.o): In function

    ff_mpeg_unref_picture’ :
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegpicture.c:311 : undefined reference to

    av_frame_unref'
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegpicture.c:313: undefined reference to

    av_buffer_unref’
    /usr/local/lib/libavcodec.a(mpegpicture.o) : In function

    ff_free_picture_tables':
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegpicture.c:472: undefined reference to

    av_buffer_unref’
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegpicture.c:473 : undefined reference to

    av_buffer_unref'
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegpicture.c:474: undefined reference to

    av_buffer_unref’
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegpicture.c:475 : undefined reference to

    av_buffer_unref'
    /usr/local/lib/libavcodec.a(mpegpicture.o):/home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegpicture.c:476: more undefined references to

    av_buffer_unref’ follow
    /usr/local/lib/libavcodec.a(mpegutils.o) : In function

    ff_draw_horiz_band':
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegutils.c:56: undefined reference to

    av_pix_fmt_desc_get’
    /usr/local/lib/libavcodec.a(mpegutils.o) : In function

    ff_print_debug_info2':
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegutils.c:118: undefined reference to

    av_malloc_array’
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpegutils.c:180 : undefined reference to

    av_frame_new_side_data'
    /usr/local/lib/libavcodec.a(mpl2dec.o): In function

    mpl2_decode_frame’ :
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpl2dec.c:74 : undefined reference to

    av_bprint_init'
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpl2dec.c:77: undefined reference to

    av_bprint_finalize’
    /usr/local/lib/libavcodec.a(mpl2dec.o) : In function

    mpl2_event_to_ass':
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpl2dec.c:41: undefined reference to

    av_bprintf’
    /usr/local/lib/libavcodec.a(mpl2dec.o) : In function

    mpl2_decode_frame':
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpl2dec.c:77: undefined reference to

    av_bprint_finalize’
    /usr/local/lib/libavcodec.a(mpl2dec.o) : In function

    mpl2_event_to_ass':
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpl2dec.c:57: undefined reference to

    av_bprintf’
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpl2dec.c:42 : undefined reference to

    av_bprintf'
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpl2dec.c:43: undefined reference to

    av_bprintf’
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpl2dec.c:50 : undefined reference to

    av_bprint_chars'
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/mpl2dec.c:56: undefined reference to

    av_bprintf’
    /usr/local/lib/libavcodec.a(options.o) : In function

    copy_context_reset':
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/options.c:197: undefined reference to

    av_frame_free’
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/options.c:205 : undefined reference to

    av_buffer_unref'
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/options.c:206: undefined reference to

    av_buffer_unref’
    /usr/local/lib/libavcodec.a(options.o) : In function

    avcodec_copy_context':
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/options.c:230: undefined reference to

    av_opt_copy’
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/options.c:237 : undefined reference to

    av_opt_copy'
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/options.c:281: undefined reference to

    av_buffer_ref’
    /usr/local/lib/libavcodec.a(parser.o) : In function

    ff_combine_frame':
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/parser.c:278: undefined reference to

    av_fast_realloc’
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/parser.c:256 : undefined reference to

    av_fast_realloc'
    /usr/local/lib/libavcodec.a(pictordec.o): In function

    decode_frame’ :
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/pictordec.c:126 : undefined reference to

    avpriv_request_sample'
    /usr/local/lib/libavcodec.a(pnm_parser.o): In function

    pnm_parse’ :
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/pnm_parser.c:66 : undefined reference to

    av_image_get_buffer_size'
    /usr/local/lib/libavcodec.a(psd.o): In function

    decode_frame’ :
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/psd.c:417 : undefined reference to

    avpriv_report_missing_feature'
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/psd.c:408: undefined reference to

    avpriv_report_missing_feature’
    /usr/local/lib/libavcodec.a(psd.o) : In function

    decode_header':
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/psd.c:216: undefined reference to

    avpriv_request_sample’
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/psd.c:212 : undefined reference to

    avpriv_request_sample'
    /usr/local/lib/libavcodec.a(psd.o): In function

    decode_frame’ :
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/psd.c:380 : undefined reference to

    avpriv_report_missing_feature'
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/psd.c:384: undefined reference to

    avpriv_report_missing_feature’
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/psd.c:356 : undefined reference to

    avpriv_report_missing_feature'
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/psd.c:360: undefined reference to

    avpriv_report_missing_feature’
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/psd.c:412 : undefined reference to

    avpriv_report_missing_feature'
    /usr/local/lib/libavcodec.a(psd.o):/home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/psd.c:399: more undefined references to

    avpriv_report_missing_feature’ follow
    /usr/local/lib/libavcodec.a(pthread_slice.o) : In function

    thread_execute':
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/pthread_slice.c:110: undefined reference to

    avpriv_slicethread_execute’
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/pthread_slice.c:110 : undefined reference to

    avpriv_slicethread_execute'
    /usr/local/lib/libavcodec.a(pthread_slice.o): In function

    ff_slice_thread_free’ :
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/pthread_slice.c:82 : undefined reference to

    avpriv_slicethread_free'
    /usr/local/lib/libavcodec.a(pthread_slice.o): In function

    thread_execute’ :
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/pthread_slice.c:110 : undefined reference to

    avpriv_slicethread_execute'
    /usr/local/lib/libavcodec.a(pthread_slice.o): In function

    ff_slice_thread_init’ :
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/pthread_slice.c:159 : undefined reference to

    avpriv_slicethread_create'
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/pthread_slice.c:161: undefined reference to

    avpriv_slicethread_free’
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/pthread_slice.c:142 : undefined reference to

    av_cpu_count'
    /usr/local/lib/libavcodec.a(pthread_slice.o): In function

    ff_alloc_entries’ :
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/pthread_slice.c:214 : undefined reference to

    av_mallocz_array'
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/pthread_slice.c:217: undefined reference to

    av_malloc_array’
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/pthread_slice.c:218 : undefined reference to

    av_malloc_array'
    /usr/local/lib/libavcodec.a(ptx.o): In function

    ptx_decode_frame’ :
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/ptx.c:54 : undefined reference to

    avpriv_request_sample'
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/ptx.c:45: undefined reference to

    avpriv_request_sample’
    /usr/local/lib/libavcodec.a(qdrw.o) : In function

    decode_frame':
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/qdrw.c:417: undefined reference to

    avpriv_report_missing_feature’
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/qdrw.c:466 : undefined reference to

    avpriv_report_missing_feature'
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/qdrw.c:395: undefined reference to

    avpriv_report_missing_feature’
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/qdrw.c:329 : undefined reference to

    avpriv_request_sample'
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/qdrw.c:455: undefined reference to

    avpriv_request_sample’
    /home/gobi/basics/packages/ffmpeg_package/ffmpeg/libavcodec/qdrw.c:326 : undefined reference to `avpriv_request_sample’

  • Unable to properly save video in android ffmpeg app

    22 mars 2021, par connor449

    I am trying to record and save a video with an ffmpeg app on android 10. I'm very new to android/mobile development.

    &#xA;

    Here is my manifest file :

    &#xA;

    &lt;?xml version="1.0" encoding="utf-8"?>&#xA;<manifest package="com.example.camera">&#xA;    &#xA;    &#xA;    &#xA;&#xA;    &#xA;&#xA;&#xA;    &#xA;        <activity>&#xA;            &#xA;            &#xA;        </activity>        <activity>&#xA;            &#xA;                <action></action>&#xA;&#xA;                <category></category>&#xA;            &#xA;        </activity>&#xA;    &#xA;&#xA;&#xA;</manifest>&#xA;

    &#xA;

    As you can see, I am specifying permission to read/write data.

    &#xA;

    Here is my mainActivity :

    &#xA;

    package com.example.camera&#xA;&#xA;//import android.R&#xA;import android.content.DialogInterface&#xA;import android.content.pm.PackageManager&#xA;import android.os.Build&#xA;import android.os.Bundle&#xA;import android.widget.Toast&#xA;import androidx.appcompat.app.AlertDialog&#xA;import androidx.appcompat.app.AppCompatActivity&#xA;import androidx.core.app.ActivityCompat&#xA;import androidx.core.content.ContextCompat&#xA;import com.arthenica.mobileffmpeg.FFmpeg&#xA;&#xA;&#xA;const val EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"&#xA;&#xA;class MainActivity : AppCompatActivity() {&#xA;    override fun onCreate(savedInstanceState: Bundle?) {&#xA;        super.onCreate(savedInstanceState)&#xA;        setContentView(R.layout.activity_main)&#xA;        if (checkPermission()) {&#xA;            //main logic or main code&#xA;           FFmpeg.execute("-f android_camera -i 0:0 -r 30 -crf 0 -pixel_format yuv420p -t 00:00:05 test.mp4")&#xA;&#xA;            // . write your main code to execute, It will execute if the permission is already given.&#xA;        } else {&#xA;            requestPermission()&#xA;        }&#xA;    }&#xA;&#xA;    fun sendMessage(view:android.view.View){&#xA;&#xA;&#xA;    }&#xA;&#xA;    private fun checkPermission(): Boolean {&#xA;        return if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA)&#xA;            != PackageManager.PERMISSION_GRANTED&#xA;        ) {&#xA;            // Permission is not granted&#xA;            false&#xA;        } else true&#xA;    }&#xA;&#xA;    private fun requestPermission() {&#xA;        ActivityCompat.requestPermissions(&#xA;            this, arrayOf(android.Manifest.permission.CAMERA),&#xA;            PERMISSION_REQUEST_CODE&#xA;        )&#xA;    }&#xA;&#xA;    override fun onRequestPermissionsResult(&#xA;        requestCode: Int,&#xA;        permissions: Array<string>,&#xA;        grantResults: IntArray&#xA;    ) {&#xA;        when (requestCode) {&#xA;            PERMISSION_REQUEST_CODE -> if (grantResults.size > 0 &amp;&amp; grantResults[0] == PackageManager.PERMISSION_GRANTED&#xA;            ) {&#xA;                Toast.makeText(applicationContext, "Permission Granted", Toast.LENGTH_SHORT)&#xA;                    .show()&#xA;&#xA;                // main logic&#xA;            } else {&#xA;                Toast.makeText(applicationContext, "Permission Denied", Toast.LENGTH_SHORT)&#xA;                    .show()&#xA;                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {&#xA;                    if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA)&#xA;                        != PackageManager.PERMISSION_GRANTED&#xA;                    ) {&#xA;                        showMessageOKCancel("You need to allow access permissions",&#xA;                            DialogInterface.OnClickListener { dialog, which ->&#xA;                                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {&#xA;                                    requestPermission()&#xA;                                }&#xA;                            })&#xA;                    }&#xA;                }&#xA;            }&#xA;        }&#xA;    }&#xA;&#xA;    private fun showMessageOKCancel(&#xA;        message: String,&#xA;        okListener: DialogInterface.OnClickListener&#xA;    ) {&#xA;        AlertDialog.Builder(this@MainActivity)&#xA;            .setMessage(message)&#xA;            .setPositiveButton("OK", okListener)&#xA;            .setNegativeButton("Cancel", null)&#xA;            .create()&#xA;            .show()&#xA;    }&#xA;&#xA;    companion object {&#xA;        private const val PERMISSION_REQUEST_CODE = 200&#xA;    }&#xA;}&#xA;&#xA;</string>

    &#xA;

    Here is my error message in the logs :

    &#xA;

    2021-03-22 16:31:34.509 9365-9448/com.example.camera I/AdrenoGLES: QUALCOMM build                   : 85037b7, I6e8b82193e&#xA;    Build Date                       : 12/19/19&#xA;    OpenGL ES Shader Compiler Version: EV031.27.05.03&#xA;    Local Branch                     : &#xA;    Remote Branch                    : refs/tags/AU_LINUX_ANDROID_LA.UM.8.11.R1.10.00.00.576.016&#xA;    Remote Branch                    : NONE&#xA;    Reconstruct Branch               : NOTHING&#xA;2021-03-22 16:31:34.509 9365-9448/com.example.camera I/AdrenoGLES: Build Config                     : S P 8.0.12 AArch64&#xA;2021-03-22 16:31:34.512 9365-9448/com.example.camera I/AdrenoGLES: PFP: 0x016ee187, ME: 0x00000000&#xA;2021-03-22 16:31:55.745 9365-9480/com.example.camera I/mobile-ffmpeg: ffmpeg version v4.4-dev-416&#xA;2021-03-22 16:31:55.745 9365-9480/com.example.camera I/mobile-ffmpeg:  Copyright (c) 2000-2020 the FFmpeg developers&#xA;2021-03-22 16:31:55.746 9365-9480/com.example.camera I/mobile-ffmpeg:   built with Android (6454773 based on r365631c2) clang version 9.0.8 (https://android.googlesource.com/toolchain/llvm-project 98c855489587874b2a325e7a516b99d838599c6f) (based on LLVM 9.0.8svn)&#xA;2021-03-22 16:31:55.746 9365-9480/com.example.camera I/mobile-ffmpeg:   configuration: --cross-prefix=aarch64-linux-android- --sysroot=/files/android-sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/sysroot --prefix=/home/taner/Projects/mobile-ffmpeg/prebuilt/android-arm64/ffmpeg --pkg-config=/usr/bin/pkg-config --enable-version3 --arch=aarch64 --cpu=armv8-a --cc=aarch64-linux-android24-clang --cxx=aarch64-linux-android24-clang&#x2B;&#x2B; --extra-libs=&#x27;-L/home/taner/Projects/mobile-ffmpeg/prebuilt/android-arm64/cpu-features/lib -lndk_compat&#x27; --target-os=android --enable-neon --enable-asm --enable-inline-asm --enable-cross-compile --enable-pic --enable-jni --enable-optimizations --enable-swscale --enable-shared --enable-v4l2-m2m --disable-outdev=fbdev --disable-indev=fbdev --enable-small --disable-openssl --disable-xmm-clobber-test --disable-debug --enable-lto --disable-neon-clobber-test --disable-programs --disable-postproc --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --disable-sndio --disable-schannel --disable-securetransport --disable-xlib --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --disable-videotoolbox --disable-audiotoolbox --disable-appkit --disable-alsa --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-gmp --enable-gnutls --enable-libmp3lame --enable-libass --enable-iconv --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxml2 --enable-libopencore-amrnb --enable-libshine --enable-libspeex --enable-libwavpack --enable-libkvazaar --enable-libilbc --enable-libopus --enable-libsnappy --enable-libsoxr --enable-libaom --enable-libtwolame --disable-sdl2 --enable-libvo-amrwbenc --enable-zlib --enable-mediacodec&#xA;2021-03-22 16:31:55.746 9365-9480/com.example.camera I/mobile-ffmpeg:   libavutil      56. 55.100 / 56. 55.100&#xA;2021-03-22 16:31:55.746 9365-9480/com.example.camera I/mobile-ffmpeg:   libavcodec     58. 96.100 / 58. 96.100&#xA;2021-03-22 16:31:55.746 9365-9480/com.example.camera I/mobile-ffmpeg:   libavformat    58. 48.100 / 58. 48.100&#xA;2021-03-22 16:31:55.746 9365-9480/com.example.camera I/mobile-ffmpeg:   libavdevice    58. 11.101 / 58. 11.101&#xA;2021-03-22 16:31:55.746 9365-9480/com.example.camera I/mobile-ffmpeg:   libavfilter     7. 87.100 /  7. 87.100&#xA;2021-03-22 16:31:55.746 9365-9480/com.example.camera I/mobile-ffmpeg:   libswscale      5.  8.100 /  5.  8.100&#xA;2021-03-22 16:31:55.746 9365-9480/com.example.camera I/mobile-ffmpeg:   libswresample   3.  8.100 /  3.  8.100&#xA;2021-03-22 16:31:55.750 9365-9365/com.example.camera E/ACameraMetadata: filterDurations: malformed duration key 1638402! count 0, type 3&#xA;2021-03-22 16:31:55.750 9365-9365/com.example.camera E/ACameraMetadata: filterDurations: malformed duration key 1638403! count 0, type 3&#xA;2021-03-22 16:31:55.750 9365-9365/com.example.camera E/ACameraMetadata: filterDurations: malformed duration key 1835009! count 0, type 3&#xA;2021-03-22 16:31:55.750 9365-9365/com.example.camera E/ACameraMetadata: filterDurations: malformed duration key 1835010! count 0, type 3&#xA;2021-03-22 16:31:55.750 9365-9365/com.example.camera E/ACameraMetadata: filterDurations: malformed duration key 1638407! count 0, type 3&#xA;2021-03-22 16:31:55.750 9365-9365/com.example.camera E/ACameraMetadata: filterDurations: malformed duration key 1638408! count 0, type 0&#xA;2021-03-22 16:31:55.751 9365-9365/com.example.camera E/ACameraMetadata: filterDurations: malformed duration key 1638402! count 0, type 3&#xA;2021-03-22 16:31:55.751 9365-9365/com.example.camera E/ACameraMetadata: filterDurations: malformed duration key 1638403! count 0, type 3&#xA;2021-03-22 16:31:55.751 9365-9365/com.example.camera E/ACameraMetadata: filterDurations: malformed duration key 1835009! count 0, type 3&#xA;2021-03-22 16:31:55.751 9365-9365/com.example.camera E/ACameraMetadata: filterDurations: malformed duration key 1835010! count 0, type 3&#xA;2021-03-22 16:31:55.751 9365-9365/com.example.camera E/ACameraMetadata: filterDurations: malformed duration key 1638407! count 0, type 3&#xA;2021-03-22 16:31:55.751 9365-9365/com.example.camera E/ACameraMetadata: filterDurations: malformed duration key 1638408! count 0, type 0&#xA;2021-03-22 16:31:55.797 9365-9480/com.example.camera W/mobile-ffmpeg: [android_camera @ 0x726794b600] Requested video_size 0x0 not available, falling back to 4608x3456&#xA;2021-03-22 16:31:55.804 9365-9480/com.example.camera I/mobile-ffmpeg: [android_camera @ 0x726794b600] Android camera capture session is active.&#xA;2021-03-22 16:31:56.097 9365-9480/com.example.camera I/mobile-ffmpeg: Input #0, android_camera, from &#x27;0:0&#x27;:&#xA;2021-03-22 16:31:56.098 9365-9480/com.example.camera I/mobile-ffmpeg:   Duration: &#xA;2021-03-22 16:31:56.098 9365-9480/com.example.camera I/mobile-ffmpeg: N/A&#xA;2021-03-22 16:31:56.098 9365-9480/com.example.camera I/mobile-ffmpeg: , start: &#xA;2021-03-22 16:31:56.098 9365-9480/com.example.camera I/mobile-ffmpeg: 28486.157692&#xA;2021-03-22 16:31:56.098 9365-9480/com.example.camera I/mobile-ffmpeg: , bitrate: &#xA;2021-03-22 16:31:56.098 9365-9480/com.example.camera I/mobile-ffmpeg: N/A&#xA;2021-03-22 16:31:56.098 9365-9480/com.example.camera I/mobile-ffmpeg:     Stream #0:0&#xA;2021-03-22 16:31:56.098 9365-9480/com.example.camera I/mobile-ffmpeg: : Video: rawvideo (NV21 / 0x3132564E), nv21, 4608x3456&#xA;2021-03-22 16:31:56.098 9365-9480/com.example.camera I/mobile-ffmpeg: , &#xA;2021-03-22 16:31:56.098 9365-9480/com.example.camera I/mobile-ffmpeg: 30 fps, &#xA;2021-03-22 16:31:56.098 9365-9480/com.example.camera I/mobile-ffmpeg: 30 tbr, &#xA;2021-03-22 16:31:56.098 9365-9480/com.example.camera I/mobile-ffmpeg: 1000000000.00 tbn, &#xA;2021-03-22 16:31:56.098 9365-9480/com.example.camera I/mobile-ffmpeg: 1000000000.00 tbc&#xA;2021-03-22 16:31:56.098 9365-9480/com.example.camera I/mobile-ffmpeg:     Side data:&#xA;2021-03-22 16:31:56.098 9365-9480/com.example.camera I/mobile-ffmpeg:       &#xA;2021-03-22 16:31:56.098 9365-9480/com.example.camera I/mobile-ffmpeg: displaymatrix: rotation of -90.00 degrees&#xA;2021-03-22 16:31:56.098 9365-9480/com.example.camera W/mobile-ffmpeg: Codec AVOption crf (Select the quality for constant quality mode) specified for output file #0 (test.mp4) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.&#xA;2021-03-22 16:31:56.098 9365-9480/com.example.camera E/mobile-ffmpeg: test.mp4: Read-only file system&#xA;2021-03-22 16:31:56.259 9365-9392/com.example.camera D/ACameraDevice: Device error received, code 5, frame number 1, request ID 0, subseq ID 0&#xA;2021-03-22 16:31:56.260 9365-9666/com.example.camera D/ACameraDevice: Device error received, code 5, frame number 2, request ID 0, subseq ID 0&#xA;2021-03-22 16:31:56.260 9365-9666/com.example.camera D/ACameraDevice: Device error received, code 5, frame number 3, request ID 0, subseq ID 0&#xA;2021-03-22 16:31:56.260 9365-9666/com.example.camera D/ACameraDevice: Device error received, code 3, frame number 4, request ID 0, subseq ID 0&#xA;2021-03-22 16:31:56.260 9365-9666/com.example.camera D/ACameraDevice: Device error received, code 3, frame number 5, request ID 0, subseq ID 0&#xA;2021-03-22 16:31:56.261 9365-9666/com.example.camera D/ACameraDevice: Device error received, code 3, frame number 6, request ID 0, subseq ID 0&#xA;2021-03-22 16:31:56.607 9365-9365/com.example.camera W/ACameraCaptureSession: Device is closed but session 0 is not notified&#xA;2021-03-22 16:31:56.608 9365-9480/com.example.camera I/mobile-ffmpeg: [android_camera @ 0x726794b600] Android camera capture session was closed.&#xA;2021-03-22 16:31:56.637 9365-9365/com.example.camera I/Choreographer: Skipped 58 frames!  The application may be doing too much work on its main thread.&#xA;2021-03-22 16:31:56.678 9365-9448/com.example.camera I/OpenGLRenderer: Davey! duration=1018ms; Flags=1, IntendedVsync=17591318171185, Vsync=17592284837813, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=17592296938401, AnimationStart=17592297214183, PerformTraversalsStart=17592304079965, DrawStart=17592327848144, SyncQueued=17592334185436, SyncStart=17592334982572, IssueDrawCommandsStart=17592335124343, SwapBuffers=17592336519968, FrameCompleted=17592337443926, DequeueBufferDuration=165000, QueueBufferDuration=255000, &#xA;

    &#xA;

    The error I'm particularity confused about is :

    &#xA;

    2021-03-22 16:31:56.098 9365-9480/com.example.camera E/mobile-ffmpeg: test.mp4: Read-only file system&#xA;

    &#xA;

    I thought I specified the appropriate permissions in the manifest file ? Please advise.

    &#xA;

  • Android FFmpegPlayer Streaming Service onClick notification

    8 octobre 2013, par agony

    I have a MainActivity class that displays the list of streams available for my project and the StreamingActivity class where the streaming is done.

    If the user selected an item from the list it will start the StreamingActivity and start playing the stream.
    I'm having trouble to continue streaming music when the user pressed the notification and returning it to the StreamingActivity class if the user pressed or clicked the home menu or when the app goes to onDestroy().

    I'm using FFmpegPlayer for my project 'coz it requires to play mms :// live streams for local FM station.

    Here's my code :

    public class StreamingActivity extends BaseActivity  implements ActionBar.TabListener,
    PlayerControlListener, IMediaPlayerServiceClient {


    private StatefulMediaPlayer mMediaPlayer;
    private FFmpegService mService;
    private boolean mBound;

    public static final String TAG = "StationActivity";

    private static Bundle mSavedInstanceState;

    private static PlayerFragment mPlayerFragment;
    private static DJListFragment mDjListFragment;

    private SectionsPagerAdapter mSectionsPagerAdapter;
    private ViewPager mViewPager;

    private String stream = "";
    private String fhz = "";
    private String page = "0";

    private Dialog shareDialog;
       private ProgressDialog dialog;

    private boolean isStreaming;


    /*************************************************************************************************************/

    @Override
    public void onCreate(Bundle savedInstanceState){
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_station);

       Bundle bundle = getIntent().getExtras();
       if(bundle !=null){
           fhz = bundle.getString("fhz");
           stream = bundle.getString("stream");
       }

       Log.d(TAG, "page: " + page + " fhz: " + fhz + " stream: " + stream + " isStreaming: " + isStreaming);

       getSupportActionBar().setTitle("Radio \n" + fhz);
       getSupportActionBar().setDisplayHomeAsUpEnabled(true);
       getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

       mPlayerFragment = (PlayerFragment) Fragment.instantiate(this, PlayerFragment.class.getName(), null);
       mDjListFragment = (DJListFragment) Fragment.instantiate(this, DJListFragment.class.getName(), null);

       mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

       mViewPager = (ViewPager) findViewById(R.id.pager);
       mViewPager.setAdapter(mSectionsPagerAdapter);
       mViewPager.setCurrentItem(Integer.parseInt(page));

       mSavedInstanceState = savedInstanceState;

       Tab playingTab = getSupportActionBar().newTab();
       playingTab.setText(getString(R.string.playing_label));
       playingTab.setTabListener(this);

       Tab djTab = getSupportActionBar().newTab();
       djTab.setText(getString(R.string.dj_label));
       djTab.setTabListener(this);

       getSupportActionBar().addTab(playingTab);
       getSupportActionBar().addTab(djTab);

       // When swiping between different sections, select the corresponding
       // tab. We can also use ActionBar.Tab#select() to do this if we have
       // a reference to the Tab.
       mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
           @Override
           public void onPageSelected(int position) {
               StationActivity.this.getSupportActionBar().setSelectedNavigationItem(position);
           }
       });

       if (mSavedInstanceState != null) {
           getSupportActionBar().setSelectedNavigationItem(mSavedInstanceState.getInt("tab", 0));
       }

       dialog = new ProgressDialog(this);

       bindToService();

       UriBean.getInstance().setStream(stream);
       Log.d(TAG ,"stream: " + UriBean.getInstance().getStream());

    }

    /********************************************************************************************************/

    public class SectionsPagerAdapter extends FragmentPagerAdapter {
       public SectionsPagerAdapter(FragmentManager fm) {
           super(fm);
       }

       @Override
       public Fragment getItem(int position) {
           if (position == 0) {
               return mPlayerFragment;
           } else {
               return mDjListFragment;
           }
       }

       @Override
       public int getCount() {
           return 2;
       }
    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
       // When the given tab is selected, switch to the corresponding page in the ViewPager.
       mViewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) { }

    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) { }

    /********************************************************************************************************/

    public void showLoadingDialog() {
       dialog.setMessage("Buffering...");
       dialog.show();
    }

    public void dismissLoadingDialog() {
       dialog.dismiss();
    }

    /********************************************************************************************************/

    /**
    * Binds to the instance of MediaPlayerService. If no instance of MediaPlayerService exists, it first starts
    * a new instance of the service.
    */
    public void bindToService() {
       Intent intent = new Intent(this, FFmpegService.class);

       if (Util.isFFmpegServiceRunning(getApplicationContext())){
           // Bind to Service
           Log.i(TAG, "bindService");
           bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
       } else {
           //start service and bind to it
           Log.i(TAG, "startService &amp; bindService");
           startService(intent);
           bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
       }
    }


    /**
    * Defines callbacks for service binding, passed to bindService()
    */
    private ServiceConnection mConnection = new ServiceConnection() {
       @Override
       public void onServiceConnected(ComponentName className, IBinder serviceBinder) {
           Log.d(TAG,"service connected");

           //bound with Service. get Service instance
           MediaPlayerBinder binder = (FFmpegService.MediaPlayerBinder) serviceBinder;
           mService = binder.getService();

           //send this instance to the service, so it can make callbacks on this instance as a client
           mService.setClient(StationActivity.this);
           mBound = true;

           Log.d(TAG, "isPlaying === SERVICE: " + mService.isPlaying());

           //if

           startStreaming();
       }

       @Override
       public void onServiceDisconnected(ComponentName arg0) {
           mBound = false;
           mService = null;
       }
    };

    /********************************************************************************************************/

    @Override
    public void onPlayerPlayStop() {
       Log.d(TAG, "onPlayerPlayStop");

       Log.v(TAG, "isStreaming: " + isStreaming);
       Log.v(TAG, "mBound:  " + mBound);

       if (mBound) {
           Log.d(TAG, "bound.............");
           mMediaPlayer = mService.getMediaPlayer();
           //pressed pause ->pause
           if (!PlayerFragment.play.isChecked()) {
               if (mMediaPlayer.isStarted()) {
                   Log.d(TAG, "pause");
                   mService.pauseMediaPlayer();
               }
           } else { //pressed play
               // STOPPED, CREATED, EMPTY, -> initialize
               if (mMediaPlayer.isStopped() || mMediaPlayer.isCreated() || mMediaPlayer.isEmpty()) {
                   startStreaming();
               } else if (mMediaPlayer.isPrepared() || mMediaPlayer.isPaused()) { //prepared, paused -> resume play
                   Log.d(TAG, "start");
                   mService.startMediaPlayer();
               }
           }

           Log.d(TAG, "isPlaying === SERVICE: " + mService.isPlaying());
       }
    }

    /********************************************************************************************************/

    @Override
    public void onDownload() {
       Toast.makeText(this, "Not yet available...", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onComment() {
       FragmentManager fm = getSupportFragmentManager();
       DialogFragment newFragment = MyAlertDialogFragment.newInstance();
       newFragment.show(fm, "comment_dialog");
    }

    @Override
    public void onShare() {
       showShareDialog();
    }

    /********************************************************************************************************/

    private void startStreaming() {
       Log.d(TAG, "@startLoading");
       boolean isNetworkFound = Util.checkConnectivity(getApplicationContext());
       if(isNetworkFound) {
           Log.d(TAG, "network found");
           mService.initializePlayer(stream);
           isStreaming = true;
       } else {
           Toast.makeText(getApplicationContext(), "No internet connection found...", Toast.LENGTH_SHORT).show();
       }

       Log.d(TAG, "isStreaming: " + isStreaming);
       Log.d(TAG, "isPlaying === SERVICE: " + mService.isPlaying());
    }

    @Override
    public void onInitializePlayerStart() {
       showLoadingDialog();
    }

    @Override
    public void onInitializePlayerSuccess() {
       dismissLoadingDialog();
       PlayerFragment.play.setChecked(true);


       Log.d(TAG, "isPlaying === SERVICE: " + mService.isPlaying());
    }

    @Override
    public void onError() {
       Toast.makeText(getApplicationContext(), "Not connected to the server...", Toast.LENGTH_SHORT).show();
    }

       @Override
    public void onDestroy() {
       Log.d(TAG, "onDestroy");
       super.onDestroy();
       uiHelper.onDestroy();

       Log.d(TAG, "isPlaying === SERVICE: " + mService.isPlaying());
       if (mBound) {
           mService.unRegister();
           unbindService(mConnection);
           mBound = false;
       }

       Log.d(TAG, "service: " + Util.isFFmpegServiceRunning(getApplicationContext()));
    }

    @Override
    public void onStop(){
       Log.d(TAG, "onStop");
       super.onStop();
    }

    /*******************************************************************************************************/

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
       int itemId = item.getItemId();
       switch (itemId){
       case android.R.id.home:
           onBackPressed();
           break;
       default:
           break;
       }    
       return true;
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
       Log.d(TAG, "@onKeyDown");
       if (keyCode == KeyEvent.KEYCODE_BACK &amp;&amp; event.getRepeatCount() == 0){
           //this.moveTaskToBack(true);
           onBackPressed();
           return true;
       }
       return super.onKeyDown(keyCode, event);
    }
    }






    public class FFmpegService  extends Service implements IMediaPlayerThreadClient {

    private FFmpegPlayerThread mMediaPlayerThread       = new FFmpegPlayerThread(this);
    private final Binder mBinder                        = new MediaPlayerBinder();
    private IMediaPlayerServiceClient mClient;
    //private StreamStation mCurrentStation;

    private boolean mIsSupposedToBePlaying = false;

    private boolean isPausedInCall = false;
    private PhoneStateListener phoneStateListener;
    private TelephonyManager telephonyManager;

    @Override
    public void onCreate(){
       mMediaPlayerThread.start();
    }

    /**
    * A class for clients binding to this service. The client will be passed an object of this class
    * via its onServiceConnected(ComponentName, IBinder) callback.
    */
    public class MediaPlayerBinder extends Binder {
       /**
        * Returns the instance of this service for a client to make method calls on it.
        * @return the instance of this service.
        */
       public FFmpegService getService() {
           return FFmpegService.this;
       }
    }

    /**
    * Returns the contained StatefulMediaPlayer
    * @return
    */
    public StatefulMediaPlayer getMediaPlayer() {
       return mMediaPlayerThread.getMediaPlayer();
    }

    public boolean isPlaying() {
       return mIsSupposedToBePlaying;
    }

    @Override
    public IBinder onBind(Intent arg0) {
       return mBinder;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

       telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
       phoneStateListener = new PhoneStateListener() {
           @Override
           public void onCallStateChanged(int state, String incomingNumber) {
               // String stateString = "N/A";
               Log.v("FFmpegService", "Starting CallStateChange");
               switch (state) {
               case TelephonyManager.CALL_STATE_OFFHOOK:
               case TelephonyManager.CALL_STATE_RINGING:
                   if (mMediaPlayerThread != null) {
                       pauseMediaPlayer();
                       isPausedInCall = true;
                   }
                   break;
               case TelephonyManager.CALL_STATE_IDLE:
                   // Phone idle. Start playing.
                   if (mMediaPlayerThread != null) {
                       if (isPausedInCall) {
                           isPausedInCall = false;
                           startMediaPlayer();
                       }
                   }
                   break;
               }
           }
       };

       // Register the listener with the telephony manager
       telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);

       return START_STICKY;
    }

    /**
    * Sets the client using this service.
    * @param client The client of this service, which implements the IMediaPlayerServiceClient interface
    */
    public void setClient(IMediaPlayerServiceClient client) {
       this.mClient = client;
    }


    public void initializePlayer(final String station) {
       //mCurrentStation = station;
       mMediaPlayerThread.initializePlayer(station);
    }

    public void startMediaPlayer() {

       Intent notificationIntent = new Intent(getApplicationContext(), StreamingActivity.class);
       //notificationIntent.putExtra("page", "0");
       //notificationIntent.putExtra("isPlaying", isPlaying());
       notificationIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
       PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(), 0 , notificationIntent , PendingIntent.FLAG_UPDATE_CURRENT);

       NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
               .setSmallIcon(R.drawable.ic_launcher)
               .setContentTitle("You are listening to Radio...")
               .setContentText("test!!!")
               .setContentIntent(contentIntent);

       startForeground(1, mBuilder.build());

       NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
       notificationManager.notify(1, mBuilder.build());

       mIsSupposedToBePlaying = true;
       mMediaPlayerThread.startMediaPlayer();
    }

    public void dismissNotification(Context context) {
       String ns = Context.NOTIFICATION_SERVICE;
       NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
       mNotificationManager.cancel(1);
    }

    /**
    * Pauses playback
    */
    public void pauseMediaPlayer() {
       Log.d("MediaPlayerService","pauseMediaPlayer() called");
       mMediaPlayerThread.pauseMediaPlayer();
       stopForeground(true);
       mIsSupposedToBePlaying = false;
       dismissNotification(this);
    }
    /**
    * Stops playback
    */
    public void stopMediaPlayer() {
       stopForeground(true);
       mMediaPlayerThread.stopMediaPlayer();

       mIsSupposedToBePlaying = false;
       dismissNotification(this);
    }

    public void resetMediaPlayer() {
       mIsSupposedToBePlaying = false;
       stopForeground(true);
       mMediaPlayerThread.resetMediaPlayer();
       dismissNotification(this);
    }

    @Override
    public void onError() {
       mIsSupposedToBePlaying = false;
       mClient.onError();
       dismissNotification(this);
    }

    @Override
    public void onInitializePlayerStart() {
       mClient.onInitializePlayerStart();
    }

    @Override
    public void onInitializePlayerSuccess() {
       startMediaPlayer();
       mClient.onInitializePlayerSuccess();
       mIsSupposedToBePlaying = true;
    }

    public void unRegister() {
       this.mClient = null;
       mIsSupposedToBePlaying = false;
       dismissNotification(this);
    }

    }

    Hoping someone can help me here...