如何转换pymedia.audio。acodec ACString到ctypes.c_char_p

各位专家,大家好,
我对Cypes还是个新手。我使用的是一个c库,编写的是python。
它的绑定。
我需要将一个字符指针传递给一个函数。
我正在阅读一个mp3文件,并使用pymedia将其解码为原始pcm。
现在我需要将这个原始数据传递给
C函数。这是我的代码。

选择 | 换行 | 行号
  1. # /*********
  2. from ctypes import *
  3. import pymedia.audio.acodec as codec
  4.  
  5. dec = None
  6. dm = muxer.Demuxer('mp3')
  7. fp = open('test.mp3', 'rb')
  8. fingerprinting_done = False
  9.  
  10. while  not fingerprinting_done:
  11.     s = fp.read(20000)
  12.     frames = dm.parse(s)
  13.  
  14.     for fr in frames:
  15.         if dec == None:
  16.             dec = codec.Decoder(dm.streams[0])
  17.  
  18.          r = dec.Decode(fr[1])
  19.  
  20.          if r and r.data:
  21.               # pass this r.data to the C function.
  22.               # r.data is ACString object
  23.               # I cannot do pcm_audio = c_char_p(r.data) . gives me  following error
  24.               # TypeError: string or integer address expected instead  of ACString   
  25.               # instance
  26.  
  27. # *************/

我在转换r.data(它是ACstring对象)时出错
在ctyes.c_char_p中。
你能帮我解决这个问题吗?
任何帮助都会被认可,
谢谢,
桑吉特

# 回答1


试试这条线吧

选择 | 换行 | 行号
  1. pcm_audio = ctypes.py_object(r.data)

希望它能有所帮助:)

标签: python

添加新评论