ffmpeg rtmp流进程退出

时间:2013-08-08 17:30:03

标签: ffmpeg rtmp

我正在使用ffmpeg从rtmp流中捕获jpeg图像。这是我使用的命令:

/usr/local/bin/ffmpeg -threads 4 -i rtmp://..../chat/mp4:<variable>.mp4 
-q:v 0.6 -r 15 -s 320x240 /frames/10021237_data/frame-%0999d.jpg

ffmpeg version N-55388-g9386f33 Copyright (c) 2000-2013 the FFmpeg developers
  built on Aug  8 2013 14:07:38 with gcc 4.7 (Ubuntu/Linaro 4.7.2-2ubuntu1)
  configuration: 
  libavutil      52. 41.100 / 52. 41.100
  libavcodec     55. 24.100 / 55. 24.100
  libavformat    55. 13.102 / 55. 13.102
  libavdevice    55.  3.100 / 55.  3.100
  libavfilter     3. 82.100 /  3. 82.100
  libswscale      2.  4.100 /  2.  4.100
  libswresample   0. 17.103 /  0. 17.103
Input #0, flv, from 'rtmp://......./mp4:10021237.mp4':
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: h264 (Main), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 1.92 tbr, 1k tbn, 40 tbc
    Stream #0:1: Audio: nellymoser, 44100 Hz, mono, flt
[swscaler @ 0x1910000] deprecated pixel format used, make sure you did set range correctly
Output #0, image2, to '/frames/10021237_data/frame-%0999d.jpg':
  Metadata:
    encoder         : Lavf55.13.102
    Stream #0:0: Video: mjpeg, yuvj420p, 320x240 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 90k tbn, 15 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> mjpeg)
Press [q] to stop, [?] for help

然而,几分钟后我得到这一行(在流程退出之前):

video:5264kB audio:0kB subtitle:0 global headers:0kB muxing overhead -100.000408%

“多路复用开销”究竟是什么?为什么会导致崩溃?我可以解决这个问题或者以其他方式解决这个问题(通过在退出时重新启动过程)吗?

编辑:

实际上这不是崩溃。我在流启动时从PHP CLI运行此命令:

 $command = "/usr/local/bin/ffmpeg -i ".$rtmp." -q:v 0.6 -r 12 -s 320x240 ".__DIR__."/".$dir."/".$naming." >/dev/null 2>/dev/null &";
shell_exec($command);

但是当一个人停止流式传输时,所有ffmpeg进程都会结束。有没有办法让它们独立?

即使打开2个终端并在每个终端中运行命令(使用不同的rtmp s)(对于不同的流),其中一个也会关闭另一个终端。

底线是:如何使2个ffmpeg实例独立,以便杀死一个不会杀死另一个。预期会出现这种情况吗?

0 个答案:

没有答案