লিনাক্সে একাধিক ইউএসবি ওয়েবক্যাম ব্যবহার করা


30

দেবিয়ান / লিনাক্সে একাধিক ইউএসবি ওয়েবক্যাম চালানোর ফলে নিম্নলিখিত ত্রুটির ফলস্বরূপ:

libv4l2: error turning on stream: No space left on device
VIDIOC_STREAMON: No space left on device

প্রথমে ওপেনসিভিতে প্রোগ্রামিংয়ের সমস্যা বলে মনে হচ্ছিল পনির এবং এক্সএভিটিভি চালানোর মাধ্যমে একই ত্রুটিগুলি তৈরি হওয়ার পরে রহস্যময় হার্ডওয়্যার / সফ্টওয়্যার সমস্যার সন্ধানে পরিণত হয়েছিল।

স্পষ্টতই এটি ইউএসবি হোস্ট কন্ট্রোলারে উপলব্ধ সমস্ত ব্যান্ডউইথের জন্য ওয়েবক্যামের অনুরোধ করে caused সঙ্গে মনের মধ্যে আমি চালানোর সিদ্ধান্ত নিয়েছে যে wireshark এবং capinfos ঠিক কত ব্যান্ডউইথ একটি একক ক্যামেরা ব্যবহার করা দেখতে।

4 megabits per second at 320x240
14 megabits per second at 640x480
32 megabits per second at 1280x720

মজাদার! এটি ব্যাখ্যা করতে পারে কেন 320x240 এ দুটি ক্যামেরা কাজ করে তবে কোনও উচ্চতর রেজোলিউশন ব্যর্থ হয়। দেখে মনে হচ্ছে যে আমার ইউএসবি কন্ট্রোলারটি কেবল ইউএসবি 1 গতিতে চালিত হচ্ছে, তবুও লসবস একটি ডিভাইসের সাথে সম্পর্কিত দুটি ওয়েবক্যাম দেখায় যা অনুমিতভাবে প্রতি সেকেন্ডে 480 মেগাবাইট সমর্থন করে।

ওয়েবক্যামগুলিকে নিম্নলিখিত কমান্ডগুলি চালিয়ে তাদের সর্বাধিক অনুরোধ করার পরিবর্তে তাদের ব্যান্ডউইথের ব্যবহার গণনা করতে বাধ্য করার প্রস্তাব দেওয়া হয়েছে:

sudo rmmod uvcvideo
sudo modprobe uvcvideo quirks=128

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

আর সেখানেই আমি আটকে আছি। ইউএসবি 2-র সর্বোচ্চ গতির নীচে ভালভাবে পরিচালিত দুটি ওয়েবক্যাম কেন এই ত্রুটিটি উত্পন্ন করবে?

PS: এটি কোনও ডিস্ক স্পেস সমস্যা নয়, যখন ওয়েবক্যাম শুরু হয় তখন ডিএফ কোনও পরিবর্তন প্রদর্শন করে না।

পিপিএস: যদি এটি কোনও পার্থক্য করে তবে এখানে lsusb আউটপুট

উত্তর:


25

ডিং ডিং! ফ্রেইনোডে # ভি 4 এল-এ চমৎকার লোকের কাছ থেকে কিছু সহায়তায় এটি বের করার ব্যবস্থা করা।

দীর্ঘ গল্প সংক্ষিপ্ত: v4l2-ctl ইউএসবি ক্যামেরা সমস্যাগুলি ডিবাগ করার জন্য সেরা সরঞ্জাম tool সমস্ত উপলভ্য কমান্ড এবং ম্যান পৃষ্ঠাটি পড়ুন, আমি যে প্রতিশ্রুতি দিচ্ছি তা মজাদার হবে। V4l2-ctl ব্যবহার করে আমি আবিষ্কার করেছি আমার একটি ক্যামেরা কোনও সংকোচিত ভিডিও মোড সমর্থন করে না। নিম্নলিখিত কমান্ডটি চালিয়ে আপনি আপনার ক্যামেরাগুলি কী মোডগুলি সমর্থন করছেন তা পরীক্ষা করতে পারেন:

v4l2-ctl -d /dev/video0 --list-formats

যা এই জাতীয় কিছু আউটপুট করা উচিত।

 ioctl: VIDIOC_ENUM_FMT
 Index       : 0
 Type        : Video Capture
 Pixel Format: 'MJPG' (compressed)
 Name        : MJPEG

 Index       : 1
 Type        : Video Capture
 Pixel Format: 'YUYV'
 Name        : YUV 4:2:2 (YUYV)

কেবলমাত্র পিক্সেল ফর্ম্যাটটি যদি "YUYV", "IUYV", "I420" বা "GBRG" হয় তবে আপনি কেবল ইউএসবি নিয়ামককে একটি ক্যামেরা চালাতে সক্ষম হবেন * যেহেতু এই ফর্ম্যাটগুলি সঙ্কুচিত। এমজেপিইজি সমর্থন করে এমন একাধিক ওয়েবক্যাম ব্যবহার করা বা সংক্ষেপের অন্য কোনও রূপটি কার্যকর হবে।

আপনি যদি আমার মতো ওপেনসিভি ব্যবহার করেন, তবে ডিফল্ট পিক্সেল ফর্ম্যাটটি সংকুচিত না হওয়ায় চিন্তিত হবেন না যেহেতু ওপেনসিভি ডিপোল্টগুলি যেভাবেই সংক্ষেপে ব্যবহারের ক্ষেত্রে ব্যবহৃত হয়।

** আপনি যদি 320x240 রেজোলিউশন বা তত কম না খুশি হন না * *


1
হাই, যদি সম্ভব হয় তবে আপনি কি আমাকে বলতে পারবেন যে কীভাবে আমার 2 ক্যামেরার পিক্সেল ফর্ম্যাটটি সেট করা উচিত যাতে আমি উভয়ই 640x480 এ ক্যাপচার করতে পারি? আমি ওপেনসিভি ব্যবহার করছি এবং বর্তমানে আপনার একই পরিস্থিতিটি অনুভব করছি যেখানে উভয় ক্যামেরা কেবল 320x240 বা তার চেয়ে কম কাজ করবে
লেকসমা

আহা! v4l2-ctlডিবাগিংয়ের জন্য প্রকৃতপক্ষে একটি দুর্দান্ত সরঞ্জাম। আমার ক্যামেরা সম্পর্কে প্রচুর সন্ধান পেয়েছে এবং সমস্যাটি সমাধান করতে সক্ষম হয়েছিল। যাইহোক, আমি আমার ক্যামেরার রেজোলিউশনটিতে জোর 320x240করে YUYVএবং ক্যামেরা আউটপুট মোড হিসাবে ব্যবহার করে এটি ঠিক করতে সক্ষম হয়েছি । guvcviewএছাড়াও অনেক সাহায্য।
শেহিরার

320x240 বা তার চেয়ে কম রেজোলিউশন ব্যবহার করার সময়, আমি মিশ্র ফলাফল পাই। আমি 4 সস্তা ইউএসবি ওয়েবক্যাম কিনেছি, সমস্ত একই মেক / মডেল। 160x120 এ 2 চালানোর চেষ্টা করার সময় তাদের মধ্যে কিছু একসাথে ভাল কাজ করবে এবং কেউ কেউ মেমরির ত্রুটি দিয়েছে। আমি এর কোন ছড়া বা যুক্তি দেখছি না। মঞ্জুর, এই ওয়েবক্যামগুলির জন্য $ 3 / প্রতিটি খরচ হয়, তাই আমি অনুমান করি যে আমি যা পেয়েছিলাম তা পেয়েছি।
সেরিন

এই ক্যামেরাগুলির মধ্যে দুটি বা আরও বেশিকে ইউএসবি 3.0 এর সাথে সংযুক্ত করা এমনকি ইউএসবি 2.0 হাবের মাধ্যমেও দুর্দান্ত কাজ করে। YUYV- এর সাথে চেক করা হয়েছে।
মিশা লিওন

7

উত্তরটি হ'ল সুইডাভরিফিউজি দ্বারা লিখিত এবং উপরে বর্ণিত uvcvideo পরিবর্তনগুলি ব্যবহার করা। সাফল্যের সাথে ওপেনআর্টির জন্য সংশোধিত কোডটি সংকলন করতে তিনি এবং আমি একসাথে কাজ করেছি। আমি যে সংস্করণটিতে এটি চালাচ্ছি তা হ'ল টিপলিংক wdr3600 রাউটারে ওপেনডব্লিউটি ডিজাইনড ড্রাইভ (ব্লিডিং এজ, r48130):

ফলস্বরূপ: আমি ইউএসবি 2.0 হাবের মাধ্যমে এমজিপিজি ফর্ম্যাটে 1280x960 এবং 15fps এ একযোগে চলতে পারি 3 * সি 270 (লজিটেক) have দুঃখিত, আমার কাছে চতুর্থ সি 270 নেই, দুঃখিত।

আমি YUV ফর্ম্যাট সহ 2 * c270 এবং 1 * GEMBIRD 640 * 480 * 15fps রাখতে পারি, তবে একটি দ্বিতীয় GEMBIRD যুক্ত করা ভয়ঙ্কর দিকে পরিচালিত করে "ক্যাপচার শুরু করতে অক্ষম: ডিভাইসে কোনও স্থান বাকি নেই" (স্পেস == ব্যান্ডউইথ এখানে, আপনি হিসাবে ভাল জানা:)). মনে রাখবেন গেমবার্ড (1908: 2311) == http://www.penguin.cz/~utx/hardware/USB_Camera_AX2311/

3 * সি 270 সহ সিপিইউ ব্যবহার একটি wdr3600 এর ক্ষেত্রে মোটামুটি যুক্তিসঙ্গত:

Mem: 50600K used, 75444K free, 320K shrd, 3436K buff, 8800K cached

CPU:  16% usr  27% sys   0% nic  45% idle   0% io   0% irq  10% sirq

Load average: 1.20 0.85 0.44 4/60 2546

  PID  PPID USER     STAT   VSZ %VSZ %CPU COMMAND

 2240  1679 root     S    15348  12%  17% mjpg_streamer --input input_uvc.so --

 2505  1679 root     S    15368  12%  11% mjpg_streamer --input input_uvc.so --

 2239  1679 root     S    15532  12%  11% mjpg_streamer --input input_uvc.so --

যদি সম্প্রদায়টি কিছু খ্যাতি এবং সমর্থন দেয় তবে আমি মনে করি SwDevRefugee কোডটি ইউভিসি-লিনাক্সে পেতে রাজি।


4

আমি uvcvideo ড্রাইভারের দিকে চেয়েছি এবং প্রবাহটি এমজেপেগ সংকুচিত হলে কুইর্কস = 128 মডিউল পরামিতি উপেক্ষা করা হবে।

আমার পছন্দের ওয়েবক্যামগুলি লজিটেক সি 500 এবং লজিটেক সি 270 হয়েছে এবং আমি দেখতে পেয়েছি যে 1280x1024 এ সি 500 দ্বারা উত্পাদিত চিত্রটি 100kbytes এবং 1280x960 এ সি 270 দ্বারা উত্পাদিত চিত্রটি 200kbytes।

যদি আমি 10fps এ C270 চালনা করি তবে প্রয়োজনীয় বিটরেট হ'ল 10x200000x8 = 16Mbit / s। উবুন্টু ১৪.০৪-তে ইউভিসিড্রাইভার মডিউল সর্বদা ফ্রেম হার নির্বিশেষে 196 মেগাবাইট / গুলি বরাদ্দ করে। সি 500 এর জন্য এটি কিছুটা ভাল আচরণ করা হলেও এটি এখনও একটি ব্যান্ডউইথ হগ।

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

ডিফল্টরূপে আমি 10 এর একটি সংক্ষেপণ ফ্যাক্টর ব্যবহার করি যা ক্যামেরাটি বিশেষভাবে শক্ত চিত্রটিকে সংকোচনের জন্য মুখোমুখি হয় যদি এর জন্য একটি বড় ব্যবধানের অনুমতি দেয়। 1280x960 এবং 10fps এ চলমান C270 এখন 41Mbit / s ব্যবহার করে এবং আমি সহজেই একটি বাসে 4 ক্যামেরা চালাতে পারি।

যদি কেউ এই বৈশিষ্ট্যে আগ্রহী হন তবে আমি ইউভিসিভিডিও রক্ষণাবেক্ষণকারীদের "সংক্ষেপণ" ফ্যাক্টর ধারণাটি বিবেচনা করার চেষ্টা করব।


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

ইউভিসি ড্রাইভারের পরিবর্তনের অনুরোধের সরকারী উপায়টি এই মেলিং তালিকার মাধ্যমে রয়েছে: linux-uvc-devel@lists.sourceforge.net। আমি আরও পরিবর্তন সহ পরবর্তী কিছু পোস্টের সাথে 30-ডিসেম্বর -2015 এ আমার পরিবর্তন অনুরোধ পোস্ট করেছি। একজন রক্ষণাবেক্ষণকারীর কাছ থেকে আমার কোনও প্রতিক্রিয়া নেই। অন্য দুটি ব্যক্তি পরিবর্তনের প্রতি আগ্রহ প্রকাশ করেছেন। আমি জানি না যে কোনও পদক্ষেপ নিতে কয়জন প্রয়োজন required সম্ভবত @laughlinb এছাড়াও মেলিং তালিকায় পোস্ট করতে পারে।
SwDevAlien

@ এসডেডিগ্রিফিউজি: আমি আপনার পরামর্শ চাই unix.stackexchange.com/q/287279/52764
রাগভ

@ রাগাব: আমি মনে করি লুভভিউয়ের মতো ভাল আচরণযুক্ত অ্যাপ্লিকেশন ব্যবহার করে যথাযথ রেজোলিউশনে একসাথে সমস্ত ক্যামেরা খোলার দরকার রয়েছে যা যদি কোনও ব্যর্থতা হয় তবে আপনাকে তথ্যমূলক ত্রুটি বার্তা দিতে হবে give
SwDevAlien

1
রাগভের সমস্যাটি হ'ল তার ক্যামেরাগুলি কেবল YUYV সমর্থন করে এবং যখন সে কুইর্কস = 0x80 পতাকা ব্যবহার করে তখন ড্রাইভার তাকে কমপক্ষে কমপক্ষে 1024 বাইট / মাইক্রোফ্রেম (65.5 এমবিট / গুলি) ব্যবহার করতে বাধ্য করে। এটি এটিকে আরও জটিল করে তুলছে যে সর্বনিম্ন বৃহত্তর ব্যান্ডউইথ যে ক্যামেরাগুলি সমর্থন করছে তা 2040 বাইট / মাইক্রোফ্রেম, যদিও তিনি কেবল 6fps এ 320x240 চান তবে তার কেবল একটি ইউএসবি বাসে 2 টি ক্যামেরা থাকতে পারে। কার্নেলের 2.6.32 এবং 3.16 রিলিজের মধ্যে uvcvideo ড্রাইভারের সাথে সর্বনিম্ন 1024 বাইট / মাইক্রোফ্রেম সীমাবদ্ধতা যুক্ত করা হয়েছিল।
SwDevAlien

-1

আমিও স্থানের ত্রুটির বাইরে পেয়েছি। যা কাজ করেছিল তা হ'ল একটি ক্যামেরা আনপ্লাগ করা এবং এটি আমার স্থিতিশীল পিসিতে অন্য একটি ইউএসবি পোর্টে প্লাগ করা - এটি সম্পর্কে প্রায় 6 বা 7 ইউএসবি পোর্ট ছড়িয়ে আছে। 'Show_webcams 0 1' চালানো হঠাৎ করেই দুটি চিত্র নিয়ে আসে।

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