2016-08-11 36 views
0

我使用的是与cakephp3窗口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

+0

“无法探测”通常基本上是“找不到文件” –

+1

'records //Танецдовольноготеннисиста.mp4'如果记录和文件名之间真的有两个斜线? ''// – Bobby

回答

0

,你需要确保你要上传到了正确的权限

即在Ubuntu sudo的搭配chmod -R 777你-DIR-名的文件部分

0

检查视频文件路径。我也得到了同样的错误,问题是视频文件路径。