无法探测

时间:2016-08-11 22:00:58

标签: php ffmpeg cakephp-3.0

我在带有cakephp3的windows上使用php-ffmpeg,遇到了一个问题:

  

无法探测/var/www/blogchild.dev/webroot/uploads/records//Танецдовольноготеннисиста.mp4

MultimediaController

<?php
namespace App\Controller;

use App\Controller\AppController;

class MultimediaController extends AppController
{

    public function initialize()
    {
        parent::initialize(); // TODO: Change the autogenerated stub
        $this->Auth->allow(['index', 'addvideo']);
        $this->loadModel('Posts');
        $this->loadComponent('File');
        $this->loadComponent('Flash');
        $this->loadComponent('Upload');
    }

    public function addvideo()
    {
        $this->viewBuilder()->template('addvideo');
        $posts = $this->Posts->newEntity();
//        $posts = $this->MsPosts->find()->toArray();
//        dump($posts);
//        die();
        if ($this->request->is('post')) {
            $data = $this->request->data;
            $data['mentor_id'] = '1';
            $data['nbr_of_views'] = '0';
            $data['nbr_of_loves'] = '0';
            $data['nbr_of_smiles'] = '0';
            $data['mentor_id'] = '1';
            $data['child_id'] = '1';

            $post = $this->Posts->patchEntity($posts, $data);
//            var_dump($data);
//            die();
//            debug($this->MsPosts->save($post));die();

//                $upload = $this->File->uploadFile($this->request->data['file'], $post['id']);
//                $post->file = $upload['url'];
            if (!empty($this->request->data['file']['name'])) {
                $path = '/uploads' . DS . 'records' . DS . $post->id;
                $this->uploadFile($_FILES['file'], $path, $post->id);
                $post->file = $path . DS . $_FILES['file']['name'];
                $this->Posts->save($post);
            } else {
                $this->Posts->save($post);
            }
            $this->Flash->success(__('The post saved'));
            return $this->redirect(['action' => 'addvideo']);

AppController的

<?php
/**
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link      http://cakephp.org CakePHP(tm) Project
 * @since     0.2.9
 * @license   http://www.opensource.org/licenses/mit-license.php MIT License
 */
namespace App\Controller;

use Cake\Controller\Controller;
use Cake\Event\Event;
use Cake\Filesystem\Folder;
use FFMpeg\Coordinate\TimeCode;
use FFMpeg\FFMpeg;
use Cake\Controller\Component;
use Cake\I18n\I18n;

/**
 * Application Controller
 *
 * Add your application-wide methods in the class below, your controllers
 * will inherit them.
 *
 * @link http://book.cakephp.org/3.0/en/controllers.html#the-app-controller
 */
class AppController extends Controller
{


    /**
     * Initialization hook method.
     *
     * Use this method to add common initialization code like loading components.
     *
     * e.g. `$this->loadComponent('Security');`
     *
     * @return void
     */
    public function initialize()
    {

        parent::initialize();

        $this->loadComponent('Cookie');
        $this->loadComponent('RequestHandler');
        $this->loadComponent('Flash');
        $provider = $this->request->query('provider');
        //if ($provider === null) {
        $this->loadComponent('Auth', [
            'authenticate' => [
                'Form' => [
                    'finder' => 'auth',
                    'fields' => [
                        'username' => 'email',
                        'password' => 'password'
                    ],
                    'loginAction' => [
                        'controller' => 'Auth',
                        'action' => 'login'
                    ],

                    'loginRedirect' => [
                        'controller' => 'Auth',
                        'action' => 'login'
                    ],

                    'logoutRedirect' => [
                        'controller' => 'Auth',
                        'action' => 'login'
                    ]
                ],
                'ADmad/HybridAuth.HybridAuth' => [
                    // All keys shown below are defaults
                    'fields' => [
                        'provider' => 'provider',
                        'openid_identifier' => 'openid_identifier',
                        'email' => 'email'

                    ],
                    'profileModel' => 'ADmad/HybridAuth.SocialProfiles',
                    'profileModelFkField' => 'user_id',

                    // The URL Hybridauth lib should redirect to after authentication.
                    // If no value is specified you are redirect to this plugin's
                    // HybridAuthController::authenticated() which handles persisting
                    // user info to AuthComponent and redirection.
                    'hauth_return_to' => null,

                    'loginRedirect' => [
                        'controller' => 'Auth',
                        'action' => 'login'
                    ],

                    'logoutRedirect' => [
                        'controller' => 'Auth',
                        'action' => 'login'
                    ]
                ],
            ],



        ]);
//        } else {
//            $this->loadComponent('Auth', [
//                'authenticate' => [
//                    'Form',
//
//
//                ]
//
//            ]);
//        }

    }

    /**
     * Before render callback.
     *
     * @param \Cake\Event\Event $event The beforeRender event.
     * @return void
     */
    public function beforeRender(Event $event)
    {
        if (!array_key_exists('_serialize', $this->viewVars) &&
            in_array($this->response->type(), ['application/json', 'application/xml'])
        ) {
            $this->set('_serialize', true);
        }

        if ($this->request->session()->read('Auth.User')) {
            $this->set('loggedIn', true);
        } else {
            $this->set('loggedIn', false);
        }
    }

    protected function uploadFile(array $file, $path, $postId)
    {
        $objFile = $file;
        $path = $_SERVER['DOCUMENT_ROOT'] . $path;
        //@TODO check file size|Return error
        $folder = new Folder();
        $folder->create($path, 0755);

        move_uploaded_file($objFile['tmp_name'], $path . DS . $objFile['name']);

        $ffmpeg = FFMpeg::create(
            array(
                'ffmpeg.binaries' => '/usr/bin/ffmpeg',
                'ffprobe.binaries' => '/usr/bin/ffprobe',
                'timeout' => 3600, // The timeout for the underlying process
                'ffmpeg.threads' => 12,   // The number of threads that FFMpeg should use
            )
        );
        $temp = explode('.', $objFile['name']);
        $video = $ffmpeg->open(WWW_ROOT . 'uploads/records' . DS . $postId . DS . $objFile['name']);
        $frame = $video->frame(TimeCode::fromSeconds(1));
        $userPath = 'uploads/records' . DS . $postId . DS . $temp[0] . '.jpg';
        $frame->save(WWW_ROOT . $userPath);
    }

警告!!!!!帮我...... enter image description here

1 个答案:

答案 0 :(得分:1)

您需要确保您尝试上传的文件部分具有正确的权限

即ubuntu sudo chmod -R 777 your-dir-name