[linux] разбить поток и выполнить операцию с частями
| split -b 1024k - stream
хотелось бы так : (сразу кодировать файлы по мере поступления)
arecord | queuestream -b 1024 "./lame-wrap.sh"
lamewrap.sh: lame - `date +%H`.mp3
придется, видимо, писать самому на каком-нить С...
Получающиеся файлы можно на лету хватать и перекодировать. При этом, если по какой-то причине данные не будут успевать обрабатываться в риалтайм, они будут накапливаться на диске. В случае с пайпами - переполнение буфера и потеря данных.
Получающиеся файлы можно на лету хватать и перекодировать.а как это сделать?
я себе это даже концептуально не представляю...
Вот, например, простая функция на питоне.
Еще проще в цикле натравливать обрабатывающую программу на ls | head -1
Ну и удалять потом, конечно.
Еще проще в цикле натравливать обрабатывающую программу на ls | head -1
Ну и удалять потом, конечно.
split туда сваливает файлы, а я слежу, когда они появляются, когда заканчивается запись - травлю на кодер
или даже читаю недописанный файл аккуратно и отдаю его кодеру - это правда на шелле не напишешь толково...
как-то очень геморно, имхо...
хотелось бы что-нить попроще
[xenon andrei]$ echo sdfgdgkadhfsadkfghfjfhsadlkfjhsdfa | (fori=0;i<10;i++; do echo -n $i:; head -c 3; echo; done)
0:sdf
1:gdg
2:kad
3:hfs
4:adk
5:fgh
6:fjf
7:hsa
8:dlk
9:fjh
трудность была в том, что я не понимал, что head оставляет оставшуюся часть потока
Оставить комментарий
a10063
короче, идет у меня аудиопоток по пайпу, например, от arecordзадача состоит в разбиении потока на части (определенной длины или по времени, как-нибудь хотя бы) и выполнить операцию над кусками (покодить, например)
как сделать? что-то не приходит на ум...
чтоб было ясней, будет использоваться для записи радио, распихивая, например, каждый час в отдельный файл...
важно, чтобы не было потери битов потока