湖濱散記部落格的樹心幽徑[login][主頁]
751:20220219解碼cda音訊檔格式並讀取音樂光碟(Compact Disc Digital Audio)的音軌
  • https://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio#Standard
  • libcdio:https://www.gnu.org/software/libcdio/libcdio.html
  • 某AudioCD第3軌索引檔Track03.cda
  • cda音軌解碼程式:cdaParse0.cpp
  • Eight-to-Fourteen Modulation Conversion Table: https://www.physics.udel.edu/~watson/scen103/efm.html
  • 執行結果如下:
    0x16-17: numRange=1
    0x18-1B: IDByWin=*S(0x006FFE00)
    0x1C-1F: rangeOffset  =0 frames
    0x20-23: TotalTrackDuration =19037 total number of frames
    0x24: range_position_frames =0 frames
    0x25: range_position_seconds =2 seconds
    0x26: range_position_minutes =0 minutes
    0x27: range_position_null =0x00
    0x28: track_duration_frames =62 frames   19307=253*75+62
    0x29: track_duration_seconds =13 seconds
    0x2A: track_duration_minutes =4 minutes
    0x2B: track_duration_null =0x00
    
    --------------------------------
    
    0x16-17: numRange=2
    0x18-1B: IDByWin=*S(0x006FFE00)
    0x1C-1F: rangeOffset  =19037 frames
    0x20-23: TotalTrackDuration =24713 total number of frames
    0x24: range_position_frames =62 frames
    0x25: range_position_seconds =15 seconds
    0x26: range_position_minutes =4 minutes  
    0x27: range_position_null =0x00
    0x28: track_duration_frames =38 frames
    0x29: track_duration_seconds =29 seconds
    0x2A: track_duration_minutes =5 minutes  24713=329*75+38
    0x2B: track_duration_null =0x00
    
    --------------------------------
    The input file size  is 44 bytes.
    
    0x00-03:ChunkID=RIFF
    0x04-07: ChunkSize=36
    0x08-0B: Format=CDDA
    0x0C-0F: fmt=fmt
    0x10-13: ChunkLength =24
    0x14-15: 1 for CD Format =1
    0x16-17: numRange=3
    0x18-1B: IDByWin=*S(0x006FFE00)
    0x1C-1F: rangeOffset  =43750 frames
    0x20-23: TotalTrackDuration =30125 total number of frames
    0x24: range_position_frames =25 frames
    0x25: range_position_seconds =45 seconds
    0x26: range_position_minutes =9 minutes
    0x27: range_position_null =0x00
    0x28: track_duration_frames =50 frames  (=401*75+50=30125)
    0x29: track_duration_seconds =41 seconds
    0x2A: track_duration_minutes =6 minutes
    0x2B: track_duration_null =0x00
    

    參考697:20210915解碼wav音訊檔格式

  • select id,article_id,topic,text from lt_articles_text where article_id =751; ok. update lt_articles set num_reads=num_reads +1 where id=751; ok.