কিভাবে একটি লিনাক্স সার্ভার থেকে লাইভ ভিডিও স্ট্রিম করবেন?


30

আমি যা করতে চাই তা এখানে। আশেপাশে তাকালেও কোনও সরল উত্তর পাইনি। আমার উবুন্টু / মাইএসকিউএল / অ্যাপাচি ব্যবহার করে একটি লিনাক্স বক্স চলমান ওয়েবসাইট রয়েছে। আমার নিজস্ব স্ট্যাটিক আইপিও রয়েছে, অর্থাত্ ওয়েব হোস্টিং ব্যবহার না করে। আমি আমার লিনাক্স সার্ভারে ল্যাপটপের ওয়েবক্যাম (সম্ভবত উইন্ডোজ চলমান) থেকে ভিডিও ফিডটি স্ট্রিম করতে সক্ষম হতে চাই এবং আমার কোনও ওয়েবসাইটের ব্যবহারকারীরা সেই ভিডিওটিকে প্রবাহিত হিসাবে লাইভ দেখতে সক্ষম করতে চান। স্পষ্টতই ল্যাপটপটির কোনওভাবে সার্ভারের সাথে প্রমাণীকরণের প্রয়োজন হবে তবে ওয়েবসাইটে লাইভ ভিডিওটি কে দেখতে পারে তার উপর কোনও বিধিনিষেধ থাকা উচিত নয়। ধন্যবাদ।


আপনি কীভাবে এই জাতীয় সমাধানটি কার্যকর করতে চান বা আপনি ব্যবহারের জন্য তৃতীয় পক্ষের সমাধানের সন্ধান করেন? প্রাক্তন ক্ষেত্রে এসও এই প্রশ্নের ভুল জায়গা, আমি বিশ্বাস করি এটি হ্রাস পাওয়ার কারণ

উত্তর:


46

আমি বর্তমানে ফায়ারওয়্যারের মাধ্যমে সংযুক্ত 3 মিনিডিভি ক্যামেরা থেকে অনলাইন স্ট্রিমিং বিকাশ করি যা আপনার প্রয়োজনের সাথে সামঞ্জস্যপূর্ণ।

দ্রুত ইঙ্গিত: ভিএলসি + ফ্লোপ্লেয়ার / জেডাব্লু প্লেয়ার

প্রথমত, দুটি ভিডিও ফর্ম্যাট রয়েছে যা আপনি অনলাইন স্ট্রিমিংয়ে ব্যবহার করতে পারেন: এফএলভি এবং এইচ 264। এফএলভি ট্রান্সকোড করা সহজ, এইচ 264 এর আকার / মানের অনুপাত আরও ভাল তবে ট্রান্সকোডিং অনেক বেশি সিপিইউ গ্রহণযোগ্য। উভয়ই ওয়েব পৃষ্ঠায় ফ্ল্যাশ প্লেয়ার দ্বারা প্রদর্শিত হতে পারে।

সর্বোপরি, স্ট্রিমিং অবকাঠামো। যেহেতু ল্যাপটপ থেকে আপনার ব্যান্ডউইথ সীমাবদ্ধ (দম্পতি এমবিপিএস শীর্ষে) আপনার সার্ভারে প্রবাহ পেতে হবে এবং এটি ক্লায়েন্টদের কাছে পুনরায় প্রবাহিত করতে হবে। সুতরাং স্ট্রিমটি 1 বার সার্ভারে প্রবাহিত হবে এবং তারপরে সেখান থেকে ক্লায়েন্টদের কাছে এন টাইম হবে। আপনি আপনার ল্যাপটপের জন্য আপনার ইন্টারনেট সংযোগটি বর্ণনা করেননি, সুতরাং দৃশ্যটি দুটি বিভাগে বিভক্ত:

  1. ল্যাপটপটি সর্বজনীন আইপি ঠিকানার সাথে সংযুক্ত বা আপনি ল্যাপটপে NAT পোর্ট করতে পারবেন । এই দৃশ্যটি অনেক সহজ, যেহেতু আপনি সার্ভার থেকে ল্যাপটপের সাথে সুন্দর এবং সহজ সংযোগ করতে পারবেন। বড় অসুবিধা হ'ল, আপনি একটি অবস্থানের জন্য আবদ্ধ (একটি আইপি ঠিকানা)।

  2. ল্যাপটপ জনসাধারণের সাথে আমি ঠিকানা দিয়ে সংযুক্ত নেই । এটি সামান্য কৌশলযুক্ত, তবে এমন কোনও নেটওয়ার্ক থেকে কাজ করবে যা আপনাকে আপনার সার্ভারে এসএসএইচ করার অনুমতি দেবে এবং পর্যাপ্ত আপলোড হবে (1 এমবিপিএস এটি করা উচিত)।

ব্যবহৃত দৃশ্যে নির্বিশেষে, ইনফ্রাস্ট্রাক্টর এর মতো দেখাবে

CAMERA - (usb) - LAPTOP - (network, limited upload) - SERVER - (network) - Client 0
                                                                         - Client 1
                                                                         - Client 2
                                                                         - Client N

ল্যাপটপ থেকে স্ট্রিমিং

  1. ওয়েবক্যাম থেকে ভিডিও ক্যাপচার করুন । আমি স্থানীয়ভাবে সংযুক্ত ওয়েবক্যাম থেকে কখনও স্ট্রিম ক্যাপচার করি নি, তবে ভি 4 এল এর মাধ্যমে এটি কীভাবে করা যায় তার অনেক উদাহরণ রয়েছে যেমন: ওয়েবক্যাম সেটআপ । আপনার আগ্রহী হওয়া উচিত কেবলমাত্র অংশটি:

    laptop$ vlc v4l:// :v4l-vdev="/dev/video0" :v4l-adev="/dev/audio2"

    যা ওয়েবক্যামের সাথে সংযোগ স্থাপনের জন্য ভিএলসি কমান্ডের প্রথম অংশ। আরও তথ্যের জন্য উল্লিখিত হাওটো অনুসরণ করুন। বিশেষত "ভিডিও গ্রুপ" অংশটি দেখুন এবং / ডিভ / ভিডিও এবং / দেব / অডিওতে সঠিক ডিভাইস পাথ। এগুলি আপনার ল্যাপটপে আলাদা হতে পারে।

  2. এফএলভিতে ট্রান্সকোড ভিডিও । আমি ব্যক্তিগতভাবে এফএলভি ব্যবহার করি, কারণ এটি সিপিইউর চাহিদা কম। ট্রান্সকোড স্ট্রিংটি আমি ব্যবহার করি এটি হ'ল:

    --sout '#transcode{vcodec=FLV1,vb=512,acodec=mpga,ab=64,samplerate=44100}'

    যা এমপিজিএ অডিও (এমপি 3 আমার উবুন্টুতে পাওয়া যায় না) সহ ভিডিও প্রবাহকে এফএলভি ফর্ম্যাটে ট্রান্সকোড করবে। নমুনা একরকম বাধ্যতামূলক, এটি ছাড়া এটি কাজ করবে না। তবে আপনি 22050 এর মতো ছোট চয়ন করতে পারেন This এটি ভিডিও স্ট্রিমটিকে 'যেমন আছে' তে ট্রান্সকোড করবে, সুতরাং স্কেলটি 1: 1। আপনি প্রস্থ এবং উচ্চতা পরামিতি, এমনকি স্কেল প্যারামিটার যুক্ত করতে পারেন। ভিএলসি ডকুমেন্টেশন দেখুন।

  3. এটি ল্যাপটপ থেকে স্ট্রিম করুন । এখন আপনাকে স্থানীয় স্ট্রিম তৈরি করতে হবে, যার উপর সার্ভার সংযুক্ত হবে:

    :std{access=http{mime=video/x-flv},mux=ffmpeg{mux=flv},dst=0.0.0.0:8081/stream.flv}

    এটি ভিএলসি স্ট্রিমটি 0.0.0.0:8081/stream.flv এ আবদ্ধ করবে। পুরো কমান্ডটি এর মতো দেখবে:

    laptop$ vlc v4l:// :v4l-vdev="/dev/video0" :v4l-adev="/dev/audio2" --sout '#transcode{vcodec=FLV1,vb=512,acodec=mpga,ab=64,samplerate=44100}:std{access=http{mime=video/x-flv},mux=ffmpeg{mux=flv},dst=0.0.0.0:8081/stream.flv}'

সার্ভারে পুনরায় প্রবাহ করা হচ্ছে

  1. সার্ভারে স্ট্রিম ক্যাপচার করুন এবং এটি পুনরায় চালু করুন । আবার, আমরা ক্যাপচার এবং স্ট্রিম করতে ভিএলসি ব্যবহার করি। ব্যবহার এই পোস্টের প্রথম থেকেই অবকাঠামোগত দৃশ্যের উপর ভিত্তি করে। আমি যেমন দেখিয়েছি, ল্যাপটপের ভিএলসি কিছু বন্দরে ভিডিও প্রবাহিত করে। এই পোর্টটি সার্ভার থেকে অ্যাক্সেসযোগ্য হতে হবে। আপনার যদি ল্যাপটপের জনসাধারণের আইপি ঠিকানা, বা নাটেড পোর্ট থাকে তবে আপনি এটি টেলনেটের মাধ্যমে পরীক্ষা করতে পারেন:

    server$ telnet public_ip_address 8081

    "সংযোগের সময়সীমা" ব্যতীত যে কোনও কিছুই প্রকাশ পাবে, আপনি নিজের ল্যাপটপের স্ট্রিমের সাথে সংযোগ করতে পারবেন। আপনার যদি সার্বজনীন আইপি ঠিকানা না থাকে বা আপনি NAT পোর্ট করতে না পারেন তবে আপনাকে অন্য উপায়ে এটি করতে হবে। আপনি ল্যাপটপ থেকে সার্ভারে এসএসএইচ করতে পারেন এবং আপনার ল্যাপটপ পোর্টটিকে সার্ভারে রিমোট করতে পারেন। সঠিক এসএসএইচ কমান্ডটি হ'ল:

    laptop$ ssh your_user@server_ip_address -R 8081:127.0.0.1:8081

    এই ম্যাজিক কমান্ডটি আপনার ল্যাপটপ পোর্ট ৮০৮১, সার্ভার পোর্ট ৮০৮১-তে 'আবদ্ধ' করবে That এর অর্থ যখন আপনি সার্ভারে ৮০৮১ এ যুক্ত হন, আপনি নিঃশব্দে এসএসএইচ টানেলের মাধ্যমে আপনার ল্যাপটপ পোর্ট ৮০৮১ এর সাথে সংযোগ স্থাপন করবেন। দুর্দান্ত, হাহ? :) সুতরাং আমাদের যা করতে হবে তা হ'ল সহজ ভিএলসি সংযোগ এবং স্ট্রিম:

    server$ vlc http://localhost:8081/stream.flv --sout '#std{access=http{mime=video/x-flv},mux=ffmpeg{mux=flv},dst=0.0.0.0:8082/stream.flv}'

    অথবা সর্বজনীন আইপি ঠিকানা বা নাট পোর্টের ক্ষেত্রে:

    server$ vlc http://public_ip_address:8081/stream.flv --sout '#std{access=http{mime=video/x-flv},mux=ffmpeg{mux=flv},dst=0.0.0.0:8082/stream.flv}'

    ল্যাপটপের অংশের মতো, সার্ভারে থাকা আপনার ভিএলসি 8082 পোর্টের সাথে আবদ্ধ 80 কেন 8082 এবং 8081 নয়? 8081 ইতিমধ্যে এসএসএইচ রিমোট ফরওয়ার্ড নিয়েছে। কেন আমরা প্রথম উদাহরণ হিসাবে ট্রান্সকোড অংশ ব্যবহার করি না? ভিডিওটি ইতিমধ্যে সঠিক ফর্ম্যাটে রয়েছে, সুতরাং আমাদের যা করতে হবে তা হ'ল এটি কেবল স্ট্রিম হিসাবে করা।

  2. পরীক্ষা হচ্ছে । উভয় উদাহরণে, আপনি ভিএলসির মাধ্যমে স্ট্রিমগুলি দেখে কার্যকারিতা পরীক্ষা করতে পারেন। আপনি আপনার স্থানীয় স্ট্রিম পরীক্ষা করতে পারেন:

    laptop$ vlc http://localhost:8081/stream.flv

    এবং আপনি আপনার সার্ভারের স্ট্রিম পরীক্ষা করতে পারেন:

    laptop$ vlc http://server_ip_address:8082/stream.flv

    উভয় ক্ষেত্রেই আপনার ওয়েবক্যাম ইনপুটটি দেখতে হবে।

ওয়েবে স্ট্রিম প্রদর্শন করুন

ওয়েবে স্ট্রিম প্রদর্শন করা, যা বেশিরভাগ ক্ষেত্রে কাজ করবে, ফ্ল্যাশ প্লেয়ারের মাধ্যমে। : আমি দুই পণ্য, যা অ বাণিজ্যিক ব্যবহারের জন্য মুক্ত চেষ্টা JW প্লেয়ার এবং Flowplayer । আমি ফ্লোপ্লেয়ারের সাথে রয়েছি, তবে এর কারণটি আমি মনে করতে পারি না, সম্ভবত প্লাগিনগুলির কারণে (যা আমি ব্যবহার করি না :)) বা আরও ভাল ডকুমেন্টেশনের কারণে।

ওয়েব পৃষ্ঠায় ভিএলসি থেকে কীভাবে এফএলভি স্ট্রিম প্রদর্শন করবেন তা এখানে আচ্ছাদিত রয়েছে: এসএফ এবং ফ্ল্যাশ সহ ওয়েবসাইটটিতে ভিএলসি স্ট্রিম করুন

সমস্যা সমাধান

যে সমস্যাগুলি দেখা দেয় সে সম্পর্কে সচেতন হন। প্রথম জিনিস, সব কিছু হিসাবে, পড়ুন । ভিএলসি খুব চ্যাটি প্রোগ্রাম, তাই সমস্যাটি কোথায় তা এটি আপনাকে জানাবে। ভিডিও / অডিও ডিভাইস অ্যাক্সেসের অনুমতি, সমস্যা হারিয়ে যাওয়া কোডেক, ভুল বানান - আউটপুট প্যারামিটার, ... ব্যবহার iftopকরতে শিখুন সমস্যাটি ডেটা নেটওয়ার্কের মাধ্যমে সত্যই প্রবাহিত হয় কিনা তা দেখতে শিখুন etc.


1
অনেক ধন্যবাদ! এটি আমার প্রত্যাশার চেয়ে বেশি তথ্য ছিল। ভিএলসি পরীক্ষা করে দেখবে এবং গাইড হিসাবে আপনার তথ্য ব্যবহার করবে।

3

আমার পছন্দের সরঞ্জামটি এখানে ভিএলসি হবে । এটি কেবল একটি বহু-উদ্দেশ্যমূলক মাল্টি-ফর্ম্যাট ভিডিও প্লেয়ার নয়, এটি ফাইল ফর্ম্যাট এবং স্ট্রিমিং প্রোটোকলগুলির বিশালতায় স্ট্রিমিং করতে সক্ষম। বোনাস হিসাবে, এটি উইন্ডোজ এবং লিনাক্স হোস্টগুলির মধ্যে ক্রস প্ল্যাটফর্মের কাজ করে।

আমরা দু'বছর আগে এমনই কিছু স্থাপন করেছি যেখানে কোনও সংকীর্ণ ব্যান্ডউইথ ডিএসএল লাইন (128 কে আপ স্ট্রিম) ব্যবহার করে এমন একটি গ্রাহককে তার নেটওয়ার্ক-সংযুক্ত ওয়েবক্যামগুলি একটি বিস্তৃত দর্শকের কাছে প্রবাহিত করতে হবে। "প্রতিচ্ছবি" হোস্ট হিসাবে একটি ভিএলসি ইনস্টলেশন ক্যাম সিগন্যাল ঘূর্ণন করেছিল, স্ট্রিমিং ক্লায়েন্টদের কাছ থেকে মূল ব্যান্ডউইথ লোড নিয়েছিল এবং স্ট্রিমটিকে বিভিন্ন স্ট্রিমিং প্রোটোকল এবং ফর্ম্যাটে উপস্থাপন করেছিল।


1

সত্যিই আমার দক্ষতার ক্ষেত্র নয়, তবে সম্ভবত আমি আপনাকে একটি সম্ভাব্য দিক নির্দেশ করতে পারি।

বাণিজ্যিক প্রয়োগটি হ'ল অ্যাডোবের ফ্ল্যাশ মিডিয়া সার্ভার ব্যবহার করা। অবশ্যই, এটি একটি ব্যয়বহুল পদ্ধতির হতে পারে। তবে ওপেন সোর্স বিকল্প রয়েছে - যেমন রেড 5 । আপনাকে সার্ভারটি ইনস্টল করতে হবে (এটির জাভা নির্ভরতা রয়েছে)।

একবার আপনি সার্ভার চলমান আছে, আপনি আপনার ফ্রন্ট-এন্ড বাছাই করতে পারেন (আমি বিশ্বাস করি Red5 কিছু নমুনার সাথে আসে, কিন্তু আপনার কাছে ব্যবহার করতে পারেন JW প্লেয়ার সঙ্গে type=camera)।

সামনের প্রান্তটি মিডিয়া সার্ভার থেকে স্ট্রিমিং ভিডিওটি গ্রহণ করবে এবং আপনি মিডিয়া সার্ভারে আপনার স্ট্রিমটি আপলোড করবেন।

আরও তথ্য: রেড 5 সহায়তা এবং তথ্য এবং রেড 5 রেফারেন্স


jwplayer ব্যক্তিগত ব্যবহারের জন্য একটি দুর্দান্ত জিনিস
কেন্ড্রিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.