STM32
直播中

李慎梓

7年用户 1431经验值
私信 关注
[问答]

使用cubeide进行debug能看到编解码后的数据,但是PC端输出的audio文件却是空文件,为什么?

在音频编解码时遇到报错,UnboundLocalError: local variable 'res' referenced before assignment亦或是struct.error: unpack requires a buffer of 13 bytes,这些都是opus profiling tool报错的,实际表现就是编解码开始后不久就停止运行了

此外,还有一个问题,就是在输出audio文件时,使用cubeide进行debug能看到编解码后的数据,但是PC端输出的audio文件却是空文件
期望得到解答回复,谢谢

回帖(1)

王娟

2024-7-23 17:21:45
从您提供的信息来看,您在使用CubeIDE进行音频编解码时遇到了一些问题。以下是针对您提到的问题的一些建议和解决方案:

1. **UnboundLocalError: local variable 'res' referenced before assignment**:
   这个错误通常表示在函数内部,局部变量`res`在赋值之前就被引用了。这可能是因为在某些分支逻辑中,变量未被正确赋值。为了解决这个问题,您需要检查代码中关于`res`变量的赋值逻辑,确保在引用之前已经对其进行了正确的赋值。

2. **struct.error: unpack requires a buffer of 13 bytes**:
   这个错误通常发生在使用`struct`模块进行字节打包和解包时,所需的缓冲区大小与实际提供的缓冲区大小不匹配。这可能是由于输入数据的长度不正确或者解包时指定的格式不正确。为了解决这个问题,您需要检查代码中关于`struct`模块的使用,确保输入数据的长度和解包格式与预期一致。

3. **编解码开始后不久就停止运行**:
   这个问题可能与上述两个错误有关。如果编解码过程中遇到了错误,程序可能会异常终止。为了解决这个问题,您需要仔细检查代码,找出导致程序停止运行的原因,并进行相应的修复。

4. **PC端输出的audio文件是空文件**:
   这个问题可能与编解码过程中的数据写入有关。以下是一些建议:
   - 确保编解码后的数据被正确写入到输出文件中。检查代码中关于文件写入的部分,确保数据被正确写入。
   - 检查编解码过程中是否有任何可能导致数据丢失的错误。例如,编解码参数设置错误、编解码器初始化失败等。
   - 尝试使用不同的编解码器或编解码参数,看看是否能解决问题。

5. **使用CubeIDE进行debug能看到编解码后的数据**:
   这意味着在调试过程中,编解码后的数据是正确的。这可能表明问题出在数据写入到文件的过程中。您可以尝试以下方法:
   - 在调试过程中,逐步跟踪数据写入的过程,确保数据被正确写入到文件中。
   - 检查文件写入时使用的路径和权限,确保程序有足够的权限将数据写入到指定的文件中。

希望这些建议能帮助您解决问题。如果问题仍然存在,请提供更多的代码细节和错误信息,以便进一步分析和解决。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分