使用python进行24bit音频处理
import struct
# datalike=b'\x00\x00\x02\xff\xff\xff' #b'\xff\xff\xff\xff\xff\xff'
import audioop class Handle_24bit_Data:
def __init__(self, bytes_data, handle_method):
self.bytes_data = bytes_data
self.handle_method = handle_method def handle_str_data(self):
return audioop.byteswap(self.bytes_data,3) def iter_bytes_data(self,data):
datalist = list(struct.iter_unpack('>BH', data))
return datalist def make_int24_value(self, data_tp):
low_int = data_tp[1]
low_pos = hex(low_int)[2:]
low_pos_len = len(low_pos)
if low_pos_len < 4:
low_pos = (4 - low_pos_len) * ''+low_pos str_data = ''.join([hex(data_tp[0]), low_pos])
hex_value = int(str_data, base=16)
maxvalue=2<<23
comvalue=(2<<22)-1
if hex_value<=comvalue:
return hex_value
else:
return hex_value-maxvalue def swap_number(self,hexnumber):
#to change signed value to unsigned
if hexnumber>=0:
return hexnumber
if hexnumber<0:
return hexnumber+(2<<23) def split_int24(self, hex_num):
hex_str_nbytes = hex(hex_num)
if len(hex_str_nbytes) > 6:
hex_str_1bytes = hex_str_nbytes[:-4]
hex_str_2bytes = hex_str_nbytes[-4:]
return int(hex_str_1bytes, base=16), int(hex_str_2bytes, base=16)
else:
return 0,int(hex_str_nbytes, base=16) def pack_data(self, tp):
return struct.pack('>BH', *tp) def __call__(self):
data=self.handle_str_data()
data_generator = self.iter_bytes_data(data)
int24_datalist = list(map(self.make_int24_value, data_generator)) # get int value list
handled_data = map(self.handle_method, int24_datalist) # handle int data
swaped_data=map(self.swap_number,handled_data)
hex_tuple_list = list(map(self.split_int24, swaped_data)) # split to 8bit and 16bit
int24_bitdata = map(self.pack_data, hex_tuple_list)
print(int24_bitdata)
return audioop.byteswap(b''.join(list(int24_bitdata)), 3) if __name__ == "__main__":
def halflower(data):
return int(data) datalike = b'\xb9\x0f\x00' print(list(Handle_24bit_Data(datalike, halflower)())) # print(list(hex24_bit_datalist))
# print(list(handled_data))
# print(list(hex24_tuple_list))
# print(list(hex24_bit_data))
使用python进行24bit音频处理的更多相关文章
- [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作
[原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作 转载请注明出处 一.关于为什么用pymediainfo以及pymediainfo的安装 使用python对视频/音频文件进行详 ...
- python脚本实现音频m4a格式转成MP3格式
群里看到有人询问:谁会用python将微信音频文件后缀m4a格式转成mp3格式,毫不犹豫回了句:我会.然后就私下聊起来了 解决方法介绍如下: 工具:windows系统,python2.7,转换库ffm ...
- Python中的音频和数字信号处理(DSP)
翻译自Python For Engineers. 1. 创建一个正弦波 在这个项目中,我们将创建一个正弦波,并将其保存为wav文件. 但在此之前,你应该知道一些理论. 频率:频率是正弦波重复一秒的次数 ...
- python 读取wav 音频文件的两种方式
python 中,常用的有两种可以读取wav音频格式的方法,如下所示: import scipy from scipy.io import wavfile import soundfile as sf ...
- 用python批量修改音频ID3等标签
使用的模块是eyeD3 一.eyeD3的安装 1.安装msgpack,不安装会报错distributed 1.21.8 requires msgpack, which is not installed ...
- Python音频处理(一)音频基础知识-周振洋
1.声音音频基础知识 (1)声音是由震动产生,表现为波的形式.波有频率,振幅等参数.对于声波而言:频率越大,音调越高,反之越低.振幅越大,声音越大,反之越小. (2)采样率,帧率:波是连续(无穷)的, ...
- 使用Python音频双通道分离
某些音频是双方对话,有可能需要对音频作通道的分离. 示例代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- """ 音 ...
- 太赞了!Python竟可以轻松实现音频格式无损转换
大家好,我是辰哥 辰哥在平时处理音频格式的时候,需要去下载各种音频处理软件(专业一点的软件还要收费),掌握Python技术的我们,知道Python是万能的(哈哈哈,开个玩笑).今天辰哥就来教大家用Py ...
- Python音频操作+同时播放两个音频
对于python而言,音频的操作可以使用pygame包中的sound 和 music对象,本博客主要讲解这两个对象. 1.sound对象 Sound对象适合处理较短的音乐,如OGG和WAV格式的音频文 ...
随机推荐
- Visual Studio color schemes
Vs环境主题配置 下载地址:https://studiostyl.es/ Son of Obsidian 下载:son-of-obsidian_vs2015.zip Litle monokai vst ...
- angular + socket.io+nodejs
一.服务器端: 基本和nodejs工程相同 https://www.cnblogs.com/xuanmanstein/p/10509445.html 安装socket.io npm i --save ...
- linux 内存-文档学习
ptmalloc http://www.malloc.de/en/ tcmalloc https://github.com/gperftools/gperftools jcmalloc http:// ...
- 搭建Python自动化测试环境+元素定位
https://blog.csdn.net/GitChat/article/details/79081187
- Linux压缩与解压缩文件
1 将tgz文件解压到指定目录. tar zxvf test.tgz -C 指定目录 比如:将 test.tgz 解压到 /home目录:tar zxvf test.tgz -C /home 2 将指 ...
- php获取id
private static function getClientIp() { if (getenv('HTTP_X_FORWARDED_FOR')) { $tmp = explode(',', ge ...
- php实现ZIP压缩文件解压缩
测试使用了两个办法都可以实现: 第一个:需要开启配置php_aip.dll <?php //需开启配置 php_zip.dll //phpinfo(); header("Content ...
- 【js】【图片瀑布流】js瀑布流显示图片20180315
js实现把图片用瀑布流显示,只需要“jquery-1.11.2.min.js”. js: //瀑布流显示图片 var WaterfallImg = { option: { maxWidth: 850, ...
- Analysis servlet
@WebServlet("/cdiservlet") public class NewServlet extends HttpServlet { private Message m ...
- FPM二:简单的APPLICATION-TABSTRIP(OIF)
1.新建WDA程序ZLYFPM002 2.新建视图2,窗口2,并将视图2分配到窗口2. 3.继承UIBB类IF_FPM_UI_BUILDING_BLOCK 4.创建WDA 应用程序: 5.创建WDA ...