php - ffmpeg 终止而没有任何输出

标签 php video ffmpeg

我正在使用 ffmpeg 将视频文件转换为 mp4。这是我的代码

    echo "converting ".basename($src)." --- to --- ".basename($dest).".mp4...<br />";
$command = FFMPEG.' -i ' . $src . ' -sameq -strict -2 -vcodec libx264 -ar 22050 -y ' . $dest.'.mp4 2>&1';   //
echo $command.'<br>';

exec($command,$output,$status);
echo '<pre>',join('<br>',$output),'</pre><br>';

if($status == 0) {              // Success
    echo 'Successfully converted to MP4!<br />';
} else {
    echo $status."<br>failed<br>";
} 

该代码在我的本地主机(Windows 7 + wamp)上运行良好。但在实时服务器上,只有 $command 被回显......并且脚本被终止。生成了输出文件,但它只有 4.5MB(应该是 17MB 左右)并且不完整......有时我得到以下输出......
    ffmpeg version 0.11.1 Copyright (c) 2000-2012 the FFmpeg developers  built on Sep 10 2012 00:38:24 with gcc 4.1.2 20080704 (Red Hat 4.1.2-52)  configuration: --prefix=/home/one01qsc/local --extra-cflags='-L/home/one01qsc/local/lib/ -I /home/one01qsc/local/include/' --extra-ldflags='-L/home/one01qsc/local/lib/ -Wl,-rpath,/home/one01qsc/local/lib/' --enable-libmp3lame --enable-libvorbis --enable-shared --disable-yasm --enable-libtheora --enable-libx264 --enable-gpl
  libavutil      51. 54.100 / 51. 54.100
  libavcodec     54. 23.100 / 54. 23.100
  libavformat    54.  6.100 / 54.  6.100
  libavdevice    54.  0.100 / 54.  0.100
  libavfilter     2. 77.100 /  2. 77.100
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0. 15.100 /  0. 15.100
  libpostproc    52.  0.100 / 52.  0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/one01qsc/public_html/temp/pending/1455-testing-mobidick.mov':
  Metadata:
    major_brand     : qt
    minor_version   : 537199360
    compatible_brands: qt
    creation_time   : 2012-09-08 16:00:41
  Duration: 00:00:23.13, start: 0.490000, bitrate: 6028 kb/s
    Stream #0:0: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 5331 kb/s, 29.97 fps, 29.97 tbr, 60k tbn, 59.94 tbc
    Metadata:
      creation_time   : 2012-09-08 16:00:41
      handler_name    : Apple Alias Data Handler
    Stream #0:1: Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, s16, 192 kb/s
    Metadata:
      creation_time   : 2012-09-08 16:00:41
      handler_name    : Apple Alias Data Handler
[buffer @ 0x2405ce0] w:1920 h:1080 pixfmt:yuv420p tb:1/60000 sar:0/1 sws_param:flags=2
[buffersink @ 0x2429ec0] No opaque field provided
[aformat @ 0x23fa560] auto-inserting filter 'auto-inserted resampler 0' between the filter 'src' and the filter 'aformat'
[aresample @ 0x2402e60] chl:stereo fmt:s16 r:44100Hz -> chl:stereo fmt:flt r:22050Hz
[libx264 @ 0x24288e0] using cpu capabilities: none!
[libx264 @ 0x24288e0] profile High, level 4.0
[libx264 @ 0x24288e0] 264 - core 128 - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=24 lookahead_threads=4 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to '/home/one01qsc/public_html/temp/1455-testing-mobidick.mp4':
  Metadata:
    major_brand     : qt
    minor_version   : 537199360
    compatible_brands: qt
    creation_time   : 2012-09-08 16:00:41
    encoder         : Lavf54.6.100
    Stream #0:0: Video: h264 (![0][0][0] / 0x0021), yuv420p, 1920x1080, q=-1--1, 30k tbn, 29.97 tbc
    Metadata:
      creation_time   : 2012-09-08 16:00:41
      handler_name    : Apple Alias Data Handler
    Stream #0:1: Audio: aac (@[0][0][0] / 0x0040), 22050 Hz, stereo, flt, 128 kb/s
    Metadata:
      creation_time   : 2012-09-08 16:00:41
      handler_name    : Apple Alias Data Handler
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> libx264)
  Stream #0:1 -> #0:1 (aac -> aac)
Press [q] to stop, [?] for help
frame=   18 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=   0.0kbits/s

在这种情况下,为 $status 打印的值是 137。

非常感谢任何帮助。

最佳答案

137 表示它收到了信号 9。因此,您必须在实时服务器上安装一个程序来检查单个进程可以消耗多少内存/CPU。如果超过该限制,它将被终止,这就是您的进程正在发生的事情。

关于php - ffmpeg 终止而没有任何输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12373844/

相关文章:

php - 从 "GET"index.php?id=XX 编辑 mysql 数据库

php - 如何显示数据库中存储的所有图像

apache-flex - 在 Flash 中预加载多个视频?在弹性?

c# - opencvdotnet 和 FFMPEG - 是否有任何集成选项?

java - 使用 VLCJ 播放视频时不显示文件路径

c++ - 使用非英文文件名调用 avio_open 函数无效

php - Laravel(5.6) 按最后一条消息 Eloquent 排序

php - php中的base64编码/解码

python - scikit-video 中 FFmpegReader/FFmpegWriter 的基本使用 "pass-through"

compiler-errors - CoCreateInstanceFromApp 未使用 WinRT + Visual Studio 2013 定义