回答編集履歴
1
コードを編集
answer
CHANGED
@@ -2,11 +2,22 @@
|
|
2
2
|
|
3
3
|
[ここのサンプル](http://improve-future.com/python-establish-light-server-to-share-server-command.html)に、cgiでフォームから取り出したバイナリーデータをWAVファイルとしてセーブするサンプルがあります。
|
4
4
|
|
5
|
-
上記を参考に、一旦サーバー上の一時ファイルへWAVファイルを格納
|
5
|
+
上記を参考に、一旦サーバー上の一時ファイルへWAVファイルを格納し、その後waveオブジェクトを生成し、フレームレートやフレーム数を取り出すといった部分のみコードを書いてみました。
|
6
6
|
|
7
7
|
```python
|
8
|
+
...
|
9
|
+
waveFile = form['file']
|
10
|
+
# save file
|
11
|
+
fout = file("tmp/tmp0000.wav", "wb")
|
12
|
+
while True:
|
13
|
+
chunk = waveFile.file.read(1024 * 1024 * 10)
|
14
|
+
if not chunk:
|
15
|
+
break
|
16
|
+
fout.write(chunk)
|
17
|
+
fout.close()
|
8
|
-
//
|
18
|
+
//これでサーバーの'tmp/tmp0000.wav'にWAVファイルができている
|
9
|
-
wf = wave.open('
|
19
|
+
wf = wave.open('tmp/tmp0000.wav')
|
10
20
|
length = float(wf.getnframes()) / wf.getframerate() # 波形長さ(秒
|
11
21
|
...
|
12
|
-
```
|
22
|
+
```
|
23
|
+
上記はformにfileが指定されていなかった場合のエラーチェックなどは省略しています。CGIをテストできる環境がないため間違いなどありましたらご容赦ください。
|