ClipBucket, একটি ওপেন সোর্স YouTube ক্লোন যা আপনার নিজের সার্ভারে ইনস্টল করা যেতে পারে
প্রথম জিনিস আমি চেষ্টা করেছি ক্লিপবাকেট, যা নিজেকে একটি ওপেন সোর্স YouTube ক্লোন বলে যা আপনি আপনার সার্ভারে ইনস্টল করতে পারেন৷
আশ্চর্যজনকভাবে, ClipBucket এর কোনো ইনস্টলেশন নির্দেশাবলী নেই। ধন্যবাদ বাইরের ব্যবস্থাপনার কাছে я ইনস্টলেশন প্রক্রিয়া স্বয়ংক্রিয় সাহায্যে Ansible, একটি সার্ভার কনফিগারেশন ম্যানেজমেন্ট টুল।
অসুবিধার একটি অংশ ছিল যে ক্লিপবাকেট ইনস্টলেশন স্ক্রিপ্টগুলি সম্পূর্ণভাবে ভেঙে গেছে। সেই সময় আমি গুগলে কাজ করেছেন এবং চুক্তির শর্তাবলী অনুসারে আমার ওপেন সোর্স ইউটিউব ক্লোনটিতে অবদান রাখার অধিকার ছিল না, তবে আমি একটি বাগ রিপোর্ট পোস্ট, যা থেকে প্রয়োজনীয় সংশোধন সহজে করা যেতে পারে। মাস পেরিয়ে গেছে, এবং তারা এখনও বুঝতে পারেনি সমস্যাটি কী। পরিবর্তে তারা সবকিছু যোগ করেছে তুলনায় আরো প্রতিটি রিলিজে বাগ।
ক্লিপবাকেট একটি পরামর্শমূলক মডেলের উপর পরিচালিত হয়েছিল - তারা বিনামূল্যে তাদের কোড প্রকাশ করেছে এবং স্থাপনার সহায়তার জন্য চার্জ করেছে৷ এটি ধীরে ধীরে আমার মনে হয় যে একটি কোম্পানি যে অর্থ প্রদানের সহায়তা থেকে অর্থ উপার্জন করে তারা সম্ভবত গ্রাহকদের নিজেরাই পণ্যটি ইনস্টল করতে আগ্রহী নয়।
MediaGoblin, আরও আধুনিক বিকল্প
ক্লিপবাকেটের সাথে কয়েক মাস হতাশার পরে, আমি উপলব্ধ বিকল্পগুলি দেখেছি এবং পেয়েছি মিডিয়াগোব্লিন.
মিডিয়াগোবলিনের অনেক ভালো জিনিস আছে। কুৎসিত পিএইচপি-তে ক্লিপবাকেটের বিপরীতে, মিডিয়াগোবলিন পাইথনে লেখা হয়, এমন একটি ভাষা যার সাথে আমার অনেক কোডিং অভিজ্ঞতা রয়েছে। খাওয়া কমান্ড লাইন ইন্টারফেস, যা আপনাকে সহজেই ভিডিও ডাউনলোড স্বয়ংক্রিয় করতে দেয়। সবচেয়ে গুরুত্বপূর্ণ, MediaGoblin এর সাথে আসে ডকার ইমেজ, যা কোনো ইনস্টলেশন সমস্যা দূর করে।
ডকশ্রমিক এমন একটি প্রযুক্তি যা একটি অ্যাপ্লিকেশনকে যে কোনো জায়গায় চালানোর জন্য একটি স্বায়ত্তশাসিত পরিবেশ তৈরি করে। আমি ডকার ব্যবহার করি তার অনেক প্রকল্প.
মিডিয়াগোবলিনকে পুনরায় ডকারাইজ করার আশ্চর্যজনক অসুবিধা
আমি ধরে নিয়েছিলাম যে মিডিয়াগোবলিন ডকার ইমেজ স্থাপন করা একটি তুচ্ছ কাজ হবে। ওয়েল, যে বেশ যে ভাবে কাজ আউট না.
সমাপ্ত ছবিতে দুটি প্রয়োজনীয় ফাংশন ছিল না:
প্রমাণীকরণ
MediaGoblin ডিফল্টভাবে একটি পাবলিক মিডিয়া পোর্টাল তৈরি করে, এবং আমার বাইরের লোকদের অ্যাক্সেস সীমাবদ্ধ করার একটি উপায় দরকার ছিল।
ট্রান্সকোডিং
আপনি যখনই একটি ভিডিও ডাউনলোড করেন, মিডিয়াগোবলিন সর্বোত্তম স্ট্রিমিংয়ের জন্য এটি ট্রান্সকোড করার চেষ্টা করে। ভিডিওটি প্রাথমিকভাবে স্ট্রিমিংয়ের জন্য প্রস্তুত হলে, ট্রান্সকোডিং গুণমানকে হ্রাস করে।
দুর্ভাগ্যবশত, ডকার ইমেজটি বর্তমান থেকে আর নির্মিত হয় না। MediaGoblin সংগ্রহস্থল. আমি শেষ সফল বিল্ড থেকে সংস্করণের সাথে এটি সিঙ্ক করার চেষ্টা করেছি, কিন্তু এটিও ব্যর্থ হয়েছে। যদিও আমি একই কোড ব্যবহার করেছি, মিডিয়াগোবলিনের বাহ্যিক নির্ভরতা পরিবর্তিত হয়েছে, বিল্ডটি ভেঙেছে। কয়েক ডজন ঘন্টা পরে, আমি 10-15 মিনিটের মিডিয়াগোবলিন বিল্ড প্রক্রিয়াটি বারবার চালিয়েছি যতক্ষণ না এটি শেষ পর্যন্ত কাজ করে।
কয়েক মাস পর একই ঘটনা ঘটল। সামগ্রিকভাবে, MediaGoblin নির্ভরতা শৃঙ্খল গত কয়েক বছরে বেশ কয়েকবার আমার বিল্ড ভেঙেছে, এবং শেষবার এটি ঘটেছিল যখন আমি এই নিবন্ধটি লিখছিলাম। অবশেষে প্রকাশ করলাম MediaGoblin এর নিজস্ব কাঁটা c হার্ড কোডেড নির্ভরতা এবং লাইব্রেরির সুস্পষ্টভাবে নির্দিষ্ট সংস্করণ। অন্য কথায়, সন্দেহজনক দাবির পরিবর্তে মিডিয়াগোবলিন যে কোনও সংস্করণের সাথে কাজ করে সেলারি >= 3.0, আমি একটি নির্দিষ্ট সংস্করণ নির্ভরতা ইনস্টল করেছি সেলারি 4.2.1কারণ আমি এই সংস্করণটি দিয়ে MediaGoblin পরীক্ষা করেছি। দেখে মনে হচ্ছে পণ্যের চাহিদা রয়েছে প্রজননযোগ্য বিল্ড মেকানিজম, কিন্তু আমি এখনো এটা করিনি।
যেহেতু মিডিয়াগোবলিন আমার স্থানীয় কম্পিউটারে ডকার চালাচ্ছিল, তাই পরবর্তী পদক্ষেপ ছিল এটি একটি ক্লাউড সার্ভারে স্থাপন করা যাতে পরিবার ভিডিওটি দেখতে পারে।
মিডিয়াগোবলিন এবং ভিডিও স্টোরেজ সমস্যা
এমন অনেক প্ল্যাটফর্ম রয়েছে যা একটি ডকার ইমেজ নেয় এবং এটি একটি সর্বজনীন URL-এ হোস্ট করে। ধরা হল যে অ্যাপটি ছাড়াও, 33 জিবি ভিডিও ফাইল প্রকাশ করতে হয়েছিল। একটি ডকার ইমেজে তাদের হার্ড-কোড করা সম্ভব ছিল, কিন্তু এটি কষ্টকর এবং কুৎসিত হবে। কনফিগারেশনের একটি লাইন পরিবর্তন করার জন্য 33 গিগাবাইট ডেটা পুনরায় ব্যবহার করতে হবে।
যখন আমি ClipBucket ব্যবহার করেছি তখন আমি সমস্যাটি সমাধান করেছি gcsfuse - একটি ইউটিলিটি যা অপারেটিং সিস্টেমকে ফাইল সিস্টেমে নিয়মিত পাথ হিসাবে Google ক্লাউড ক্লাউড স্টোরেজে ডিরেক্টরি আপলোড করার অনুমতি দেয়৷ আমি Google ক্লাউডে ভিডিও ফাইলগুলি হোস্ট করেছি এবং সেগুলিকে স্থানীয় ফাইল হিসাবে ClipBucket-এ প্রদর্শিত করতে gcsfuse ব্যবহার করেছি৷
পার্থক্য ছিল যে ClipBucket একটি বাস্তব ভার্চুয়াল মেশিনে দৌড়েছিল, যখন MediaGoblin একটি ডকার কন্টেইনারে দৌড়েছিল। এখানে, ক্লাউড স্টোরেজ থেকে ফাইলগুলি মাউন্ট করা অনেক বেশি কঠিন হয়ে উঠেছে। আমি সমস্ত সমস্যার সমাধান করতে কয়েক ডজন ঘন্টা ব্যয় করেছি এবং এটি সম্পর্কে লিখেছি পুরো ব্লগ পোস্ট.
Google ক্লাউড স্টোরেজের সাথে MediaGoblin এর প্রাথমিক একীকরণ, যার কথা আমি বলছি 2018 সালে বলেছিলেন
সমস্ত উপাদান সামঞ্জস্য করার কয়েক সপ্তাহ পরে, সবকিছু কাজ করেছে। MediaGoblin এর কোডে কোনো পরিবর্তন না করেই, আমি এটিকে Google ক্লাউড স্টোরেজে মিডিয়া ফাইল পড়া এবং লেখার জন্য প্রতারণা করেছি।
একমাত্র সমস্যা মিডিয়াগোবলিন অশ্লীলভাবে ধীর হয়ে গিয়েছিল। ভিডিও থাম্বনেল হোম পেজে লোড হতে পুরো 20 সেকেন্ড সময় লেগেছে। আপনি যদি একটি ভিডিও দেখার সময় সামনের দিকে ঝাঁপিয়ে পড়েন, তাহলে প্লেব্যাক পুনরায় শুরু করার আগে MediaGoblin অবিরাম 10 সেকেন্ডের জন্য বিরতি দেবে।
মূল সমস্যাটি ছিল যে ভিডিও এবং ছবিগুলি ব্যবহারকারীর কাছে একটি দীর্ঘ, বৃত্তাকার পথ নিয়েছিল। তাদের Google ক্লাউড স্টোরেজ থেকে gcsfuse-এর মাধ্যমে MediaGoblin, Nginx-এ যেতে হয়েছিল - এবং শুধুমাত্র তখনই তারা ব্যবহারকারীর ব্রাউজারে গিয়েছিল। প্রধান বাধা ছিল gcsfuse, যা গতির জন্য অপ্টিমাইজ করা হয়নি। বিকাশকারীরা প্রকল্পের মূল পৃষ্ঠায় ইউটিলিটির অপারেশনে বড় বিলম্ব সম্পর্কে সতর্ক করে:
আদর্শভাবে, ব্রাউজারকে যেকোনো মধ্যবর্তী স্তর বাইপাস করে সরাসরি Google ক্লাউড থেকে ফাইল আনতে হবে। আপনি মিডিয়াগোবলিন কোডবেসে ডুব না দিয়ে বা জটিল গুগল ক্লাউড ইন্টিগ্রেশন লজিক যোগ না করে কীভাবে এটি করতে পারেন?
nginx-এ সাব_ফিল্টার কৌশল
ভাগ্যক্রমে আমি একটি সহজ সমাধান খুঁজে পেয়েছি, যদিও немного কুৎসিত আমি Nginx-এ default.conf কনফিগারেশন যোগ করেছি যেমন একটি ফিল্টার:
আমার সেটআপে, Nginx মিডিয়াগোবলিন এবং শেষ ব্যবহারকারীর মধ্যে একটি প্রক্সি হিসাবে কাজ করেছে। উপরের নির্দেশটি Nginx-কে নির্দেশ দেয় যে সমস্ত MediaGoblin HTML প্রতিক্রিয়াগুলি শেষ ব্যবহারকারীকে পরিবেশন করার আগে অনুসন্ধান এবং প্রতিস্থাপন করতে। Nginx মিডিয়াগোবলিন মিডিয়া ফাইলগুলির সমস্ত আপেক্ষিক পাথগুলিকে Google ক্লাউড স্টোরেজ থেকে URL দিয়ে প্রতিস্থাপন করে।
Nginx MediaGoblin থেকে প্রতিক্রিয়াগুলি পুনর্লিখন করে যাতে ক্লায়েন্টরা সরাসরি Google ক্লাউড স্টোরেজ থেকে মিডিয়া ফাইলগুলির জন্য অনুরোধ করতে পারে
আমার সমাধান সম্পর্কে সর্বোত্তম অংশ হল যে এটি MediaGoblin কোডে কোন পরিবর্তনের প্রয়োজন নেই। Nginx-এর দুই-লাইন নির্দেশিকা নির্বিঘ্নে MediaGoblin এবং Google ক্লাউডকে একীভূত করে, যদিও পরিষেবাগুলি একে অপরের সম্পর্কে একেবারে কিছুই জানে না।
মন্তব্য: এই সমাধানটির জন্য প্রয়োজন যে Google ক্লাউড স্টোরেজের ফাইলগুলি প্রত্যেকের দ্বারা পাঠযোগ্য। অননুমোদিত অ্যাক্সেসের ঝুঁকি কমাতে, আমি একটি দীর্ঘ, এলোমেলো বালতি নাম ব্যবহার করি (যেমন mediagoblin-39dpduhfz1wstbprmyk5ak29) এবং যাচাই করুন যে বাকেটের অ্যাক্সেস নিয়ন্ত্রণ নীতি অননুমোদিত ব্যবহারকারীদের ডিরেক্টরির বিষয়বস্তু প্রদর্শনের অনুমতি দেয় না।
চূড়ান্ত পণ্য
এই মুহুর্তে আমার একটি সম্পূর্ণ, কার্যকরী সমাধান ছিল। MediaGoblin Google এর ক্লাউড প্ল্যাটফর্মে তার নিজস্ব পাত্রে আনন্দের সাথে দৌড়েছিল, তাই এটিকে ঘন ঘন প্যাচ করা বা আপডেট করার দরকার নেই। আমার প্রক্রিয়ার সবকিছুই স্বয়ংক্রিয় এবং পুনরুত্পাদনযোগ্য ছিল, যা সাধারণ সম্পাদনা বা পূর্ববর্তী সংস্করণগুলিতে রোলব্যাক করার অনুমতি দেয়।
আমার পরিবার সত্যিই পছন্দ করেছে যে ভিডিওগুলি দেখতে কতটা সহজ ছিল। উপরে বর্ণিত Nginx হ্যাকের সাহায্যে, ভিডিওগুলির সাথে কাজ করা ইউটিউবের মতো দ্রুত হয়ে উঠেছে।
দেখার পর্দা এই মত দেখায়:
"সেরা" ট্যাগ দ্বারা পারিবারিক ভিডিও ক্যাটালগের বিষয়বস্তু
থাম্বনেইলে ক্লিক করলে এইরকম একটি স্ক্রিন আসবে:
একটি মিডিয়া সার্ভারে একটি একক ক্লিপ দেখা৷
বছরের পর বছর কাজ করার পর, পরিবারের সদস্যদের একই ব্যবহারকারী-বান্ধব YouTube-এর মতো ইন্টারফেসে আমাদের ভিডিও দেখার সুযোগ দেওয়া অবিশ্বাস্যভাবে পুরস্কৃত হয়েছে যা আমি প্রথমে চেয়েছিলাম।
বোনাস: প্রতি মাসে খরচ কমিয়ে $1-এর কম করুন
আপনি প্রায়ই হোম ভিডিও দেখেন না, শুধুমাত্র প্রতি কয়েক মাসে। আমার পরিবার সম্মিলিতভাবে এক বছরে প্রায় 20 ঘন্টা ট্র্যাফিক তৈরি করেছিল, কিন্তু সার্ভারটি 15/99,7 চলছিল। আমি একটি সার্ভারের জন্য মাসিক $XNUMX প্রদান করেছি যা সময়ের XNUMX% নিচে ছিল।
2018 সালের শেষে, Google পণ্যটি প্রকাশ করে ক্লাউড রান. হত্যাকারী বৈশিষ্ট্যটি ডকার কন্টেইনারগুলিকে এত দ্রুত চালাচ্ছিল যে অ্যাপ্লিকেশনটি HTTP অনুরোধগুলিতে সাড়া দিতে পারে। অর্থাৎ, সার্ভারটি স্ট্যান্ডবাই মোডে থাকতে পারে এবং শুধুমাত্র তখনই শুরু হতে পারে যখন কেউ এটি অ্যাক্সেস করতে চায়। আমার মত কদাচিৎ চালানো অ্যাপ্লিকেশনের জন্য, খরচ প্রতি মাসে $15 থেকে বছরে কয়েক সেন্টে নেমে এসেছে।
যে কারণে আমার আর মনে নেই, ক্লাউড রান আমার মিডিয়াগোবলিন ইমেজের সাথে কাজ করেনি। কিন্তু ক্লাউড রানের আবির্ভাবের সাথে সাথে আমার সেই কথা মনে পড়ে গেল Heroku বিনামূল্যে একটি অনুরূপ পরিষেবা অফার করে, এবং তাদের সরঞ্জামগুলি Google-এর তুলনায় অনেক বেশি ব্যবহারকারী-বান্ধব৷
একটি বিনামূল্যের অ্যাপ্লিকেশন সার্ভারের সাথে, একমাত্র খরচ হল ডেটা স্টোরেজ। Google-এর স্ট্যান্ডার্ড আঞ্চলিক স্টোরেজের দাম 2,3 সেন্ট/GB। ভিডিও সংরক্ষণাগারটি 33 জিবি নেয়, তাই আমি মাসে মাত্র 77 সেন্ট প্রদান করি।
এই সমাধানটি প্রতি মাসে মাত্র $0,77 খরচ করে
যারা চেষ্টা করার পরিকল্পনা করছেন তাদের জন্য টিপস
স্পষ্টতই প্রক্রিয়াটি আমাকে দীর্ঘ সময় নিয়েছিল। তবে আমি আশা করি এই নিবন্ধটি আপনাকে আপনার হোম ভিডিওগুলি ডিজিটাইজ করার এবং প্রকাশ করার প্রচেষ্টার 80-90% সংরক্ষণ করতে সহায়তা করবে৷ একটি পৃথক বিভাগে আপনি খুঁজে পেতে পারেন বিস্তারিত ধাপে ধাপে নির্দেশিকা পুরো প্রক্রিয়া জুড়ে, তবে এখানে কিছু সাধারণ টিপস রয়েছে:
ডিজিটাইজেশন এবং সম্পাদনা পর্যায়ে, যতটা সম্ভব মেটাডেটা সংরক্ষণ করুন।
মূল্যবান তথ্য প্রায়ই ভিডিও ক্যাসেট লেবেল রেকর্ড করা হয়.
কোন ক্লিপটি কোন টেপ থেকে এবং কোন ক্রমে শট করা হয়েছিল তা ট্র্যাক করুন।
শুটিংয়ের তারিখ লিখুন, যা ভিডিওতে প্রদর্শিত হতে পারে।
পেশাদার ডিজিটাইজেশন পরিষেবাগুলির জন্য অর্থ প্রদানের কথা বিবেচনা করুন।
আপনি হবে чрезвычайно ডিজিটাইজেশন মানের পরিপ্রেক্ষিতে তাদের সাথে মেলানো কঠিন এবং ব্যয়বহুল।
তবে EverPresent নামক একটি কোম্পানি থেকে দূরে থাকুন (আপনার বিস্তারিত প্রয়োজন হলে আমাকে বার্তা দিন)।
আপনি নিজে ডিজিটাইজেশন করলে, একটি HDD কিনুন।
আনকম্প্রেসড স্ট্যান্ডার্ড ডেফিনিশন ভিডিও প্রতি মিনিটে 100-200 MB লাগে।
কিছু সাধারণ বিন্যাসে মেটাডেটা রেকর্ড করুন যা একটি নির্দিষ্ট অ্যাপ্লিকেশনের সাথে আবদ্ধ নয়।
ক্লিপ বর্ণনা, সময় কোড, তারিখ, ইত্যাদি
আপনি যদি একটি অ্যাপ্লিকেশন-নির্দিষ্ট বিন্যাসে মেটাডেটা সংরক্ষণ করেন (বা আরও খারাপ, এটিকে মোটেও সংরক্ষণ করবেন না), আপনি যদি একটি ভিন্ন সমাধান ব্যবহার করার সিদ্ধান্ত নেন তবে আপনি কাজটি পুনরায় করতে পারবেন না।
আপনি সম্পাদনা করার সময়, আপনি ভিডিওতে প্রচুর দরকারী মেটাডেটা দেখতে পাবেন। আপনি তাদের সংরক্ষণ না করলে আপনি তাদের হারাবেন.
ভিডিওতে কী হচ্ছে?
সেখানে কে নিবন্ধিত?
এই কখন রেকর্ড করা হয়েছিল?
আপনার প্রিয় ভিডিও চিহ্নিত করুন.
সত্যি বলতে, বেশিরভাগ হোম ভিডিও বেশ বিরক্তিকর।
আমি আমার প্রিয় ক্লিপগুলিতে "সর্বোত্তম" ট্যাগ প্রয়োগ করি এবং যখন আমি মজার ভিডিও দেখতে চাই তখন সেগুলি খুলি৷
যত তাড়াতাড়ি সম্ভব একটি ব্যাপক সমাধান সংগঠিত করুন যাতে প্রক্রিয়াটি সরাসরি শুরু থেকে শেষ পর্যন্ত যায়।
আমি প্রথমে সমস্ত টেপ ডিজিটাইজ করার চেষ্টা করেছি, তারপরে সমস্ত টেপ সম্পাদনা করি ইত্যাদি।
আমি যদি একটি টেপ দিয়ে শুরু করতাম এবং এটি দিয়ে সমস্ত কাজ সম্পন্ন করতাম। তাহলে আমি বুঝতে পারব কোন সিদ্ধান্ত এবং কোন পর্যায়ে চূড়ান্ত ফলাফলকে প্রভাবিত করে।
একটি সর্বনিম্ন recoding রাখুন.
প্রতিবার আপনি একটি ক্লিপ সম্পাদনা বা পুনরায় এনকোড করার সময়, আপনি এর গুণমান হ্রাস করেন।
সর্বাধিক গুণমানে আপনার কাঁচা ফুটেজ ডিজিটাইজ করুন, তারপর ব্রাউজারগুলি নেটিভভাবে রেন্ডার করে এমন বিন্যাসে প্রতিটি ক্লিপকে ঠিক একবার ট্রান্সকোড করুন।
ভিডিও ক্লিপ প্রকাশ করার জন্য সবচেয়ে সহজ সমাধান ব্যবহার করুন।
পূর্ববর্তী সময়ে, মিডিয়াগবলিনকে ভিডিও ফাইলের একটি স্ট্যাটিক সেট সহ ওয়েব পৃষ্ঠাগুলি তৈরি করার মোটামুটি সহজ দৃশ্যের জন্য একটি অতি জটিল টুল বলে মনে হয়।
যদি আমি আবার শুরু করতাম, তাহলে আমি একটি স্ট্যাটিক সাইট জেনারেটর ব্যবহার করব হুগো, Jekyll বা গ্রিডসাম.
ইনস্টলেশন করুন।
ভিডিও সম্পাদনা একাধিক ভিডিও থেকে সেরা মুহূর্তগুলিকে একত্রিত করার একটি মজার উপায়৷
সম্পাদনার প্রধান জিনিস হল সঙ্গীত। উদাহরণস্বরূপ, থিমটি আশ্চর্যজনক ধীর তুষার জাতীয় থেকে, এটি আমার ব্যক্তিগত আবিষ্কার।