0

I am using ffmpeg to convert a video file to mp4. here is my code

    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>";
} 

The code works fine on my localhost (Windows 7 + wamp).. But on live server , only $command is echoed.. and script is terminated. The output file is generated but it is only 4.5MB (it should be around 17 MB) and not complete... and sometime I get the following output..

    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

the value printed for $status is 137 in this case.

Any help is really appreciated.

4
  • Do not use -sameq in this case. It does not mean "same quality" and is not designed to be used between formats that do no share the same quantizer scale meaning that it should not be used when going from foo to libx264 (since it has a unique quantizer scale). Use -crf instead. Commented Sep 11, 2012 at 17:43
  • BTW where can I find the description of these parameters. The ffmpeg documentation does not tell anything about these (-sameq, -crf etc)... Commented Sep 12, 2012 at 14:53
  • See the sections on -crf at FFmpeg: The ultimate Video and Audio Manipulation Tool and FFmpeg and x264 Encoding Guide. Commented Sep 12, 2012 at 20:14
  • Thanks LordNeckbeard! that was of great help... Commented Sep 13, 2012 at 19:00

1 Answer 1

1

137 means it got a signal 9. So you must have a program checking on your live server for how much memory / CPU a single process can consume. If it exceeds that limit, it will be terminated, which is what is happening to your process.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.