• 首頁
  • 文件
  • 下載
  • 狀態
  • 常見問題
  • 郵件列表
  • 應用程式
  • 外部鏈結
  • 版權
  • 志願者
  • 聯繫

範例程式:錄音並儲存音訊檔

「CIOS音訊核心」錄音並儲存音訊檔的方式極為簡單,僅需一行程式。

bool MediaRecord (char * filename ,
                  int        milliseconds = 60000  ,
                  int        samplerate   = 44100  ,
                  int        channels     = 1      ,
                  int        inputDevice  = -1     ,
                  int        encodeDevice = -1     ,
                  int        latency      = 500    ,
                  Debugger * debugger     = NULL ) ;


#include "CiosAudio.hpp"

int main(int argc,char * argv[])
{
  if (argc<2) return 0 ;
  CiosAudio::MediaRecord(argv[1]) ;
  return 1 ;
}

「CIOS音訊核心」會自動猜測您的檔案壓縮編碼格式。如果您想要使用線緒來錄音,請參考《範例程式:播放音訊檔》當中的介紹。

MediaRecord參數說明

參數
說明
filename
錄音檔案名稱。
milliseconds
錄音時間(微秒),如果小於0或等於0,則會無限期地錄音下去,直到用戶由 外部強制中斷。
samplerate
取樣頻率。
channels
聲道數量。
inputDevice
音訊輸入設備編號,必須是實際的麥克風或網路音訊設備。
encodeDevice
壓縮編碼的設備,必須是實際的檔案壓縮設備或是網路音訊設備。
latency
輸入到輸出的延遲時間。
音訊輸入基本上是先儲存到緩衝區,然後才由音訊輸出設備讀取以後播放。
這個參數設定音訊輸入設備啟動的時間與音訊輸出設備啟動的時間的差值。
debugger
除錯物件。一般使用者不想要除錯的話,僅需給予NULL參數即可。

CaPlay當中的範例程式


int Recorder(int argc,char ** argv)
{
  int        ms         = 60000                                              ;
  int        id         = -1                                                 ;
  int        od         = -1                                                 ;
  int        i          = 2                                                  ;
  int        samplerate = 8000                                               ;
  int        channels   = 1                                                  ;
  int        latency    = 500                                                ;
  Debugger * debugger   = NULL                                               ;
  ////////////////////////////////////////////////////////////////////////////
  while ( i < argc )                                                         {
    if ( 0 == strcmp(argv[i],"--time") )                                     {
      i++                                                                    ;
      ms         = atoi(argv[i])                                             ;
      i++                                                                    ;
    } else
    if ( 0 == strcmp(argv[i],"--samplerate") )                               {
      i++                                                                    ;
      samplerate = atoi(argv[i])                                             ;
      i++                                                                    ;
    } else
    if ( 0 == strcmp(argv[i],"--channels") )                                 {
      i++                                                                    ;
      channels   = atoi(argv[i])                                             ;
      i++                                                                    ;
    } else
    if ( 0 == strcmp(argv[i],"--latency") )                                  {
      i++                                                                    ;
      latency    = atoi(argv[i])                                             ;
      i++                                                                    ;
    } else
    if ( 0 == strcmp(argv[i],"--output") )                                   {
      i++                                                                    ;
      od         = atoi(argv[i])                                             ;
      i++                                                                    ;
    } else
    if ( 0 == strcmp(argv[i],"--input") )                                    {
      i++                                                                    ;
      id         = atoi(argv[i])                                             ;
      i++                                                                    ;
    } else
    if ( 0 == strcmp(argv[i],"--debug" ) )                                   {
      if ( NULL == debugger )                                                {
        debugger = new Debugger ( )                                          ;
      }                                                                      ;
      i++                                                                    ;
    } else                                                                   {
      char * filename = argv [ i ]                                           ;
      i++                                                                    ;
      MediaRecord(filename,ms,samplerate,channels,id,od,latency,debugger)    ;
    }                                                                        ;
  }                                                                          ;
  ////////////////////////////////////////////////////////////////////////////
  if ( NULL != debugger ) delete debugger                                    ;
  ////////////////////////////////////////////////////////////////////////////
  return 1                                                                   ;
}