精华内容
下载资源
问答
  • C语言创建生成WAV音频文件

    千次阅读 2015-11-10 15:32:00
    对于WAV文件,首先明白WAV文件头的格式 引用博客... 所以我们一般定义一个结构体来表示头 typedef struct { char chRIFF[4]; // "RIFF" 标志 int total_Len;

    对于WAV文件,首先明白WAV文件头的格式

    引用博客http://blog.csdn.net/yzhouen/article/details/777459有详细说明。

    所以我们一般定义一个结构体来表示头

    typedef struct
    {
    char chRIFF[4];                 // "RIFF" 标志  
    int  total_Len;                 // 文件长度      
    char chWAVE[4];                 // "WAVE" 标志  
    char chFMT[4];                  // "fmt" 标志 
    int  dwFMTLen;                  // 过渡字节(不定)  一般为16
    short fmt_pcm;                  // 格式类别  
    short  channels;                // 声道数  
    int fmt_samplehz;               // 采样率 
    int fmt_bytepsec;               // 位速  
    short fmt_bytesample;           // 一个采样多声道数据块大小  
    short fmt_bitpsample;    // 一个采样占的 bit 数  
    char chDATA[4];                 // 数据标记符"data "  
    int  dwDATALen;                 // 语音数据的长度,比文件长度小42一般。这个是计算音频播放时长的关键参数~  
    }WaveHeader;


    只要头文件结构体这个设置对了,后面的音频数据直接写入,一个WAV文件就生成了。

    部分计算公式引用博客http://blog.csdn.net/misol/article/details/6265614

    那音频的播放时长计算如下:()

    1. 每个采样点字节数:bits = channels * BitsPerSample / 8   ( BitsPerSample: 16bit 一般 )
    2. 每秒字节数: m = nSamplesPerSec * bits;  (nSamplesPerSec:每秒采样数,也就是采样率~rate)
    3. 音频文件播放时长:time = dlen / m;     ( dlen就是语音数据长度,也就是文件大小减去42~ )
    领附上一个简单的生成正弦波音频文件

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <unistd.h>
    #include <fcntl.h>


    #define sin_t       5
    #define sin_hz      1000
    #define sin_db 100
    #define size_buf    sin_t*100000


    unsigned char buf[size_buf*2];


    #if 1
    typedef struct
    {
    char chRIFF[4];                 // "RIFF" 标志  
    int  total_Len;                 // 文件长度      
    char chWAVE[4];                 // "WAVE" 标志  
    char chFMT[4];                  // "fmt" 标志 
    int  dwFMTLen;                  // 过渡字节(不定)  一般为16
    short fmt_pcm;                  // 格式类别  
    short  channels;                // 声道数  
    int fmt_samplehz;               // 采样率 
    int fmt_bytepsec;               // 位速  
    short fmt_bytesample;           // 一个采样多声道数据块大小  
    short fmt_bitpsample;    // 一个采样占的 bit 数  
    char chDATA[4];                 // 数据标记符"data "  
    int  dwDATALen;                 // 语音数据的长度,比文件长度小42一般。这个是计算音频播放时长的关键参数~  
    }WaveHeader;


    WaveHeader WavInf = {
    "RIFF",
    sin_t*500*2+36,
    "WAVE",
    "fmt ",
    16,
    1,
    2,
    100000,
    100000,
    1,
    8,
    "data",
    500*sin_t*2
    };


    #else
    //将实际数据转化为内存储存形式
    void data2array(unsigned int x,unsigned char a[],unsigned char n)

        unsigned char i;
    for(i=0;i<n;i++)

            a[i]=x&0xff;
            x=x>>8;
        }
    }


    //unsigned char WavFileHeader[42] = {0};
    unsigned char wav_header[] = {  
    'R', 'I', 'F', 'F',      // "RIFF" 标志  
    0, 0, 0, 0,              // 文件长度  
    'W', 'A', 'V', 'E',      // "WAVE" 标志  
    'f', 'm', 't', ' ',      // "fmt" 标志  
    16, 0, 0, 0,             // 过渡字节(不定)  
    0x01, 0x00,              // 格式类别  
    0x01, 0x00,              // 声道数  
    0, 0, 0, 0,              // 采样率  
    0, 0, 0, 0,              // 位速  
    0x01, 0x00,              // 一个采样多声道数据块大小  
    0x10, 0x00,              // 一个采样占的 bit 数  
    'd', 'a', 't', 'a',      // 数据标记符"data "  
    0, 0, 0, 0               // 语音数据的长度,比文件长度小42一般。这个是计算音频播放时长的关键参数~  
    };  


    void InitWavHeader(void)
    {
        unsigned long a = sin_t*100000+36;
        data2array(a,&wav_header[4],4);
        a = 100000;
        data2array(a,&wav_header[24],4);
        data2array(a,&wav_header[28],4);
        a = sin_t*100000;
        data2array(a,&wav_header[40],4);
    }
    #endif


    int main()
    {
    long i;
        int j = 0;
        int ret;
        //InitWavHeader();
    for(i=0;i<size_buf;i++)
    {
            buf[j++] = sin((size_buf - i)*(3.14159*2)/100000*sin_hz)*128*sin_db/100+128;
            buf[j++] = 0;
    }
    int fd;
    fd = open("./test.wav",O_CREAT|O_RDWR);
    if(fd<0)
    {
    printf("open error\n");
    return 0;
    }
    ret = write(fd,(char *)&WavInf,sizeof(WavInf));
    //write(fd,wav_header,44);
    ret = write(fd,buf,100000*sin_t*2);
        close(fd);


    return 0;
    }



    展开全文
  • iOS 用 AVPlayer 播放一个本地音频文件

    千次阅读 2016-01-05 18:30:52
    iOS 用 AVPlayer 播放一个本地音频文件 步骤 第一步:在 Project - TARGETS - Project名 - Build Phases - Link Binary With Libraries,添加 AVFoundation.framework。第二步:创建一个 UIViewController 的子类...

    iOS 用 AVPlayer 播放一个本地音频文件

    • 步骤

      • 第一步:在 Project - TARGETS - Project名 - Build Phases - Link Binary With Libraries,添加 AVFoundation.framework。
      • 第二步:创建一个 UIViewController 的子类 PlayerViewController。
      • 第三步:在 PlayerViewController 中添加一个属性 AVPlayer。
      • 第四步:在 PlayerViewController 的 viewDidLoad 方法中实现最主要的代码。

        关键代码

        .h

        ?
        1
        2
        3
        4
        5
        6
        7
        8
        9
        <code>#import<uikit uikit.h="">
        #import
         
        @interfacePlayViewController: UIViewController
         
        @property(strong, nonatomic) AVPlayer *player;
         
        @end
        </avfoundation></uikit></code>

        .m

        ?
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        33
        34
        35
        36
        37
        <code>#import"PlayerViewController.h"
         
        @interfacePlayerViewController ()
         
        @end
         
        @implementationPlayerViewController
         
        - (void) viewDidLoad
        {
            [superviewDidLoad];
         
            AVAudioSession *session = [AVAudioSession sharedInstance];
            [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
            [audioSession setActive:YES error:nil];
         
            NSString *audioPath = [[NSBundle mainBundle] pathForResource:@"rem"ofType:@"wav"];
            NSURl *audioUrl = [NSURL fileURLWithPath:audioPath];
            NSError *playerError;
            _player = [[AVPlayer alloc] initWithContentsOfURL:audioUrl error:&playerError];
            if(_player === NULL)
            {
                NSLog(@"fail to play audio :(");
                return;
            }
         
            [_player setVolume:1];
            [_player play];
        }
         
        - (void) didReceiveMemoryWarning
        {
            [superdidReceiveMemoryWarning];
        }
         
        @end
        </code>

        几个重要的点:

        • 1.必须要用 AVAudioSession,否则木有声音啊。
        • 2.不要把 AVPlayer 当做局部变量(具体说在这个例子中,不要在 viewDidLoad 中定义)。
        • 3.要找好路径,这里用 mainBundle,不要搞错。



        AVAudioSession类由AVFoundation框架引入。每个IOS应用都有一个音频会话。这个会话可以被AVAudioSession类的sharedInstance类方法访问,如下:

        1. AVAudioSession *audioSession = [AVAudioSession sharedInstance];
        复制代码

        在获得一个AVAudioSession类的实例后,你就能通过调用音频会话对象的setCategory:error:实例方法,来从IOS应用可用的不同类别中作出选择。下面列出了可供使用的音频会话类别:
        AVAudioSessionCategorySoloAmbient


        这个类别非常像AVAudioSessionCategoryAmbient类别,除了会停止其他程序的音频回放,比如iPod程序。当设备被设置为静音模式,你的音频回放将会停止。


        AVAudioSessionCategoryRecord
        这会停止其他应用的声音(比如iPod)并让你的应用也不能初始化音频回放(比如AVAudioPlayer)。在这种模式下,你只能进行录音。使用这个类别,调用AVAudioPlayer的prepareToPlay会返回YES,但是调用play方法将返回NO。主UI界面会照常工作。这时,即使你的设备屏幕被用户锁定了,应用的录音仍会继续。


        AVAudioSessionCategoryPlayback
        这个类别会静止其他应用的音频回放(比如iPod应用的音频回放)。你可以使用AVAudioPlayer的prepareToPlay和play方法,在你的应用中播放声音。主UI界面会照常工作。这时,即使屏幕被锁定或者设备为静音模式,音频回放都会继续。


        AVAudioSessionCategoryPlayAndRecord
        这个类别允许你的应用中同时进行声音的播放和录制。当你的声音录制或播放开始后,其他应用的声音播放将会停止。主UI界面会照常工作。这时,即使屏幕被锁定或者设备为静音模式,音频回放和录制都会继续。


        AVAudioSessionCategoryAudioProcessing
        这个类别用于应用中进行音频处理的情形,而不是音频回放或录制。设置了这种模式,你在应用中就不能播放和录制任何声音。调用AVAPlayer的prepareToPlay和play方法都将返回NO。其他应用的音频回放,比如iPod,也会在此模式下停止。


        AVAudioSessionCategoryAmbient
        这个类别不会停止其他应用的声音,相反,它允许你的音频播放于其他应用的声音之上,比如iPod。你的应用的主UI县城会工作正常。调用AVAPlayer的prepareToPlay和play方法都将返回YES。当用户锁屏时,你的应用将停止所有正在回放的音频。仅当你的应用是唯一播放该音频文件的应用时,静音模式将停止你程序的音频回放。如果正当iPod播放一手歌时,你开始播放音频,将设备设为静音模式并不能停止你的音频回放。



    展开全文
  • 前言一个音视频文件是由音频和视频组成的;我们可以通过MediaExtractor、MediaMuxer把音频或视频给单独抽取出来;抽取出来的音频和视频能单独播放;知识结构MediaExtractor :作用是把音频和视频的数据进行分离; ...

    前言

    一个音视频文件是由音频和视频组成的;我们可以通过MediaExtractor、MediaMuxer把音频或视频给单独抽取出来;抽取出来的音频和视频能单独播放;

    知识结构

    MediaExtractor :作用是把音频和视频的数据进行分离;
    它常用的方法有:

    1、setDataSource(String path):
    即可以设置本地文件又可以设置网络文件
    Sets the data source (file-path or http URL) to use

    2、getTrackCount():
    得到源文件通道数
    Count the number of tracks found in the data source.

    3、getTrackFormat(int index):获取指定(index)的通道格式
    Get the track format at the specified index.

    4、getSampleTime():返回当前的时间戳
    Returns the current sample’s presentation time in microseconds.

    5、readSampleData(ByteBuffer byteBuf, int offset):把指定通道中的数据按偏移量读取到ByteBuffer中;
    Retrieve the current encoded sample and store it in the byte buffer starting at the given offset.

    6、advance():读取下一帧数据
    Advance to the next sample.

    7、release():读取结束后,释放资源

    MediaMuxer:生成音频或视频文件;还可以把音频与视频混合成一个音视频文件;
    它常用的方法:

    1、MediaMuxer(String path, int format):
    path:输出文件的名称
    format:输出文件的格式;当前只支持MP4格式;
    
    2、addTrack(MediaFormat format):添加通道;我们更多的是使用MediaCodec.getOutpurForma()或Extractor.getTrackFormat(int index)来获取MediaFormat;也可以自己创建;
    Adds a track with the specified format.
    
    3、start():开始合成文件
    Starts the muxer.
    
    4、writeSampleData(int trackIndex, ByteBuffer byteBuf, MediaCodec.BufferInfo bufferInfo):把ByteBuffer中的数据写入到在构造器设置的文件中;
    Writes an encoded sample into the muxer.
    
    5、stop():停止合成文件
    Stops the muxer.
    
    6、release():释放资源
    Make sure you call this when you're done to free up any resources instead of relying on the garbage collector to do this for you at some point in the future.

    伪代码

    MediaExtractor伪代码

     MediaExtractor extractor = new MediaExtractor();
     extractor.setDataSource(...);
     int numTracks = extractor.getTrackCount();
     for (int i = 0; i < numTracks; ++i) {
       MediaFormat format = extractor.getTrackFormat(i);
       String mime = format.getString(MediaFormat.KEY_MIME);
       if (weAreInterestedInThisTrack) {
         extractor.selectTrack(i);
       }
     }
     ByteBuffer inputBuffer = ByteBuffer.allocate(...)
     while (extractor.readSampleData(inputBuffer, ...) >= 0) {
       int trackIndex = extractor.getSampleTrackIndex();
       long presentationTimeUs = extractor.getSampleTime();
       ...
       extractor.advance();
     }
    
     extractor.release();
     extractor = null;

    MediaMuxer伪代码:

    MediaMuxer muxer = new MediaMuxer("temp.mp4", OutputFormat.MUXER_OUTPUT_MPEG_4);
     // More often, the MediaFormat will be retrieved from MediaCodec.getOutputFormat()
     // or MediaExtractor.getTrackFormat().
     MediaFormat audioFormat = new MediaFormat(...);
     MediaFormat videoFormat = new MediaFormat(...);
     int audioTrackIndex = muxer.addTrack(audioFormat);
     int videoTrackIndex = muxer.addTrack(videoFormat);
     ByteBuffer inputBuffer = ByteBuffer.allocate(bufferSize);
     boolean finished = false;
     BufferInfo bufferInfo = new BufferInfo();
    
     muxer.start();
     while(!finished) {
       // getInputBuffer() will fill the inputBuffer with one frame of encoded
       // sample from either MediaCodec or MediaExtractor, set isAudioSample to
       // true when the sample is audio data, set up all the fields of bufferInfo,
       // and return true if there are no more samples.
       finished = getInputBuffer(inputBuffer, isAudioSample, bufferInfo);
       if (!finished) {
         int currentTrackIndex = isAudioSample ? audioTrackIndex : videoTrackIndex;
         muxer.writeSampleData(currentTrackIndex, inputBuffer, bufferInfo);
       }
     };
     muxer.stop();
     muxer.release();

    示例代码

    package com.example.administrator.mediaextractor_mediamuxer;
    
    import android.media.MediaCodec;
    import android.media.MediaExtractor;
    import android.media.MediaFormat;
    import android.media.MediaMuxer;
    import android.os.Environment;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    
    import java.io.IOException;
    import java.nio.ByteBuffer;
    
    public class MainActivity extends AppCompatActivity {
    
        private static final String SDCARD_PATH  = Environment.getExternalStorageDirectory().getPath();
    
        private MediaExtractor mMediaExtractor;
        private MediaMuxer mMediaMuxer;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        process();
                    }
                    catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    
        private boolean process() throws IOException {
            mMediaExtractor = new MediaExtractor();
            mMediaExtractor.setDataSource(SDCARD_PATH+"/input.mp4");
    
            int mVideoTrackIndex = -1;
            int framerate = 0;
            for(int i = 0; i < mMediaExtractor.getTrackCount(); i++) {
                MediaFormat format = mMediaExtractor.getTrackFormat(i);
                String mime = format.getString(MediaFormat.KEY_MIME);
                if(!mime.startsWith("video/")) {
                    continue;
                }
                framerate = format.getInteger(MediaFormat.KEY_FRAME_RATE);
                mMediaExtractor.selectTrack(i);
                mMediaMuxer = new MediaMuxer(SDCARD_PATH+"/ouput.mp4", MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4);
                mVideoTrackIndex = mMediaMuxer.addTrack(format);
                mMediaMuxer.start();
            }
    
            if(mMediaMuxer == null) {
                return false;
            }
    
            MediaCodec.BufferInfo info = new MediaCodec.BufferInfo();
            info.presentationTimeUs = 0;
            ByteBuffer buffer = ByteBuffer.allocate(500*1024);
            int sampleSize = 0;
            while((sampleSize = mMediaExtractor.readSampleData(buffer, 0)) > 0) {
    
                info.offset = 0;
                info.size = sampleSize;
                info.flags = MediaCodec.BUFFER_FLAG_SYNC_FRAME;
                info.presentationTimeUs += 1000*1000/framerate;
                mMediaMuxer.writeSampleData(mVideoTrackIndex,buffer,info);
                mMediaExtractor.advance();
            }
    
            mMediaExtractor.release();
    
            mMediaMuxer.stop();
            mMediaMuxer.release();
    
            return true;
        }
    
    }

    下载项目MediaExtractor抽取视频->MediaMuxer产生视频文件

    展开全文
  • wav音频文件转换为sbc音频文件

    千次阅读 2019-08-29 11:13:39
    当我们得到一个双声道的wav音频文件,要将它转换为sbc后缀的文件操作: 第一步,需要将其转换为单声道的文件: ①:打开Cool Edit Pro 2.1,将音频文件拖入其中; ②:将鼠标移动到最上面或者最下面,鼠标旁边会出现...

    当我们得到一个双声道的wav音频文件,要将它转换为sbc后缀的文件操作:

    第一步,需要将其转换为单声道的文件:
    ①:打开Cool Edit Pro 2.1,将音频文件拖入其中;
    ②:将鼠标移动到最上面或者最下面,鼠标旁边会出现“L”或者“R”的提示;
    ③:鼠标左击选中,然后右键选择“复制为新的”,就会生产一个新的单声道的文件;
    ④:另存为,后缀还是选择为wav,然后保存即可生产单声道的wav文件。

    第二步:将采样率设置为16000:
    ①:打开格式工厂,并将生产的单声道wav音频文件拖入,转换为mp3格式;
    ②:双击任务,然后将采样率设置为16000;
    ③:开始任务,就会生成指定的mp3文件,这个mp3文件即为采样率为16000的音频文件。

    第三步:将mp3文件转换为wav文件:
    ①:打开Cool Edit Pro 2.1,并将mp3文件拖入其中;
    ②:点击另存为,将格式选择为Windows PCm(*.wav),即可,然后保存,压缩就完成了。

    第四步:生成sbc后缀的文件:
    ①:在转换工具sbc.exe下创建一个文件夹wav,然后将压缩后的wav文件放到这个文件夹中;
    ②:双击sbc.exe,会自动生成一个sbc的文件夹,里面就是转换完成之后的文件。

    第五步:替换SDK下的音频文件:
    ①:将生成的sbc文件替换projects\earphone\Output\bin\res\下文件夹中的sbc文件,记得将名字也修改为对应的名字;
    ②:点击projects\earphone\Output\bin下的postbuild.bat和prebuild.bat;
    ③:将工程重新编译,生产最新的升级软件,升级即可。

    这样子就可以将软件中的提示音转换为指定的提示音了,有问题或者有建议的小伙伴可以添加我的个人微信 lqy—1997 (中间是三个英文的杠)或者留言进行交流。

    展开全文
  • 随着发布MP3文件、播客以及流式音频变得越来越受欢迎,构建可以利用这些...这是最简单的的情况,仅仅播放在线的、可通过HTTP对其进行访问的音频文件。比如http://www.mobvcasting.com/android/audio/goodmorningan...
  • WAV音频文件

    千次阅读 2017-11-11 20:40:53
    WAV是种保存音频信息的文件格式,广泛应用于Windows及其应用程序中,如今主流的音频播放器都支持WAV音频文件的播放。
  • iOS Dev (20) 用 AVAudioPlayer 播放一个本地音频文件 作者:CSDN 大锐哥博客:http://blog.csdn.net/prevention 步骤 第一步:在 Project - TARGETS - Project名 - Build Phases - Link Binary With ...
  • iOS Dev (21) 用 AVPlayer 播放一个本地音频文件 作者:CSDN 大锐哥博客:http://blog.csdn.net/prevention 前言 这篇文章与上一篇极其相似,要注意别看错。 步骤 第一步:在 Project - TARGETS - Project名 - ...
  • 1 MediaMuxer 说明 前面利用MediaExtractor提取的aac和.h264文件不经过处理没办法播放,这次利用MediaExtractor和MediaMuxer...MediaMuxer从api18开始提供,可以封装编码后的视频流和音频流到视频文件中。目前Media...
  • 最近项目中,需要将音频文件进行合并,在开发中,遇到了一些坑,在这里将这些问题整理记录一下。 将若干.mp3文件合并,可以MP3文件转成NSData,然后再进行拼接处理,这样就可以合成段完整的MP3文件。 #import ...
  • java实现音频文件的播放

    万次阅读 多人点赞 2018-12-13 01:45:16
    实现思路 1、首先获取音频文件的地址,然后通过IO流读取音频文件,加缓冲区,实现...3、Player类有两种方法比较常用,play()方法和close()方法,前者用于启动音频文件,后者用于退出音频文件的播放,这两方法...
  • audio音频播放及网络音频文件播放

    千次阅读 2018-05-30 22:15:44
    Audio模块用于提供音频的录制和播放功能,可调用系统的麦克风设备进行录音操作,也可调用系统的扬声器设备播放音频文件。通过plus.audio获取音频管理对象。 ROUTE_SPEAKER:设备的扬声器音频输出线路 plus....
  • Android音频文件浏览+音频播放

    千次阅读 2014-05-21 17:27:53
    该Demo运行后,会显示所有你sd卡上的音乐文件列表, 并可以点击列表选择某首歌曲进行播放。 运行效果: 源代码: activity_audio_browser.xml: xmlns:tools="http://schema
  • 版权声明:本文为原创文章,未经允许不得转载 ... ...录制和播放PCM音频流 录制 播放 ...二录制和播放WAV音频文件 WAV简介 录制 播放 测试 三运行 四小结引用 联系方式 、录制和播放PCM音频流1.录
  • 注意,不是所有的音频格式在移动设备上都支持.举个栗子,OGG和FLAC文件不能在iOS上播放,最好固定使用最常用的格式:...如果你有一个正确格式的音频文件却不能播放,这可能是该文件被非标准的音频扩展程序创建或修改过,或者
  • VC读取音频文件

    千次阅读 2011-05-16 23:54:00
    vc 读取音频文件
  • 使用FFMpeg 解码音频文件

    千次阅读 2018-10-04 14:30:50
    本篇文章将介绍使用FFMpeg解码音频文件为PCM的数据。 使用FFMpeg获取想要的音频数据的步骤如下: 解封装(MP3文件)-&amp;gt;解码(MP3编码)-&amp;gt;PCM数据重采样 1. 解封装 使用FFMpeg解封装的步骤如下...
  • MediaRecorder录制音频文件

    千次阅读 2017-06-08 23:57:20
    MediaRecorder录制音频文件使用手机麦克风硬件和Android系统MediaRecorder类实现。步骤: 在activity_main文件上添加两按钮,分别为开始按钮和停止按钮。 //获取按钮 record = (Button)findViewById(R.id.record)...
  • 近日在做毕设,需要搭建一个完整的平台,用来对外展示组里的语音相关模型(类似这种)。为了实现这种需求,最关键的是客户端(浏览器)和服务端(server)之间能正确地相互通信。如果你学过计算机网络的话,你会发现,...
  • 音频文件格式解析与编解码

    千次阅读 2019-05-22 18:45:33
    说到语音技术就不得不说起音频数据,从硬件设备采集语音信号,语音信号的处理,到语音信号A/D转换得到原始数据(raw data),再到对原始数据进行编码得到音频文件,对音频文件解码进行播放。那么为什么会出现如此多的...
  • 创建自定义的音频播放应用程序

    千次阅读 2012-08-01 22:29:33
    Android包含了一个MediaPlayer类,这个类可以用来播放和控制音频和视频。现在我们使用音频功能。...所以,我们在项目的res文件夹下新建一个文件,叫raw,并加入音频文件。  1.启动媒体播放器  位音频
  • 使用树莓派播放音频文件

    千次阅读 2019-12-13 16:19:13
    使用树莓派播放音频文件 、首先,我们需要对树莓派的音频输出进行设置 步骤1:登录树莓派,打开终端,执行sudo raspi-config命令 步骤2:选择第7项Advanced Options高级选项 步骤3:选择第4项Audio音频 步骤4:...
  • 音频会话 音效播放 音乐播放 音频录制 音频管理 音频队列服务 参考地址
  • C++根据频率生成wav音频文件

    千次阅读 2017-02-07 18:21:47
    最近在研究如何根据频率来产生wav音频文件。经过一番查阅资料发现了挺不错的解决方案,整理了一下写出来与大家分享。(ps:第次写博客还不是很熟悉,诸如排版之类的问题还请大家见谅).WAV文件格式WAVE文件是非常...
  • 实现音频文件对话框(QFileDialog类)getOpenFileNames( this, "Select one or more files to open","/home","Images (*.png *.xpm *.jpg)");实现音乐播放(QMediaPlayer类/QMediaPlaylist类)实现进度条更新以及文件...
  • java 调用音频文件

    千次阅读 2018-06-20 15:29:14
    public static void main(String[] args) throws MalformedURLException, InterruptedException { String fileName="F:\\KuGou\\test.wav"; //选择播放文件 File ... //创建audioclip对象 Audio...
  • 音频文件播放器

    千次阅读 2014-06-20 15:15:19
     基于毫秒的音频文件播放定位快速精确。  充分支持VBR (XING, VBRI)。  播放24位/32位高精度音频。  播放4/6声道音频。  类似资源管理器的界面,非常容易使用,不需要学习。  剪切...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 111,768
精华内容 44,707
关键字:

如何创建一个音频文件