2011-01-31 35 views

Trả lời

55

getID3 hỗ trợ các định dạng video. Xem: http://getid3.sourceforge.net/

Edit: Vì vậy, trong định dạng mã, mà muốn được như:

include_once('pathto/getid3.php'); 
$getID3 = new getID3; 
$file = $getID3->analyze($filename); 
echo("Duration: ".$file['playtime_string']. 
"/Dimensions: ".$file['video']['resolution_x']." wide by ".$file['video']['resolution_y']." tall". 
"/Filesize: ".$file['filesize']." bytes<br />"); 

Lưu ý: Bạn phải bao gồm các lớp getID3 trước khi điều này sẽ làm việc! Xem liên kết ở trên.

Chỉnh sửa: Nếu bạn có khả năng sửa đổi cài đặt PHP trên máy chủ của mình, một phần mở rộng PHP cho mục đích này là ffmpeg-php. Xem: http://ffmpeg-php.sourceforge.net/

+0

Hi aendrew, Cảm ơn nhưng điều này làm việc tốt cho các tập tin âm thanh nhưng không hoạt động chính xác trên các tập tin video như mp4, wmv vv ... Xin vui lòng cho tôi biết bất kỳ giải pháp khác ngoài này. – Chandan

+1

Sử dụng thư viện khác, sau đó hoặc phần mở rộng PHP như ffmpeg-php (http://ffmpeg-php.sourceforge.net/) – aendrew

+0

vấn đề với getID3 và ffmpeg là gì ?? lý do tại sao họ không tạo giao diện người dùng phù hợp để đọc trở nên rất thân thiện ... bị mờ dần bằng cách xem trang chủ của getID3 chỉ ... –

15

Nếu bạn đã FFMPEG được cài đặt trên máy chủ của bạn (http://www.mysql-apache-php.com/ffmpeg-install.htm), nó có thể để có được các thuộc tính của video của bạn bằng cách sử dụng lệnh "-vstats" và phân tích kết quả với một số regex - như trong ví dụ dưới đây. Sau đó, bạn cần tệp PHP funtion filesize() để lấy kích thước.

$ffmpeg_path = 'ffmpeg'; //or: /usr/bin/ffmpeg , or /usr/local/bin/ffmpeg - depends on your installation (type which ffmpeg into a console to find the install path) 
$vid = 'PATH/TO/VIDEO'; //Replace here! 

if (file_exists($vid)) { 

    $finfo = finfo_open(FILEINFO_MIME_TYPE); 
    $mime_type = finfo_file($finfo, $vid); // check mime type 
    finfo_close($finfo); 

    if (preg_match('/video\/*/', $mime_type)) { 

     $video_attributes = _get_video_attributes($vid, $ffmpeg_path); 

     print_r('Codec: ' . $video_attributes['codec'] . '<br/>'); 

     print_r('Dimension: ' . $video_attributes['width'] . ' x ' . $video_attributes['height'] . ' <br/>'); 

     print_r('Duration: ' . $video_attributes['hours'] . ':' . $video_attributes['mins'] . ':' 
       . $video_attributes['secs'] . '.' . $video_attributes['ms'] . '<br/>'); 

     print_r('Size: ' . _human_filesize(filesize($vid))); 

    } else { 
     print_r('File is not a video.'); 
    } 
} else { 
    print_r('File does not exist.'); 
} 

function _get_video_attributes($video, $ffmpeg) { 

    $command = $ffmpeg . ' -i ' . $video . ' -vstats 2>&1'; 
    $output = shell_exec($command); 

    $regex_sizes = "/Video: ([^,]*), ([^,]*), ([0-9]{1,4})x([0-9]{1,4})/"; // or : $regex_sizes = "/Video: ([^\r\n]*), ([^,]*), ([0-9]{1,4})x([0-9]{1,4})/"; (code from @1owk3y) 
    if (preg_match($regex_sizes, $output, $regs)) { 
     $codec = $regs [1] ? $regs [1] : null; 
     $width = $regs [3] ? $regs [3] : null; 
     $height = $regs [4] ? $regs [4] : null; 
    } 

    $regex_duration = "/Duration: ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}).([0-9]{1,2})/"; 
    if (preg_match($regex_duration, $output, $regs)) { 
     $hours = $regs [1] ? $regs [1] : null; 
     $mins = $regs [2] ? $regs [2] : null; 
     $secs = $regs [3] ? $regs [3] : null; 
     $ms = $regs [4] ? $regs [4] : null; 
    } 

    return array('codec' => $codec, 
     'width' => $width, 
     'height' => $height, 
     'hours' => $hours, 
     'mins' => $mins, 
     'secs' => $secs, 
     'ms' => $ms 
    ); 
} 

function _human_filesize($bytes, $decimals = 2) { 
    $sz = 'BKMGTP'; 
    $factor = floor((strlen($bytes) - 1)/3); 
    return sprintf("%.{$decimals}f", $bytes/pow(1024, $factor)) . @$sz[$factor]; 
} 
+1

Cảm ơn bạn rất nhiều vì điều này! Tôi thấy rằng regex được cung cấp đã giảm do video thử nghiệm của tôi có thêm dấu phẩy trong phần codec. Điều đó nói rằng, đây là bản sửa lỗi cho bất kỳ ai có cùng vấn đề: '$ regex_sizes ="/Video: ([^ \ r \ n] *), ([^,] *), ([0-9] {1,4 }) x ([0-9] {1,4})/";' cũng, đường dẫn ffmpeg của tôi là: '/ usr/local/bin/ffmpeg' (gõ' ffmpeg' vào bảng điều khiển để tìm đường dẫn cài đặt). Đây là một mẫu Regexr: http://regexr.com/3fs8d – 1owk3y

+0

Cảm ơn bạn! Tôi đã cập nhật câu trả lời của mình cho phù hợp. – F3L1X79

4

Nếu bạn sử dụng Wordpress bạn chỉ có thể sử dụng wordpress xây dựng trong chức năng với id video được cung cấp wp_get_attachment_metadata($videoID):

wp_get_attachment_metadata($videoID); 

đã giúp tôi rất nhiều. thats tại sao tôi đăng nó, mặc dù các câu hỏi đã được hỏi trong 2011.

0

https://github.com/JamesHeinrich/getID3 tải getid3 zip và vì chỉ đặt tên getid3 thư mục sao chép dán trong thư mục dự án và sử dụng nó như dưới đây cho thấy ...

<?php 
     require_once('/fire/scripts/lib/getid3/getid3/getid3.php'); 
     $getID3 = new getID3(); 
     $filename="/fire/My Documents/video/ferrari1.mpg"; 
     $fileinfo = $getID3->analyze($filename); 

     $width=$fileinfo['video']['resolution_x']; 
     $height=$fileinfo['video']['resolution_y']; 

     echo $fileinfo['video']['resolution_x']. 'x'. $fileinfo['video']['resolution_y']; 
     echo '<pre>';print_r($fileinfo);echo '</pre>'; 
?> 
Các vấn đề liên quan