PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : تبدیل لینک ویدیو به لینک blob برای پلیر آنلاین



blogparsi
October 12th, 2019, 01:48
با سلام و احترام

دوستان عزیز ممنون میشم در صورت امکان بنده رو راهنمایی کنید.

چطور میتونم یک آدرس ویدیو با لینک مستقیم رو در یک پلیر ویدیو با آدرس blob مثال به شکل زیر اجرا و پخش کنم ؟

مثال آدرس اصلی ویدیو به این شکل آپلود میشه : https://myweb.com/video.mp4 یا دیگر فرمت های تصویری از جمله mkv

بعد میخوام تو پلیر با آدرسی به این شکل نمایش داده بشه : blob:https://myweb.com/b7a37a03-8584-45c5-b506-5c0b19802e23


میشه گفت یه جور کد گذاری روی لینک های فایل های تصویری و صوتی هستش .

در ضمن ممنون میشم اگر کسی کد حاضری یا اسکریپت حاضری داره همین جا قرار بده تا بنده و دیگر کاربران انجمن استفاده کنیم.

ممنون و وقت همگی بخیر

firebox
October 12th, 2019, 10:46
Blob یک ابجکت جاوااسکریپت هست ، که ازش برای نمایش داده های خام تو جاوا اسکریپت استفاده میشه ، داده هایی که یه صورت عادی تو جاوا اسکریپت پشتیبانی نمیشه ، مثل داده های باینری (نمونه داده هایی مثل تصویر یا ویدیو)
وقتی یک داده ‌Blob دارید ، به خودی خودش نمیتونید ازش استفاده کنید ،‌ برای اینکه بتونید از اون داده های استفاده کنید ، باید از یک متد createObjectURL استفاده کنید ، این متد یک URL برای ارائه داده ایجاد میکنه (طول عمرش بسته به اون داکیومنتی که داخلش ایجاد شده هست)
Blob هیچ نقشی توی کد گذاری نداره ، برای استفاده از ویدیوهای کد گذاری شده باید از Encrypted Media Extensions که یکی از API های مرورگر هست استفاده کنید.

برای نمایش ویدیو های به صورت Blob از نظر فنی میتونید اینکار رو انجام بدید ، اول باید اون ویدیو رو کامل دانلود کنید ، بعد براش یک createObjectURL ایجاد کنید و در آخر هم توی سورس ویدیو قرارش بدید ، این روش برای ویدیوهای کوتاه جواب میده ، اما برای ویدیوهای بزرگ هم اینکه احمقانه هست ، و اینکه خود مرورگرها هم محدودیت هایی تو اندازه فایل های دانلودی دارن.

برای نمایش فایل های بزرگ شما اول باید فایل ویدیویی تون رو به قسمت های کوچیکتر تقسیم کنید (مثلا قسمت های ۱۰ ثانیه ای) ، بعد یک فایل نقشه برای تقسیم بندهای تون درست کنید (اینکه هر قسمت مربوط به کدوم بازه زمانی ویدیوتون هست) ، بعد از اون هنگام پخش ویدیو قسمت ها متناوب با پخش ویدیو دانلود کنید براش یک createObjectURL ایجاد کنید و اون رو جهت بخش به مرورگر بدیم (برای پخش ویدیوهای به اینصورت (استریم) باید از |Media Source Extensions API استفاده کنید).

به روش بالا میگن استریم ، ۲ استاندارد پر طرفدار برای استریم ویدیوهای داریم یکی HLS و یک هم MPEG Dash ، هر دوی این استاندارد ها یکسری قوانین برای نحوه استریم ویدیو تعیین میکنن ، که تا حدودی مشابه هم هست ، تفاوت شون توی پشتیبانی و لاسینسینگ هست.

شما برای اینکه بخواهید ویدیویی رو تو مرورگر (یا هر پلتفرم دیگه ای مثل موبایل) استریم کنید ، نیازی نیست که خودتون تمام کارهایی که اون بالا گفتم رو انجام بدید ، کتابخانه های رایگان زیادی هستن برای اینکار مثل Hls.js, shakaPlayer, dash..js و ... پلیرهایی مثل Video.js و Jwplayer هم از همین کتابخونه های استفاده میکنن.
برای آماده سازی ویدیوها توی برای استریم هم ابزارهایی رایگان زیادی هست ، من استفاده از FFmpeg رو پیشنهاد میکنم.

lizard.tiny
October 12th, 2019, 11:14
سلام

دلیلتون برای این تغییر لینک چی هست ؟

blogparsi
October 14th, 2019, 22:31
blob یک ابجکت جاوااسکریپت هست ، که ازش برای نمایش داده های خام تو جاوا اسکریپت استفاده میشه ، داده هایی که یه صورت عادی تو جاوا اسکریپت پشتیبانی نمیشه ، مثل داده های باینری (نمونه داده هایی مثل تصویر یا ویدیو)
وقتی یک داده ‌blob دارید ، به خودی خودش نمیتونید ازش استفاده کنید ،‌ برای اینکه بتونید از اون داده های استفاده کنید ، باید از یک متد createobjecturl استفاده کنید ، این متد یک url برای ارائه داده ایجاد میکنه (طول عمرش بسته به اون داکیومنتی که داخلش ایجاد شده هست)
blob هیچ نقشی توی کد گذاری نداره ، برای استفاده از ویدیوهای کد گذاری شده باید از encrypted media extensions که یکی از api های مرورگر هست استفاده کنید.

برای نمایش ویدیو های به صورت blob از نظر فنی میتونید اینکار رو انجام بدید ، اول باید اون ویدیو رو کامل دانلود کنید ، بعد براش یک createobjecturl ایجاد کنید و در آخر هم توی سورس ویدیو قرارش بدید ، این روش برای ویدیوهای کوتاه جواب میده ، اما برای ویدیوهای بزرگ هم اینکه احمقانه هست ، و اینکه خود مرورگرها هم محدودیت هایی تو اندازه فایل های دانلودی دارن.

برای نمایش فایل های بزرگ شما اول باید فایل ویدیویی تون رو به قسمت های کوچیکتر تقسیم کنید (مثلا قسمت های ۱۰ ثانیه ای) ، بعد یک فایل نقشه برای تقسیم بندهای تون درست کنید (اینکه هر قسمت مربوط به کدوم بازه زمانی ویدیوتون هست) ، بعد از اون هنگام پخش ویدیو قسمت ها متناوب با پخش ویدیو دانلود کنید براش یک createobjecturl ایجاد کنید و اون رو جهت بخش به مرورگر بدیم (برای پخش ویدیوهای به اینصورت (استریم) باید از |media source extensions api استفاده کنید).

به روش بالا میگن استریم ، ۲ استاندارد پر طرفدار برای استریم ویدیوهای داریم یکی hls و یک هم mpeg dash ، هر دوی این استاندارد ها یکسری قوانین برای نحوه استریم ویدیو تعیین میکنن ، که تا حدودی مشابه هم هست ، تفاوت شون توی پشتیبانی و لاسینسینگ هست.

شما برای اینکه بخواهید ویدیویی رو تو مرورگر (یا هر پلتفرم دیگه ای مثل موبایل) استریم کنید ، نیازی نیست که خودتون تمام کارهایی که اون بالا گفتم رو انجام بدید ، کتابخانه های رایگان زیادی هستن برای اینکار مثل hls.js, shakaplayer, dash..js و ... پلیرهایی مثل video.js و jwplayer هم از همین کتابخونه های استفاده میکنن.
برای آماده سازی ویدیوها توی برای استریم هم ابزارهایی رایگان زیادی هست ، من استفاده از ffmpeg رو پیشنهاد میکنم.


سلام و وقت بخیر

راستش بنده میخوام یک سایت جهت پخش آنلاین ویدیو که به صورت دستی را اندازی کنم و میخوام لینک های دانلود مستقیم که تو سرورهام هستش رو تو پلیر پخش کنم ولی طوری که نشه دانلود کرد .

با پلیر html5 ساده میشه فرمت های mp4 و mkv رو آنلاین پخش کرد ولی اگر دانلود منجر روی سیستم نصب باشه به صورت خودکار لینک دانلود بالا میاد.

من میخوام یه سورس ساده فقط برای کدگذاری یا بستن لینک های دانلود داشته باشم.

ممنون میشم اگر راهنماییم کنید.

ممنون

- - - Updated - - -


سلام

دلیلتون برای این تغییر لینک چی هست ؟



سلام و وقت بخیر

راستش بنده میخوام یک سایت جهت پخش آنلاین ویدیو که به صورت دستی را اندازی کنم و میخوام لینک های دانلود مستقیم که تو سرورهام هستش رو تو پلیر پخش کنم ولی طوری که نشه دانلود کرد .

با پلیر html5 ساده میشه فرمت های mp4 و mkv رو آنلاین پخش کرد ولی اگر دانلود منجر روی سیستم نصب باشه به صورت خودکار لینک دانلود بالا میاد.

من میخوام یه سورس ساده فقط برای کدگذاری یا بستن لینک های دانلود داشته باشم.

ممنون میشم اگر راهنماییم کنید.

ممنون

lizard.tiny
October 14th, 2019, 22:40
واسه اینکه قابل دانلود نباشه باید Player اختصاصی نوشته بشه که البته نمیشه بطور 100 درصد جلوی دانلود رو گرفت اما در کل راه هایی برای سخت کردن پروسه دانلود وجود داره

PSW
October 15th, 2019, 00:19
بفرمایید ...

البته تستش نکردم
تست کردید اوکی بود یه دعا به جون ما بکنید :)



<video></video>
<br/>
<input type="file" name="file" id="fileItem" onchange="onChange()" >
<input type="submit" value="Play">
</form>
<script type="text/javascript">
var URL = window.URL || window.webkitURL;
var video = document.getElementsByTagName('video')[0];
function onChange() {
var fileItem = document.getElementById('fileItem');
var files = fileItem.files;
var file = files[0];
var url = URL.createObjectURL(file);
video.src = url;
video.load();
video.onloadeddata = function() {
video.play();
}
}
</script>

firebox
October 15th, 2019, 01:43
سلام و وقت بخیر

راستش بنده میخوام یک سایت جهت پخش آنلاین ویدیو که به صورت دستی را اندازی کنم و میخوام لینک های دانلود مستقیم که تو سرورهام هستش رو تو پلیر پخش کنم ولی طوری که نشه دانلود کرد .

با پلیر html5 ساده میشه فرمت های mp4 و mkv رو آنلاین پخش کرد ولی اگر دانلود منجر روی سیستم نصب باشه به صورت خودکار لینک دانلود بالا میاد.

من میخوام یه سورس ساده فقط برای کدگذاری یا بستن لینک های دانلود داشته باشم.

ممنون میشم اگر راهنماییم کنید.

ممنون

گفتم باید ویدیوتون رو برای استریم شدن تبدیل کنید و براش یک playlist ایجاد کنید ، شما میتونید فایل ویدیویی تون رو تیکه تیکه کنید و یک پلی لیست M3U8 براش ایجاد کنید.
اطلاعات کاملش اینجا هست :‌ https://developer.apple.com/documentation/http_live_streaming/example_playlists_for_http_live_streaming
این هم یک اسکریپت برای ایجاد پلی لیست M3U8 ، کافیه فایل ویدیوی تون رو بهش بدید ، خودش پلی لیست M3U8 رو به همراه فایل ویدیو بخش بندی شده بهتون تحویل میده.
https://github.com/bentasker/HLS-Stream-Creator

برای پخش ویدیو هم کافیه آدرس فایل پلی لیست رو بدید به یک پلیری مثل video.js
این نسخه اش :‌ https://videojs.github.io/videojs-contrib-hls/






واسه اینکه قابل دانلود نباشه باید Player اختصاصی نوشته بشه که البته نمیشه بطور 100 درصد جلوی دانلود رو گرفت اما در کل راه هایی برای سخت کردن پروسه دانلود وجود داره

برای اینکه ۱۰۰ درصد جلوی دانلود رو بگیرید ،‌میتونید ویدیو های تون رو سمت سرور رمز گذاری کنید (مقداری از هر کی فریم رمزگذاری میشه) ، بعد توی مرورگر با استفاده از Media Source Extensions API رمزگشایی کنید ، سایت هایی مثل نتفلیکس از این روش استفاده میکنن ، هیچ راهی برای دانلود شون وجود نداره. (بالاتر هم این رو گفته بودم)


بفرمایید ...

البته تستش نکردم
تست کردید اوکی بود یه دعا به جون ما بکنید :)



<video></video>
<br/>
<input type="file" name="file" id="fileItem" onchange="onChange()" >
<input type="submit" value="Play">
</form>
<script type="text/javascript">
var URL = window.URL || window.webkitURL;
var video = document.getElementsByTagName('video')[0];
function onChange() {
var fileItem = document.getElementById('fileItem');
var files = fileItem.files;
var file = files[0];
var url = URL.createObjectURL(file);
video.src = url;
video.load();
video.onloadeddata = function() {
video.play();
}
}
</script>




این روش چند مشکل اساسی داره (بالاتر هم نوشتم)
اول اینکه کاربر باید کل ویدیو رو دانلود کنه ، بعد میتونه تماشاش کنه ! اصل پخش آنلاین اینکه همون لحظه بتونی پلی اش کنی.
بعدشم blob تو مرورگر یک محدودیت حجمی داره ، شما نمیتونید فایل های بزرگ رو توش ذخیره کنید (مگر اینکه از . IndexDB استفاده کنید) ،
اخر هم اینکه این فایل توی مموری ذخیره میشه ، اگر فایل بزرگ باشه باعث میشه مرورگر کرش کنه.
پ.ن: این کدی که گذاشتید ،‌ فایل رو از Input مگیره ، هیچ فایلی رو دانلود نمیکنه.

blogparsi
October 19th, 2019, 00:34
سلام و وقت بخیر

ممنون از همه اعضای محترم که بنده رو راهنمایی کردن.