Tôi muốn biết cách lấy thời lượng, kích thước và kích thước của tệp video được tải lên bằng PHP. Tệp có thể ở định dạng video bất kỳ.Cách nhận thời lượng, kích thước và kích thước video trong PHP?
Trả lời
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/
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];
}
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
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
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.
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>';
?>
- 1. MPI_Recv: Nhận kích thước khác với kích thước được gửi
- 2. Lấy kích thước video từ ffmpeg -i
- 3. Xác nhận kích thước tải lên tệp
- 4. Tốc độ bit và kích thước tệp video
- 5. Kích thước khối Hadoop và vấn đề kích thước tệp?
- 6. Nhận kích thước thư mục
- 7. Nhận kích thước tệp lớn trong C
- 8. Cách nhận kích thước hộp thoại?
- 9. Kích thước tệp H.264 trong 1 giờ video HD
- 10. Kích thước phiên PHP lý tưởng?
- 11. Đổi kích thước VideoView
- 12. thay đổi kích thước hình ảnh và chất lượng PNG
- 13. cách đọc chuỗi video với kích thước động?
- 14. Nhận kích thước yêu cầu POST bằng PHP
- 15. nhận kích thước tệp trong javascript
- 16. Lấy kích thước của các kích thước trong mảng
- 17. HashMap đồng thời: kiểm tra kích thước
- 18. Kích thước tối đa của phiên PHP
- 19. C/C++ nhận được kích thước struct
- 20. Cách nhận kích thước tệp quay video trực tiếp trong Android?
- 21. Tăng kích thước Multiarray
- 22. jquery nhận kích thước hình ảnh
- 23. Cách lấy kích thước mảng
- 24. Kích thước iPhone UILabelWithFont:
- 25. Lực lượng cụ thể Kích thước cấu trúc trong C
- 26. UIImageView: Thay đổi kích thước thành kích thước hình ảnh?
- 27. Django xác nhận ImageField kích thước vv
- 28. Kích thước của chuỗi
- 29. Nhận kích thước của Bitmap Android
- 30. C# Kích thước mã và thời gian thực thi Mã
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
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
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ỉ ... –