对ctypes
来说很新。尝试使用ctypes,因为我想使用libquicktime库来使用python将文本轨道插入到电影中。我正在尝试以下内容,我遇到了seg故障。
我认为the doc说我应该通过ins64_t
持续时间,(在我的情况下,随机数为123进行测试)。不知道如何定义int64_t
var:
>> import ctypes
>> lqt = ctypes.cdll.LoadLibrary('libquicktime.so.0')
>> qth = lqt.quicktime_open('/home/blah/movies/Test.018699.mov', 0, 1)
>> lqt.lqt_add_text_track(qth)
0
>> lqt.lqt_set_text_language(qth, 1, 'eng')
0
>> lqt.lqt_write_text(qth, 1, 'test message', 123)
Segmentation fault
如果有人能解释我如何在python中映射像(int64,uint64)这样的数据类型会非常有帮助吗?
答案 0 :(得分:0)
在调用函数之前定义函数的参数类型。
lqt.lqt_write_text.argtypes = [ctypes.c_void_p,ctypes.c_int,ctypes.c_char_p,ctypes.c_int64]
lqt.lqt_write_text.restype = None
lqt.lqt_write_text(qth, 1, 'test message', 123)
注意像quicktime_t
这样的不透明类型只能将void指针替换为类型。