Форум сайта python.su
0
Всем привет.
Подскажите, какой модуль поможет мне в решении данной задачи.
Есть файл аудио, например filename.wav, определенной кодировки. Мне нужно этот файл представить в виде массива байтов и отправлять порциями в TCP сокет.
С модулем socket я разобрался, а вот каким модулем мне работать с аудиофайлом не пойму.
Рассматривал wave, pyaudio, librosa
Офлайн
568
А, простите, какое дело протоколу TCP до того, что это именно аудио-файл? Ну байты и байты, одни байты от других ничем не отличаются, будь то музыка, текст, программа или картинка. Это работа клиента думать, что с этими байтами делать, а не сервера.
Офлайн
0
Т.е если я начну работу вот так, то я смогу дальше это определить в TCP?
f = open('filename.wav', 'rb') song = f.read()
Офлайн
568
Дайте хоть одну причину, почему нет.
Офлайн
0
FishHook
я не знаю, поэтому и спрашиваю)
Офлайн
857
rs-qrskЧитай блоками, для этого в .read() подавай число - размер блока в байтах (октетах). Можно сделать генератор, который будет из файла читать поблочно и возвращать куски, пока файл не закончится.
Т.е если я начну работу вот так, то я смогу дальше это определить в TCP?
>>> def get_blocks(fname, block_size): ... with open(fname, 'rb') as fin: ... block = fin.read(block_size) ... while block != b'': ... yield block ... block = fin.read(block_size) ... >>> it = get_blocks('/etc/passwd', 4) >>> for _ in range(3): ... block = next(it) ... print(block) ... b'root' b':x:0' b':0:r' >>> for block in get_blocks('/home/guest/.bash_profile', 15): ... print(block) ... b'# .bash_profile' b'\n\n# Get the ali' b'ases and functi' b'ons\nif [ -f ~/.' b'bashrc ]; then\n' b'\t. ~/.bashrc\nfi' b'\n\n# User specif' b'ic environment ' b'and startup pro' b'grams\n\nPATH=$PA' b'TH:$HOME/.local' b'/bin:$HOME/bin:' b'/usr/local/bin\n' b'\nexport PATH\n\ne' b'xport PATH="$HO' b'ME/.cargo/bin:$' b'PATH"\n' >>>
Офлайн
0
py.user.next, спасибо большое)
Я пока написал свой вариант, но попробую и так. 
Офлайн