سلام
برای به دست آوردن زمان یک ویدئو از چه پکیجی استفاده میکنید؟
بدون پکیج چطوری میشه محاسبه کرد؟
اگر راه حل بدون پکیج بدید که عالیه چون ارزش نداره به خاطر همین یه کار پکیج نصب کنم و یکی یکی تست کنم ببینم کدوم خوبه.
چرا کد زیر این را به ما نمیده؟
$request->file('file')
@mohaligateway
از راهنمایی هاتون بسیار متشکرم.
در نهایت به این نتیجه رسیدم با جاوا اسکریپت هندل کنم.
<input type="hidden" value="0" name="video_duration" id="video_duration">
javascript code in blade
// create the video element but don't add it to the page
var vid = document.createElement('video');
document.querySelector('#customFile').addEventListener('change', function() {
// create url to use as the src of the video
var fileURL = URL.createObjectURL(this.files[0]);
vid.src = fileURL;
// wait for duration to change from NaN to the actual duration
vid.ondurationchange = function() {
$('#video_duration').val(this.duration);
};
});
و برای تبدیل به ساعت دقیقه و ثانیه یک helper میسازیم.
<?php
if (!function_exists('helper_ConvertSecondToMin')) {
function Convert_SecondToMin($totalSeconds) {
if ($totalSeconds == '0') {
return 0;
}else{
$hours = floor($totalSeconds / 3600);
$minutes = floor(($totalSeconds - ($hours * 3600)) / 60);
$seconds = $totalSeconds - ($hours * 3600) - ($minutes * 60);
// round seconds
$seconds = round($seconds * 100 ) / 100;
$result1 = ($hours < 10 ? "0" + $hours : $hours);
$result2 = ($minutes < 10 ? "0" + $minutes : $minutes);
$result3 = ($seconds < 10 ? "0" + $seconds : $seconds);
return $result1.':'.$result2.':'.floor($result3);
}
}
}
سلام
request file تنها فایل رو جابه جا می کنه قادر به خوندن فایل با فرمت های مختلف نیست. مگه vlc هستش 😀. با استفاده از کد نویسی جاوا اسکریپت می تونید این کار رو انجام بدید.
// create the video element but don't add it to the page
var vid = document.createElement('video');
document.querySelector('#input').addEventListener('change', function() {
// create url to use as the src of the video
var fileURL = URL.createObjectURL(this.files[0]);
vid.src = fileURL;
// wait for duration to change from NaN to the actual duration
vid.ondurationchange = function() {
alert(this.duration);
};
});
کد html
<input type="file" id="input">
public function store(Request $request)
{
$this->validate($request, [
'file' => 'required|mimes:mp4',
]);
$new_file_data = [
'file_type' => $request->file('file')->getMimeType(),
'file_size' => $request->file('file')->getSize(),
];
}
برای مثال در کد بالا با استفاده از getSize میتوان از request file میزان سایز فایل رو گرفت!
پس این جمله زیر از شما درست نیست.
request file تنها فایل رو جابه جا می کنه قادر به خوندن فایل با فرمت های مختلف نیست.
سلام
برای گرفتن زمان ویدیوی آپلود شده از ffmpeg استفاده کنید. ابزاری است تحت cmd که از دستوراتش در php و laravel میشه استفاده کرد.
ابتدا باید ffmpeg رو روی سیستمت نصب کنی فایل .exe رد دانلود و نصب کن. داستانی داره.
حجم به خوندن فایل مربوط نمیشه.
مثلا شما یک فایل رو توی سیستم عامل دارید که نرم افزار برای باز کردنش ندارید. اونوقت حجمش مشخص نیست ؟! بهتره این کار رو با جاوا اسکریپت موقع آپلود ویدئو انجام بدید و یک field برای duration در نظر بگیرید. این روش جواب میده. خودم به شخصه تست کردم این روش رو.
@msdabbagh
@mohaligateway
سلام از کد جاوا اسکریپت شما استفاده کردم اما طبق سه تا تستی که انجام دادم عددی که به عنوان خروجی بر حسب ثانیه میده درست نیست و پس از تبدیل به دقیقه ، با چندین ثانیه اختلاف حساب میشه.
شاید من روش تبدیل به دقیقه رو درست نزدم ، روش درستش چیه؟
من خودم یک پکیج php پیدا کردم که ظاهرا خوبه فقط بلد نیستم توی لاراول نصب کنم.
شما میتونید راهنماییم کنید؟
https://github.com/wapmorgan/MediaFile
این پکیج که معرفی کردید php خام هستش. خودتون باید روی لاراول پیاده سازیش کنید.
برای پیاده سازی ابتدا از composer پکیج رو نصب کنید.
composer require wapmorgan/media-file
بعد از نصب داخل پوشه app که از psr-4 پشتیبانی می کنه کلاس php بسازید. مثلا توی app->helpers->mediHelper.php بسازید می تونید با use کردن هرجا خواستید استفاده کنید. می تونید یک alias serviceprovider ازش بسازید تا دیگه نیاز نباشه ازش کلاس بسازید.
@msdabbagh
@mohaligateway
از راهنمایی هاتون بسیار متشکرم.
در نهایت به این نتیجه رسیدم با جاوا اسکریپت هندل کنم.
<input type="hidden" value="0" name="video_duration" id="video_duration">
javascript code in blade
// create the video element but don't add it to the page
var vid = document.createElement('video');
document.querySelector('#customFile').addEventListener('change', function() {
// create url to use as the src of the video
var fileURL = URL.createObjectURL(this.files[0]);
vid.src = fileURL;
// wait for duration to change from NaN to the actual duration
vid.ondurationchange = function() {
$('#video_duration').val(this.duration);
};
});
و برای تبدیل به ساعت دقیقه و ثانیه یک helper میسازیم.
<?php
if (!function_exists('helper_ConvertSecondToMin')) {
function Convert_SecondToMin($totalSeconds) {
if ($totalSeconds == '0') {
return 0;
}else{
$hours = floor($totalSeconds / 3600);
$minutes = floor(($totalSeconds - ($hours * 3600)) / 60);
$seconds = $totalSeconds - ($hours * 3600) - ($minutes * 60);
// round seconds
$seconds = round($seconds * 100 ) / 100;
$result1 = ($hours < 10 ? "0" + $hours : $hours);
$result2 = ($minutes < 10 ? "0" + $minutes : $minutes);
$result3 = ($seconds < 10 ? "0" + $seconds : $seconds);
return $result1.':'.$result2.':'.floor($result3);
}
}
}
بهتره که با همون جاوا اسکریپت تغییرات رو انجام بدید و بفرستید سمت بک اند. البته این روش helper ساختن هم مشکل نداره. البته helper هم نمی خواد اگه morilog داری می تونی با اون انجام بدی.
@msdabbagh
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟