You are here

function ffmpeg_auto_convert in Video 6.3

Implementing hook_auto_convert();

Parameters

<type> $job:

File

plugins/ffmpeg.inc, line 218
Provide a api for video conversion and auto thumbnailing using ffmpeg.

Code

function ffmpeg_auto_convert(&$job) {
  $videofile = escapeshellarg($job->filepath);

  // escape file name for safety
  $convfile = tempnam(file_directory_temp(), 'video-rendering');
  $audiobitrate = variable_get('video_ffmpeg_helper_auto_cvr_audio_bitrate', 64);
  $videobitrate = variable_get('video_ffmpeg_helper_auto_cvr_video_bitrate', 200);
  $size = _video_render_get_size();
  $converter = variable_get('video_transcoder_path', '/usr/bin/ffmpeg');
  $options = preg_replace(array(
    '/%videofile/',
    '/%convertfile/',
    '/%audiobitrate/',
    '/%size/',
    '/%videobitrate/',
  ), array(
    $videofile,
    $convfile,
    $audiobitrate,
    $size,
    $videobitrate,
  ), variable_get('video_ffmpeg_helper_auto_cvr_options', '-y -i %videofile -f flv -ar 22050 -ab %audiobitrate -s %size -b %videobitrate -qscale 1 %convertfile'));

  // set to the converted file output
  $job->convfile = $convfile;
  $command = VIDEO_RENDERING_NICE . " {$converter} {$options}";

  //print('executing ' . $command); die;
  watchdog('video_render', 'executing: ' . $command, array(), WATCHDOG_DEBUG);

  //   watchdog('video_render', 'Starting : ' . time());

  //execute the command
  ob_start();
  passthru($command . " 2>&1", $command_return);
  $command_output = ob_get_contents();
  ob_end_clean();

  //  watchdog('video_render', 'Completed');

  //print $command_output;
  if (!file_exists($job->convfile) || !filesize($job->convfile)) {
    watchdog('video_render', 'video conversion failed. ffmpeg reported the following output: ' . $command_output, array(), WATCHDOG_ERROR);

    //    _video_render_set_video_encoded_fid($job->nid, $job->vid, -1);
    //    _video_render_job_change_status($job->nid, $job->vid, VIDEO_RENDERING_FAILED);
  }
  else {
    $file_name = basename($job->filename . ".flv");
    $file = new stdClass();
    $file->uid = $job->uid;
    $file->status = FILE_STATUS_PERMANENT;
    $file->filename = basename($file_name);
    $file->filepath = $job->convfile;
    $file->filemime = file_get_mimetype($file_name);
    $file->filesize = filesize($job->convfile);
    $file->timestamp = time();
    $job->converted = $file;
  }
}