精华内容
下载资源
问答
  • 首先检测网络环境搭建是否完成 1、找到Tomcat的位置中bin目录中的startup.bat,之后在网址上输入...3、打开cmd,打出ipconfig,得到图下的IP地址,然后再把localhost换成你自己的IP地址后面再加上你放的音频的名字,例
    首先检测网络环境搭建是否完成

    1、找到Tomcat的位置中bin目录中的startup.bat,之后在网址上输入地址:localhost:7788(官方默认是8080)



    2、找到Tomcat的位置中的webapps--》ROOT,在ROOT中放入音频
    3、打开cmd,打出ipconfig,得到图下的IP地址,然后再把localhost换成你自己的IP地址后面再加上你放的音频的名字,例如我的是http://193.168.5.5:7788/s1.mp3,有些网页是直接出现下载,我的是直接播放,两种结果的都是成功,如果不成功,那就是环境没有搭建好,自己可以再去多多检查一下。



    接下来就是代码部分了,首先是xml布局

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        >
    
        <SeekBar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/sb_main_bar"
            />
    
        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@android:drawable/ic_media_play"
            android:onClick="playOrPause"
            />
    
    </LinearLayout>

    然后是Java代码

    package com.zking.laci.android27_playmusic;  
      
    import android.media.AudioManager;  
    import android.media.MediaPlayer;  
    import android.net.Uri;  
    import android.os.Environment;  
    import android.support.v7.app.AppCompatActivity;  
    import android.os.Bundle;  
    import android.util.Log;  
    import android.view.View;  
    import android.widget.ImageButton;  
    import android.widget.SeekBar;  
      
    import java.io.IOException;  
      
    public class MainActivity extends AppCompatActivity {  
      
        private MediaPlayer mediaPlayer;  
        private SeekBar sb_main_play;  
      
        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.activity_main);  
            sb_main_play = (SeekBar) findViewById(R.id.sb_main_play);  
      
            sb_main_play.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {  
                @Override  
                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {  
                }  
      
                @Override  
                public void onStartTrackingTouch(SeekBar seekBar) {  
                }  
      
                @Override  
                public void onStopTrackingTouch(SeekBar seekBar) {  
                    //获取当前进度条位置  
                    int currentPosition=seekBar.getProgress();  
                    //跳转到某个位置播放  
                    mediaPlayer.seekTo(currentPosition);  
                }  
            });  
        }  
      
        public void playOrPause(View view){  
            final ImageButton ib= (ImageButton) view;  
            if(mediaPlayer==null){//如果没有歌  
                //mediaPlayer = MediaPlayer.create(this, R.raw.a);  
                if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){  
                    String sdPath=Environment.getExternalStorageDirectory().getAbsolutePath();  
                    mediaPlayer=new MediaPlayer();  
                    //设置 mediaPlayer音频流的类型  
                    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);  
                    try {  
                        //设置音源  
                        //放入路径  
                        mediaPlayer.setDataSource(this, Uri.parse("http://193.168.5.5:7788/s1.mp3"));  
                        //异步准备(播放内存卡的时候需要准备)  
                        mediaPlayer.prepareAsync();  
                    } catch (IOException e) {  
                        e.printStackTrace();  
                    }  
                    //设置准备的监听  
                    mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {  
                        @Override  
                        public void onPrepared(MediaPlayer mp) {  
                            mediaPlayer.start();  
                            ib.setImageResource(android.R.drawable.ic_media_pause);  
                            //获得音乐的播放时间  
                            int time=mediaPlayer.getDuration();  
                            //设置最大值为音乐播放的时间  
                            sb_main_play.setMax(time);  
                            new MyThread().start();  
                        }  
                    });  
      
      
                }  
      
            }else if(mediaPlayer.isPlaying()){//如果正在播放  
                //暂停  
                mediaPlayer.pause();  
                //开始图标  
                ib.setImageResource(android.R.drawable.ic_media_play);  
            }else {  
                //开始播放  
                mediaPlayer.start();  
                //暂停图标  
                ib.setImageResource(android.R.drawable.ic_media_pause);  
      
            }  
        }  
      
        class MyThread extends Thread{  
            @Override  
            public void run() {  
                super.run();  
                while(sb_main_play.getProgress()<sb_main_play.getMax()){  
                    //获得音乐当前的播放位置  
                    int currentPosition=mediaPlayer.getCurrentPosition();  
                    sb_main_play.setProgress(currentPosition);  
                }  
            }  
        }  
    }  


    展开全文
  • 实训8:网络音频编辑

    2019-12-30 09:45:43
    ** H5:罗志祥——90后的青春记忆 ** H5地址: https://c5.rabbitpre.com/m2/aUe1ZjTKEH 二维码:

    **

    H5:罗志祥——90后的青春记忆

    **
    H5地址:
    https://c5.rabbitpre.com/m2/aUe1ZjTKEH

    二维码:
    在这里插入图片描述

    展开全文
  • 相信有不少人在使用Mediaplayer播放网络音频的时候,prepare与prepareAsync的方法缓冲太慢,如何解决问题?现在就给出一个亲身测试并且用到实际项目中的方案。 该方案中,用到了框架Vitamio(http://vitamio.org/),...

      相信有不少人在使用Mediaplayer播放网络音频的时候,prepare与prepareAsync的方法缓冲太慢,如何解决问题?现在就给出一个亲身测试并且用到实际项目中的方案。
      该方案中,用到了框架Vitamio(http://vitamio.org/),在下载页面中有比较详细的下载项目与介绍。主要是Demo下载地址:https://github.com/yixia/VitamioDemo 与 依赖库:https://github.com/yixia/VitamioBundle/tree/v3.0

      不过如果仅仅使用依赖库而不使用自己的重新编译的FFmpeg,那个res下的动态库so有5m大,将会造成apk过大的问题。以下就是自己编译FFmpeg的步骤与注意的地方。这是官方提供的:如何在Vitamio中使用自己编译的FFmpeghttp://vitamio.org/pages/how-to-use-vitamio-with-your-own-ffmpeg-build?locale=zh-CN

      我是在MAC的系统上编译的,其他系统也差不多,主要是注意自己的环境那些,例如mac下需要gcc,window下需要cygwin等
      1. 确定自己的mac上已经安装了gcc的编译环境,如果没有请到xcode下载
      2. 下载ndk,vitamio推荐我们使用的是ndk-r8b的版本
      3. 在终端下输入:export ANDROID_NDK=/path/to/your/android-ndk  (export是关键字;ANDROID_NDK照着打吧;后面的地址就是你解压的ndk地址)

      4. 在终端定位到http://github.com/yixia/FFmpeg-Android网址下载的文件夹的目录,然后执行  ./FFmpeg-Android.sh命令。
      4.1 执行git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg下载ffmpeg的代码,然后才能使用configure --help 命令。

      5. 补充4。 根据官方的解释,我们可以在FFmpeg-Android.sh 进行适当修改,我们主要是关注FFMPEG_FLAGS下面的配置。
      如果需要配置多个,可以用英文的','分开
      --enable-decoder=aac,mp3,mpeg4 \ 实践了,这样写ok
        5.1 附上一个FFMPEG_FLAGS配置例子:

    FFMPEG_FLAGS="--target-os=linux \
      --arch=arm \
      --enable-cross-compile \
      --cross-prefix=arm-linux-androideabi- \
      --enable-shared \
      --disable-symver \
      --disable-doc \
      --disable-ffplay \
      --disable-ffmpeg \
      --disable-ffprobe \
      --disable-ffserver \
      --disable-avdevice \
      --disable-avfilter \
      --disable-encoders \
      --disable-muxers \
      --disable-filters \
      --disable-devices \
      --disable-everything \
      --enable-protocol=http,md5,https,cache,file,httpproxy  \
      --enable-parser=aac,aac_latm,mpegaudio \
      --enable-demuxer=aac,ogg \
      --enable-decoder=aac_latm,aac \
      --enable-bsf=aac_adtstoasc,noise \
      --enable-network \
      --enable-swscale  \
      --enable-asm \
      --enable-version3"

     

      6. 执行是漫长的等待,不过这时不要松懈。你有可能会出现类似ccache的错误。这个错误会引起不能生成libffmpeg.so文件的错误

        6.1 解决办法:到网上http://mxcl.github.com/homebrew/ 把类似下面的地址复制到终端,回车执行 
         6.2 ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
       
    6.3 
    安装完成之后吧,执行 brew install ccache 
        6.4 重新再编译执行sh文件,这时候就可以了
      7. 官方文档也提到VitamioBundle中的res/raw/libarm.so这个文件是7-zip压缩文件。得到这个信息后,我们可以在终端下使用命令 brew search 7zip搜索需要的软件,找到之后就可以使用brew install X    X是你需要的那个软件名字。
        然后根据7z --help命令得到解压so文件的指令,把libffmpeg.so替换解压出来的libffmpeg.so,官网http://vitamio.org/pages/how-to-use-vitamio-with-your-own-ffmpeg-build?locale=zh-CN有提示,替换完之后再用指令打包回so文件。
      8. 把这个自己编译的文件覆盖 res/raw/libarm.so文件,到此,所有的操作已经完成。稍后一些时间,我会完善这一文档及附上部分图片。
      9. 附上p7zip的解压指令:
        9.1 pz x 需要解压的文件 -o指定的解压到的目录,例:7z x /Users/Ari/Downloads/VitamioBundle-3.0/res/raw/libarm.so -o/Users/Ari/Downloads/VitamioBundle-3.0/res/raw/lib

        
    9.2 pz a 指定压缩到的目录 需要压缩的文件或目录,使用空格隔开多个,例:7z a /Users/Ari/Downloads/VitamioBundle-3.0/res/raw/libarm.so 60 61 70 71

     

     

     

    转载于:https://www.cnblogs.com/lee0oo0/archive/2013/04/03/2998921.html

    展开全文
  • Android中提供了对网络上流媒体的支持,我们可以使用MediaPlayer类来播放一个网络上的音频文件。...本文通过实例演示,Android中如何访问网络上的M3U文件,实现网络音频文件的播放。   本文包含

    Android中提供了对网络上流媒体的支持,我们可以使用MediaPlayer类来播放一个网络上的音频文件。

    但是网络上的站点并不建议我们直接访问流,我们需要获取他提供的M3U文件,根据M3U文件来实现流的获取。

    M3U是音频流地址索引文件,相当于播放列表。

     

    本文通过实例演示,Android中如何访问网络上的M3U文件,实现网络音频文件的播放。

     

    本文包含三个部分:

    1、根据用户输入的M3U文件的Url,访问网络,获取该M3U文件

    2、对获取到的M3U文件进行解析,Android中并没有提供现成的方法来解析M3U文件

    3、显示解析结果,并利用MediaPlayer来播放列表

     

    代码如下:

     

    1、HttpConnect类:封装网络访问

    [java] view plaincopy
    1. package demo.camera;  
    2. import java.io.BufferedReader;  
    3. import java.io.InputStream;  
    4. import java.io.InputStreamReader;  
    5. import org.apache.http.HttpResponse;  
    6. import org.apache.http.HttpStatus;  
    7. import org.apache.http.client.HttpClient;  
    8. import org.apache.http.client.methods.HttpGet;  
    9. import org.apache.http.impl.client.DefaultHttpClient;  
    10. import android.util.Log;  
    11. /** 
    12.  * 给类提供访问网络的方法 
    13.  * @author Administrator 
    14.  * 
    15.  */  
    16. public final class HttpConnect {  
    17.       
    18.     /** 
    19.      * 利用HttpClient获取指定的Url对应的HttpResponse对象 
    20.      * @param url 
    21.      * @return 
    22.      */  
    23.     public static HttpResponse getResponseFromUrl(String url){  
    24.         try {  
    25.             HttpClient client = new DefaultHttpClient();  
    26.             HttpGet get = new HttpGet(url);  
    27.             Log.v("URI : ", get.getURI().toString());  
    28.             HttpResponse response = client.execute(get);  
    29.             if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){  
    30.                 return response;  
    31.             }  
    32.         } catch (Exception e) {  
    33.             // TODO: handle exception  
    34.             e.printStackTrace();  
    35.         }  
    36.         return null;  
    37.     }  
    38.       
    39.     /** 
    40.      * 利用HttpClient获取指定Url对应的字符串对象 
    41.      * @param url 
    42.      * @return 
    43.      */  
    44.     public static String getStringFromUrl(String url){  
    45.         try {  
    46.             StringBuilder result = new StringBuilder();  
    47.             HttpResponse res = HttpConnect.getResponseFromUrl(url);  
    48.             if(res != null){  
    49.                 InputStream is = res.getEntity().getContent();  
    50.                 BufferedReader reader = new BufferedReader(new InputStreamReader(is));  
    51.                 String line = "";  
    52.                 while((line = reader.readLine()) != null){  
    53.                     result.append(line);  
    54.                 }  
    55.                 is.close();  
    56.                 return result.toString();  
    57.             }  
    58.         } catch (Exception e) {  
    59.             // TODO: handle exception  
    60.         }  
    61.           
    62.         return null;  
    63.     }  
    64. }  

    2、M3UParser类:解析M3U文件

    [java] view plaincopy
    1. package demo.camera;  
    2. import java.io.BufferedReader;  
    3. import java.io.InputStream;  
    4. import java.io.InputStreamReader;  
    5. import java.util.ArrayList;  
    6. import java.util.List;  
    7. import org.apache.http.HttpResponse;  
    8. /** 
    9.  * 该类提供对M3U文件的解析 
    10.  * @author Administrator 
    11.  * 
    12.  */  
    13. public final class M3UParser {  
    14.       
    15.     /** 
    16.      * 从指定的Url进行解析,返回一个包含FilePath对象的列表 
    17.      * FilePath封装每一个Audio路径。 
    18.      * @param url 
    19.      * @return 
    20.      */  
    21.     public static List<FilePath> parseFromUrl(String url){  
    22.         List<FilePath> resultList = null;  
    23.         HttpResponse res = HttpConnect.getResponseFromUrl(url);  
    24.         try {  
    25.             if(res != null){  
    26.                 resultList = new ArrayList<M3UParser.FilePath>();  
    27.                 InputStream in = res.getEntity().getContent();  
    28.                 BufferedReader reader = new BufferedReader(new InputStreamReader(in));  
    29.                 String line = "";  
    30.                 while((line = reader.readLine()) != null){  
    31.                     if(line.startsWith("#")){  
    32.                         //这里是Metadata信息  
    33.                     }else if(line.length() > 0 && line.startsWith("http://")){  
    34.                         //这里是一个指向的音频流路径  
    35.                         FilePath filePath = new FilePath(line);  
    36.                         resultList.add(filePath);  
    37.                     }  
    38.                 }  
    39.                 in.close();  
    40.             }  
    41.         } catch (Exception e) {  
    42.             e.printStackTrace();  
    43.         }  
    44.         return resultList;  
    45.     }  
    46.       
    47.     /** 
    48.      * 返回List<String>类型 
    49.      * @param url 
    50.      * @return 
    51.      */  
    52.     public static List<String> parseStringFromUrl(String url){  
    53.         List<String> resultList = null;  
    54.         HttpResponse res = HttpConnect.getResponseFromUrl(url);  
    55.         try {  
    56.             if(res != null){  
    57.                 resultList = new ArrayList<String>();  
    58.                 InputStream in = res.getEntity().getContent();  
    59.                 BufferedReader reader = new BufferedReader(new InputStreamReader(in));  
    60.                 String line = "";  
    61.                 while((line = reader.readLine()) != null){  
    62.                     if(line.startsWith("#")){  
    63.                         //这里是Metadata信息  
    64.                     }else if(line.length() > 0 && line.startsWith("http://")){  
    65.                         //这里是一个指向的音频流路径  
    66.                         resultList.add(line);  
    67.                     }  
    68.                 }  
    69.                 in.close();  
    70.             }  
    71.         } catch (Exception e) {  
    72.             e.printStackTrace();  
    73.         }  
    74.         return resultList;        
    75.     }  
    76.       
    77.       
    78.     //解析后的实体对象  
    79.     static class FilePath{  
    80.           
    81.         private String filePath;  
    82.           
    83.         public FilePath(String filePath){  
    84.             this.filePath = filePath;  
    85.         }  
    86.         public String getFilePath() {  
    87.             return filePath;  
    88.         }  
    89.         public void setFilePath(String filePath) {  
    90.             this.filePath = filePath;  
    91.         }  
    92.           
    93.           
    94.     }  
    95. }  

    3、InternetAudioDemo类:显示解析列表吗,并实现播放

    [java] view plaincopy
    1. package demo.camera;  
    2. import java.io.IOException;  
    3. import java.util.List;  
    4. import demo.camera.M3UParser.FilePath;  
    5. import android.app.Activity;  
    6. import android.app.ListActivity;  
    7. import android.app.ProgressDialog;  
    8. import android.media.MediaPlayer;  
    9. import android.os.Bundle;  
    10. import android.view.View;  
    11. import android.view.inputmethod.InputMethodManager;  
    12. import android.widget.ArrayAdapter;  
    13. import android.widget.Button;  
    14. import android.widget.EditText;  
    15. import android.widget.ListAdapter;  
    16. import android.widget.Toast;  
    17. /** 
    18.  * Android支持播放网络上的Audio 
    19.  * 访问网络上的Audio,我们通过Http需要获取音频流 
    20.  * 这可能要涉及到ICY协议。ICY对Http协议进行了扩展 
    21.  * 然而,网络上的站点,往往并不允许我们直接访问其音频流 
    22.  * 我们需要一种中间文件来指向我们需要的音频流的地址,以使第三方的软件可以播放。 
    23.  * 对于ICY流来说,其就是一个PLS文件或者一个M3U文件 
    24.  * PLS对应的MIME类型为:audio/x-scpls 
    25.  * M3U对应的MIME类型为:audio/x-mpegurl 
    26.  *  
    27.  * 虽然Android提供了对ICy流的支持,但是其并没有提供现成的方法来解析M3U或PLS文件 
    28.  * 所以,为了播放网络上的音频流,我们需要自己实现这些文件的解析 
    29.  * M3U文件其实就是一个音频流的索引文件,他指向要播放的音频流的路径。 
    30.  * @author Administrator 
    31.  * 
    32.  */  
    33. public class InternetAudioDemo extends ListActivity {  
    34.       
    35.     private Button btnParse, btnPlay, btnStop;  
    36.       
    37.     private EditText editUrl;  
    38.       
    39.     private MediaPlayer player;  
    40.       
    41.     private List<String> pathList;  
    42.       
    43.     private int currPosition = 0//记录当前播放的媒体文件的index  
    44.       
    45.     //private ProgressDialog progress;  
    46.       
    47.     public void onCreate(Bundle savedInstanceState){  
    48.         super.onCreate(savedInstanceState);  
    49.         setContentView(R.layout.internet_audio);  
    50.           
    51.         btnParse = (Button)this.findViewById(R.id.btn_parse);  
    52.         btnPlay = (Button)this.findViewById(R.id.btn_start);  
    53.         btnStop = (Button)this.findViewById(R.id.btn_end);  
    54.           
    55.         editUrl = (EditText)this.findViewById(R.id.edit_url);  
    56.         editUrl.setText("http://pubint.ic.llnwd.net/stream/pubint_kmfa.m3u");  
    57. //      InputMethodManager imm = (InputMethodManager)this.getSystemService(INPUT_METHOD_SERVICE);  
    58. //      imm.showSoftInput(editUrl, InputMethodManager.SHOW_IMPLICIT);  
    59.         btnPlay.setEnabled(false);  
    60.         btnStop.setEnabled(false);  
    61.           
    62.         player = new MediaPlayer();  
    63.         player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {  
    64.               
    65.             @Override  
    66.             public void onCompletion(MediaPlayer player) {  
    67.                 // 这个方法当MediaPlayer的play()执行完后触发  
    68.                 player.stop();  
    69.                 player.reset();  
    70.                 if(pathList.size() > currPosition+1){  
    71.                     currPosition++; //转到下一首  
    72.                     prepareToPlay();  
    73.                 }  
    74.             }  
    75.         });  
    76.           
    77.         player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {  
    78.               
    79.             @Override  
    80.             public void onPrepared(MediaPlayer arg0) {  
    81.                 // 这个方法当MediaPlayer的prepare()执行完后触发  
    82.                 btnStop.setEnabled(true);  
    83.                 player.start();  
    84.                   
    85.                 //当一曲播放完后,执行onCompletionListener的onCompletion方法  
    86.             }  
    87.         });  
    88.           
    89.     }  
    90.       
    91.     private void prepareToPlay(){  
    92.         try {  
    93.             //获取当前音频流的路径后我们需要通过MediaPlayer的setDataSource来设置,然后调用prepareAsync()来完成缓存加载  
    94.             String path = pathList.get(currPosition);  
    95.             player.setDataSource(path);  
    96.             //之所以使用prepareAsync是因为该方法是异步的,因为访问音频流是网络操作,在缓冲和准备播放时需要花费  
    97.             //较长的时间,这样用户界面就可能出现卡死的现象  
    98.             //该方法执行完成后,会执行onPreparedListener的onPrepared()方法。  
    99.             player.prepareAsync();  
    100.               
    101.         } catch (IllegalArgumentException e) {  
    102.             // TODO Auto-generated catch block  
    103.             e.printStackTrace();  
    104.         } catch (IllegalStateException e) {  
    105.             // TODO Auto-generated catch block  
    106.             e.printStackTrace();  
    107.         } catch (IOException e) {  
    108.             // TODO Auto-generated catch block  
    109.             e.printStackTrace();  
    110.         }         
    111.     }  
    112.       
    113.       
    114.     public void onClick(View v){  
    115.         int id = v.getId();  
    116.         switch(id){  
    117.         case R.id.btn_parse:  
    118.             //完成解析  
    119. //          progress = ProgressDialog.show(this, "提示", "正在解析,请稍后...");  
    120. //          progress.show();  
    121.             String url = null;  
    122.             if(editUrl.getText() != null){  
    123.                 url = editUrl.getText().toString();  
    124.             }  
    125.             if(url != null && !url.trim().equals("")){  
    126.                 pathList = M3UParser.parseStringFromUrl(url);  
    127.                 ListAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, pathList);  
    128.                 this.setListAdapter(adapter);  
    129.                 btnPlay.setEnabled(true);  
    130.             }else{  
    131.                 Toast.makeText(this"请输入正确的M3U文件访问地址", Toast.LENGTH_LONG).show();  
    132.             }  
    133.               
    134.             break;  
    135.         case R.id.btn_start:  
    136.             //这里播放是从第一个开始  
    137.             btnPlay.setEnabled(false);  
    138.             btnParse.setEnabled(false);  
    139.             this.currPosition = 0;  
    140.             if(pathList != null && pathList.size() > 0){  
    141.                   
    142.                 prepareToPlay();  
    143.                   
    144.             }  
    145.             break;  
    146.         case R.id.btn_end:  
    147.             player.pause();  
    148.             btnPlay.setEnabled(true);  
    149.             btnStop.setEnabled(false);  
    150.             break;  
    151.         default:  
    152.             break;  
    153.               
    154.         }  
    155.     }  
    156. }  

     

    4、需要在清单文件中加入INTERNET权限。

    展开全文
  • Android中提供了对网络上流媒体的支持,我们可以使用MediaPlayer类来播放一个网络上的音频文件...本文通过实例演示,Android中如何访问网络上的M3U文件,实现网络音频文件的播放。   本文包含三个部分: 1、根据用
  • 网络音频检查器 Web Audio Inspector是一个Chrome扩展程序,它向“开发人员工具”添加了“ Web Audio”面板。 该面板显示了Web Audio API JavaScript生成的AudioNode图。 从其安装扩展程序。 Wiki详细介绍了 。 ...
  • 既然我们是要播放网络音乐,那就要先检测网络环境搭建好了没有。 步骤是: 1、找到Tomcat的位置中bin目录中的startup.bat,之后在网址上输入地址:localhost:7788,(我的是7788,官方默认是8080,出现网页不对的...
  • Android中提供了对网络上流媒体的支持,我们可以使用MediaPlayer类来播放一个网络上的音频文件。...本文通过实例演示,Android中如何访问网络上的M3U文件,实现网络音频文件的播放。 本文包含三...
  • Android多媒体学习七:访问网络上的Audio对应的M3U文件,实现网络音频流的播放   Android中提供了对网络上流媒体的支持,我们可以使用MediaPlayer类来播放一个网络上的音频文件。 但是网络上的站点并不建议我们...
  • ONVIF TestConformance Test Tool获取RTSP地址及VLC播放音频 一、目的 通过VLC软件网络串口流播放拾音器的声音。 二、设备 笔记本 IP 10.0.1.203 拾音器:淘宝某款 IP 10.0.1.201,该拾音器实际就是IPCAMRA主板加...
  • 2010-2011在线参照地址 安徽人民广播电台 http://media.ahradio.com.cn/xsps/zqhtyj/index.shtml 2010-2011在线 或者下载地址 淄博网络电视台 http://www.zbntv.cn/node/node_751.htm 2010全年下载地址 ...
  • 用MPMoviePlayerController播放的网络上的音频。 想让程序在按了home键,切到后台以后,能继续播放音频,并且一个音频结束后,能再播放下一个~~ 现在,切换到后台后,正在播放的音频可以继续播放,没有问题; 但是...
  • 原文地址 来源 在知乎上发现了这种解决方案,用的是GitHub上的开源项目you-get 支持 该工具的使用在机器上先行配置python3.2及以上的环境,需要安装FFmpeg FFmpeg官网地址 FFmpeg下载地址 其他参考 Python+...
  • 音频播放框架

    2019-11-27 13:25:35
    轻松播放本地和网络音频 集成和调用API非常简单,音频功能几乎可以集成到一个语句中。 提供丰富的API方法来轻松实现各种功能。 方便集成自定义通知栏和系统通知栏。 使用ExoPlayer作为实质播放器。 支持多种...
  • 上一期刚刚掀完桌子没多久《Android MP3录制,波形显示,音频权限兼容与播放》,就有小伙伴问我:“一个音频网络地址,如何根据这个获取它的波形图?”··· WTF(ノಠ益ಠ)ノ彡┻━┻,那一瞬间那是热泪盈眶啊,...
  • <div><p>一个音频网络地址,如何根据这个获取它的波形图,或者一个本地文件也行啊</p><p>该提问来源于开源项目:CarGuo/GSYRecordWave</p></div>
  • linux音频编程

    2015-11-20 15:56:28
    虽然目前Linux的优势主要体现在网络服务方面,但事实上同样也有着非常丰富的媒体功能,本文就是以多媒体应用中最基本的声音为对象,介绍如何在Linux平台下开发实际的音频应用程序,同时还给出了一些常用的音频编程...
  • 注:本人开始运行下面报java.io.FileNotFoundException ,纠结很久后清理tomcat后...//获取wav文件地址 String vRecordUrl=(request.getParameter("vRecordUrl")==null?"":request.getParameter("vRecordUrl")); ...
  • 在win7的猛烈来势之,显然系统原版软件的功能也越来越体现出它的实用性和价值性,其中windows media center就是一大利器,在安装win7codes解码器之后能很好的支持几乎所有视频和音频格式,并且耗费内存好,如此也...
  • 最近由ios应用转做游戏,游戏开始时需要播放一个视频,由于本身cocos2d-x播放视频的相关库,在...今天无意间发现通过cocos2d-iPhone的CCVideoPlayer来播放,特意实验了一下,原帖地址:http://blog.csdn.net/kaiti...
  • ACM做音频传输的时候,有严重的延迟问题,这个控件来自网络,添加了4个录音缓冲区,解决延迟问题, 在配合VFW可以实现视频会议。 下载地址:/Files/apple1/ACM_4缓冲区_无延迟版本.zip 转载于:...
  • android音频视频播放器

    千次阅读 2014-01-27 01:01:02
    最近写了一个android简单的音频视频播放器: 1.扫描sdcard的音乐文件并播放 2.歌词同步功能(只能同步到行,因为是lrc格式,如果需要同步到每一个字,类似kogou那样则需要解析krc文件) 3.播放视频功能 4播放网络...
  • Android音频缓存(边播放变下载)

    热门讨论 2016-11-30 17:31:54
    5. 自动读取缓存文件(没有缓存从网络读取,有缓存的时候从本地缓存读取) 6. 进度条缓存加载提示(如果已经缓存缓存setSecondaryProgress将会设置成100%); 博客地址:...
  • 好久没有写过关于微信小程序的Demo了,今天向大家展示的关于媒体(图片,音频,视频)和地图的使用方法,希望对大家有所帮助,不喜勿喷,谢谢~代码中都有必要的文字...-> 本地图片 网络图片 音频: Audio音频 视

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 517
精华内容 206
关键字:

网络音频地址