codeigniter教程之上传视频并使用ffmpeg转flv示例


在CodeIgniter中,上传视频文件并使用FFmpeg将其转换为FLV格式通常涉及到几个步骤:设置视频上传功能、处理上传的文件,以及调用FFmpeg进行格式转换。这里我将提供一个简化的示例来指导你完成这些步骤。

### 步骤 1: 设置视频上传

首先,你需要在CodeIgniter中设置一个上传表单,并使用其上传库来处理文件上传。

**View (upload_form.php)**:


<!DOCTYPE html>
<html>
<head>
    <title>Upload Video</title>
</head>
<body>

<?= form_open_multipart('upload/do_upload'); ?>

<input type="file" name="userfile" size="20" />
<br /><br />

<input type="submit" value="upload" />

</form>

</body>
</html>

**Controller (Upload.php)**:


class Upload extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->helper(array('form', 'url'));
    }

    public function do_upload() {
        $config['upload_path']          = './uploads/';
        $config['allowed_types']        = 'mp4|mov|avi|mpeg|flv';
        $config['max_size']             = 1000; // 1MB
        $config['max_width']            = 1024;
        $config['max_height']           = 768;

        $this->load->library('upload', $config);

        if ( ! $this->upload->do_upload('userfile')) {
            $error = array('error' => $this->upload->display_errors());

            $this->load->view('upload_form', $error);
        } else {
            $data = array('upload_data' => $this->upload->data());

            // 假设上传成功,文件信息存储在$data['upload_data']
            $filename = $data['upload_data']['file_name'];
            $this->convert_to_flv($filename);

            echo "File uploaded successfully and converted to FLV.";
        }
    }

    private function convert_to_flv($filename) {
        // 确保你的服务器安装了FFmpeg
        $command = "ffmpeg -i uploads/{$filename} -acodec copy -vcodec copy uploads/{$filename}.flv";
        exec($command, $output, $return_var);

        if ($return_var !== 0) {
            // 处理错误
            echo "Error converting video to FLV: " . implode("\n", $output);
        }
    }
}

### 注意:

1. **FFmpeg安装**:确保你的服务器安装了FFmpeg。这通常通过包管理器(如apt-get, yum等)或直接从源代码编译安装。

2. **安全性**:上面的示例代码未包含任何安全验证,如防止文件上传漏洞。在实际应用中,你应该添加适当的验证和错误处理。

3. **路径问题**:确保`$config['upload_path']`和`exec`命令中的路径正确无误。

4. **权限**:确保Web服务器有权限读取上传目录和写入转换后的文件。

这个示例提供了一个基本的框架,展示了如何在CodeIgniter中上传视频文件并使用FFmpeg进行格式转换。你可以根据自己的需求调整和优化这个流程。