অ্যান্ড্রয়েড ফোন থেকে অন্য ওয়াইফাইয়ের মাধ্যমে লাইভ-স্ট্রিম ভিডিও


115

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

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

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

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

আমি স্পাইড্রয়েড জুড়ে হোঁচট খেয়েছি তবে এটি একটি ডেস্কটপে ভিএলসি ব্যবহার করছে যাতে এটি আমার পক্ষে ভাল না।


সম্পাদনা: ক্যাগনি মোরোর ব্লগটি দেখুন । তিনি এটিকে বাস্তবায়নের বিষয়ে বিশদে যান।


1
আপনি কি আপনার প্রকল্পটি ভাগ করে নিতে পারেন, আমি একই কাজ করছি তবে অ্যান্ড্রয়েড এবং ডেস্কটপ (ওয়েবক্লিয়েন্ট) এর মধ্যে ভিডিও স্ট্রিমিং করছি ... আমি এইচটিএমএল 5 + ওয়েবসকেট সম্পর্কে ভেবেছিলাম তবে আমি অনেক সমস্যার মুখোমুখি ...
বুকসির

1
আমি এই জাতীয় সমাধান বিকাশ করছি, এটি আপনি যা করার চেষ্টা করছেন তার চেয়ে 80% একই। আপনাকে একটি ভিওআইপি সার্ভার কনফিগার করতে হবে এবং তারপরে সেই ভিওআইপি-র জন্য ক্লায়েন্ট তৈরি করতে হবে যা আপনার ভয়েস এবং ভিডিও স্থানান্তর করবে। আমি এটিও সন্ধান করছি। যদি কেউ জানে তবে দয়া করে আমাকে জানান।
এজেড_

1
ইমেলটি আমার প্রোফাইলে দেওয়া হয়েছে
এজেড_

1
আমার প্রকল্প দেখুন। জাভাতে সমস্ত কিছু এবং বিশদভাবে ব্যাখ্যা করা হয়েছে cagneymoreau.com/stream-video-android
cagney

1
ধন্যবাদ আমিও একটি রোবোট নিয়ে কাজ করছি। মজাদার জিনিস
4:58

উত্তর:


55

আপনার অ্যাপে যদি রেকর্ডিং এবং প্লেব্যাক কার্যকারিতা না প্রয়োজন হয় তবে অফ-দ্য-শেল্ফ স্ট্রিমিং অ্যাপ এবং প্লেয়ার ব্যবহার করা যুক্তিসঙ্গত পছন্দ।

আপনার যদি আপনার অ্যাপ্লিকেশনটিতে থাকার প্রয়োজন হয় তবে আপনাকে মিডিয়া রেকর্ডার এপিআই (সার্ভার / ক্যামেরা অ্যাপের জন্য) এবং মিডিয়াপ্লেয়ার (ক্লায়েন্ট / প্লেয়ার অ্যাপ্লিকেশানের জন্য) সন্ধান করতে হবে।

সার্ভারের জন্য দ্রুত নমুনা কোড:

// this is your network socket
ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);
mCamera = getCameraInstance();
mMediaRecorder = new MediaRecorder();
mCamera.unlock();
mMediaRecorder.setCamera(mCamera);
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
// this is the unofficially supported MPEG2TS format, suitable for streaming (Android 3.0+)
mMediaRecorder.setOutputFormat(8);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
mediaRecorder.setOutputFile(pfd.getFileDescriptor());
mMediaRecorder.setPreviewDisplay(mPreview.getHolder().getSurface());
mMediaRecorder.prepare();
mMediaRecorder.start();

প্লেয়ারের দিক থেকে এটি কিছুটা জটিল, আপনি এটি চেষ্টা করতে পারেন:

// this is your network socket, connected to the server
ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(pfd.getFileDescriptor());
mMediaPlayer.prepare();
mMediaPlayer.start();

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

আরো দেখুন:

সকেট এফডি ব্যবহার করে ফোন থেকে ফোনে লাইভ ভিডিও স্ট্রিম করুন

এমপি 3 প্লেব্যাকের শুরুতে মিডিয়াপ্লেয়ার স্টুটার্স


2
হ্যালো অ্যালেক্স, আরটিপি এর মাধ্যমে অ্যান্ড্রয়েড ফোন থেকে স্থানীয় সঞ্চিত অডিও ফাইলটি প্রেরণে আপনার কোনও অভিজ্ঞতা আছে?
বি 770

হাই আপনি কি আমাকে এটির সম্পূর্ণ প্রকল্পটি প্রেরণ করতে পারেন?
উমর আসগর

1
আপনি কি আপনার সম্পূর্ণ প্রকল্প পোস্ট করতে পারেন?
ইয়াঝিনী মুরুগাইয়া

কোনটি হ'ল সার্ভার সকেট এবং ক্লায়েন্টের সকেট
ইয়াঝিনী মুরুগাইয়া

1
@ আহমেদহ্যামডি প্রকৃতপক্ষে: এপিআই স্তরের ২৩ (অ্যান্ড্রয়েড .0.০) এর setDataSource(MediaDataSource)পরিবর্তে আপনি ব্যবহার করতে পারেন FileDescriptor। কার্যকর করা MediaDataSourceআপনাকে কোনও অস্থায়ী ফাইলে না লিখে নিজের নেটওয়ার্ক রিডিং এবং বাফারিং করতে দেয়।
অ্যালেক্স আমি

9

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


হ্যাঁ, এটি আমার শেষ অবলম্বন হতে চলেছিল। সাহায্য করার জন্য ধন্যবাদ!
অ্যান্ড্রয়েডু

3
অবশ্যই কোন জেপিগ স্ট্রিমটি পিএনজি স্ট্রিমের চেয়ে বেশি দক্ষ হবে?
স্টিলথকপ্টার

আমি কেবল একটি চিত্র ব্যবহার করার পরামর্শ
দিচ্ছিলাম

@ ক্রসরেগ> আপনি কি পরামর্শ দিন দয়া করে নমুনা কোড পেস্ট করতে পারেন?
জ্যাস্পার

8

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


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

সম্ভবত আপনি ডিএলএনএ অনুমান সম্পর্কে কিছু গবেষণা করতে পারেন এবং নিজের জন্য এটি ব্যবহার করে কোনও অ্যাপ তৈরির জন্য ছুরিকা নিতে পারেন বা আইপি ওয়েবক্যামের বিকাশকারীকে ইমেল করতে পারেন এবং কিছু সহায়তা চাইতে পারেন।
lmad

1
বিপরীতে ইঞ্জিনিয়ার? : পি
এমজিবিসন

হ্যাঁ, আমি অনুমান করি এমন অন্য কোনও পছন্দ পাই নি।
অ্যান্ড্রয়েডু

5

আপনি এটি অ্যান্ড্রয়েড ভিএলসি চেক করতে পারেন এটি স্ট্রিম করতে এবং ভিডিও প্লে করতে পারে, আপনি যদি আরও ইন্ডিগেট করতে চান তবে তাদের জিআইটি চেক করতে পারেন তাদের কী করে তা বিশ্লেষণ করতে। শুভকামনা!


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