1

我有一个云服务器,我正在其中运行 drupal 7。出于某种原因,我必须在服务器端使用 VLC 播放器进行实时视频录制。我可以执行此运行命令行命令。但我想知道我是否可以在drupal中为客户提供一个网页,客户可以在其中添加实时视频url,当它点击提交时,我的命令行命令在服务器终端中运行......类似的事情请告诉我是否可能与否

4

2 回答 2

1

Drupal 部分实际上是最简单的部分。您将需要创建一个自定义模块来实现hook_menu()为您的表单提供一个页面(使用表单 API构建)

function MODULE_menu() {
  return array(
    'encode_video' => array(
      'page callback' => 'drupal_get_form',
      'page arguments' => array('MODULE_encode_video_form'),
      'access arguments' => 'encode video'
    )
  );
}

function MODULE_encode_video_form($form, &$form_state) {
  $form = array(
    'video_url' => array(
      '#type' => 'textfield', 
      '#title' => t('Video URL'), 
      '#size' => 80, 
      '#required' => TRUE,
    ),
    'submit' =>  array(
      '#type' => 'submit',
      '#value' => t('Encode'),
    ),
  );
  return $form;
}

function MODULE_encode_video_form_validate($form, &$form_state) {
  // Validate and sanitize $form_state['values']['video_url'] here...
}

function MODULE_encode_video_form_submit($form, $form_state) {
  $url = $form_state['values']['video_url'];
  // Start video encoding here...
}

编码视频是最难的部分。任何用于从 PHP 直接启动视频编码过程的方法都必须仔细编写。例如,它必须处理进程管理以避免使用过多的编码对服务器造成过多的负担。它还必须确保进程在后台正确启动,以避免阻塞 PHP 进程(以避免超时)。一个可能更好的解决方案是使用某种后台进程管理器对编码进行排队。Gearman在这里可能是一个简单而干净的解决方案。它还允许您以更适合长时间运行的视频编码的独立语言编写视频编码过程。目前正在开发的Gearman 集成模块可帮助其在 Drupal 中的使用,但这不是必需的。

于 2012-06-10T15:06:29.473 回答
0

exec并将shell_exec帮助您入门。

http://php.net/manual/en/function.exec.php

它们允许您从命令行执行任何 linux 命令。

小心!确保您不是从字符串动态创建命令。这可以让你获得最大的 pwnage。

于 2012-06-09T19:08:11.483 回答