teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

試したこと の追記

2021/10/27 23:18

投稿

kio123
kio123

スコア0

title CHANGED
File without changes
body CHANGED
@@ -13,9 +13,11 @@
13
13
  ?>
14
14
  ```
15
15
 
16
+ シェルスクリプトはPHPファイルと同ディレクトリにあります。
17
+
16
18
  ```sh
17
19
  #!/bin/bash
18
- #rec_start.sh
20
+ #filename: rec_start.sh
19
21
  cd /home/pi/mjpg-streamer/mjpg-streamer-experimental/REC
20
22
  ffmpeg -i http://127.0.0.1:8080/?action=stream -an -vcodec flv $(date "+%Y_%m_%d_%H_%M_%S").flv
21
23
 
@@ -29,12 +31,17 @@
29
31
  ```
30
32
 
31
33
  ### 試したこと
34
+ rec_start.shをコマンドライン上で実行した場合、継続して処理が実行され続けることから、
35
+ PHP関数のecec()だとハングしている?と仮定しました。
32
36
 
37
+ https://www.php.net/function.exec より引用
38
+ > プログラムがこの関数で始まる場合、 バックグラウンドで処理を続けさせるには、 プログラムの出力をファイルや別の出力ストリームにリダイレクトする必要があります。 そうしないと、プログラムが実行を終えるまで PHP はハングしてしまいます。
39
+
33
40
  sh のバックグラウンド実行 (コマンドの後ろに、&アンドをつけて実行)
34
- → $return_var = 0 となったが動画ファイルは生成されていませんでした。
35
41
 
36
42
  ```sh
37
43
  cd /home/pi/mjpg-streamer/mjpg-streamer-experimental/REC
38
44
  ffmpeg -i http://127.0.0.1:8080/?action=stream -an -vcodec flv $(date "+%Y_%m_%d_%H_%M_%S").flv &
39
45
 
40
- ```
46
+ ```
47
+ 実行結果: $return_var = 0 となったが動画ファイルは生成されていませんでした。