আমি পাই বি + এবং পাই ক্যামেরা পেয়েছি এবং এখন ক্যামেরা থেকে আমার হোম সার্ভারে H.264 এনকোডযুক্ত ভিডিওটি প্রবাহিত করতে সবচেয়ে দক্ষ (নিম্ন সিপিইউ) এবং সর্বনিম্ন-ল্যাটেনসি কনফিগারেশনটি সন্ধান করার চেষ্টা করছি।
আমি নিম্নলিখিতটি পড়েছি:
(সমস্ত লিঙ্ক gstreamer-1.0 ব্যবহার করে deb http://vontaene.de/raspbian-updates/ . main।)
বিগত বছরগুলিতে এ বিষয়ে অনেক কিছু করা হয়েছে।
মূলত, আমাদের আউটপুটটি পাইপ করতে raspividহয়েছিল gst-launch-1.0(লিঙ্ক 1 দেখুন)।
তারপরে (লিঙ্ক 2) সরকারী ভি 4 এল 2 ড্রাইভার তৈরি করা হয়েছিল যা এখন মানসম্পন্ন, এবং এটি কেবল পাইপ ছাড়াই সরাসরি জিস্ট্রেমার ব্যবহার করে ডেটা পেতে সক্ষম করে (বিশেষত টাওল্ফের পোস্টটি দেখুন »শনিবার 07 ডিসেম্বর, 2013 3:34 pm লিঙ্কে 2):
প্রেরক (পাই): gst-launch-1.0 -e v4l2src do-timestamp=true ! video/x-h264,width=640,height=480,framerate=30/1 ! h264parse ! rtph264pay config-interval=1 ! gdppay ! udpsink host=192.168.178.20 port=5000
রিসিভার: gst-launch-1.0 -v udpsrc port=5000 ! gdpdepay ! rtph264depay ! avdec_h264 ! fpsdisplaysink sync=false text-overlay=false
আমি যদি সঠিকভাবে বুঝতে পারি তবে, দুটি উপায়ই H264 ডিকোডিংয়ের জন্য জিপিইউ ব্যবহার করে তবে পরবর্তী প্রক্রিয়াটির মধ্যে কোনও পাইপ না থাকার কারণে কার্নেলের মধ্য দিয়ে আরও একবার যাওয়ার প্রয়োজন হয় না কারণ এটি কিছুটা মুর দক্ষ।
এখন আমি এই সম্পর্কে কিছু প্রশ্ন আছে।
দ্বিতীয়টি কি এখনও দক্ষতার সাথে ক্যামেরা থেকে H264 পাওয়ার সবচেয়ে সাম্প্রতিকতম উপায়? আমি সম্পর্কে পড়েছি
gst-omx, যা জাস্ট্রিমার পাইপলাইনগুলিকে পছন্দ করে... video/x-raw ! omxh264enc ! ...। এটি কি কেবল ব্যবহারের চেয়ে আলাদা কিছু করেvideo/x-h264, বা এটি আরও কার্যকর হতে পারে? পার্থক্য কি?আমি
video/x-h264 ...পাইপলাইনটি ব্যবহার করার সময় gstreamer এনকোডিং প্লাগইনটি আসলে কীভাবে ব্যবহার করা যায় তা আমি কীভাবে জানতে পারি ? অন্যান্য পাইপলাইন অংশের তুলনায় এটি কেবল আমার যে ফর্ম্যাটটি চান তা সুনির্দিষ্ট করে বলে মনে হচ্ছে, যেখানে আমি স্পষ্টতই (কোড) উপাদানটির (যেমনh264parseবাfpsdisplaysink) নামকরণ করেছি ।ইন লিংক 1 এই উত্তর Mikael Lepistö উল্লেখ "আমি পাশ স্ট্রিমিং থেকে এক অপ্রয়োজনীয় ফিল্টার পাস মুছে" , যার অর্থ তিনি কেটে
gdppayএবংgdpdepay। তারা কি করে? কেন তাদের প্রয়োজন? আমি কি সত্যিই সেগুলি খুলে ফেলতে পারি?তিনি আরও উল্লেখ করেছেন যে প্রাপ্তির দিকের
caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96"প্যারামিটার নির্দিষ্ট করেudpsrcতিনি স্ট্রিমের মাঝামাঝি স্ট্রিমিং শুরু / পুনরায় শুরু করতে সক্ষম। এই ক্যাপগুলি কী অর্জন করে, এই নির্দিষ্ট পছন্দগুলি কেন, সেগুলি সম্পর্কে আমি আরও কোথায় পড়তে পারি?আমি যখন 3 এবং 4 প্রশ্নের পরামর্শ অনুসারে কাজ করি (তখন যোগ করে দেওয়া এবং
capsছেড়ে দেওয়া ) তারপরে আমার ভিডিওর প্রচ্ছন্নতা আরও খারাপ হয়ে যায় (এবং মনে হচ্ছে, সময়ের সাথে সাথে এই বিলম্বতা আরও বেড়ে যায়, এবং কয়েক মিনিটের পরে ভিডিওটি বন্ধ হয়ে যায়)! কেন হতে পারে? আমি মূল কমান্ডটি দিয়ে যে বিলম্ব করেছি তা পেতে চাই, তবে যে কোনও সময় প্রবাহে যোগ দিতে সক্ষম হওয়ার বৈশিষ্ট্যটিও রয়েছে।gdppaygdpdepayআমি পড়েছি যে আরটিএসপি + আরটিপি সাধারণত টিসিপি এবং ইউডিপির সংমিশ্রণ ব্যবহার করে: নিয়ন্ত্রণ বার্তা এবং অন্যান্য জিনিসগুলি যাতে হারিয়ে না যায় সেজন্য TCP এবং প্রকৃত ভিডিও ডেটা সংক্রমণের জন্য ইউডিপি। উপরের সেটআপগুলিতে, আমি আসলে এটি ব্যবহার করছি, বা আমি কেবল ইউডিপি ব্যবহার করছি? Gstreamer এই যত্ন নেয় কিনা তা আমার কাছে কিছুটা অস্বচ্ছ।
আমি এই প্রশ্নের একটিও উত্তর যে কোনও উত্তর প্রশংসা করব!
cat file | grep ...পরিবর্তে grep ... file। পাইপটি কার্নেলের কাছে এবং অনুলিপি করার জন্য আরও একটি স্তর যুক্ত করে, যা সহজেই পরিমাপযোগ্য, বিশেষত লো মেমরি ব্যান্ডউইথথৃত ডিভাইসে। যদি gstreamer সরাসরি ডিভাইস ফাইল থেকে পড়তে পারেন তবে কেন এটি ব্যবহার করবেন না? আপনার raspivid | cvlcপরামর্শ সম্পর্কে : আমি জাস্ট্রিমার ভিত্তিক সমাধানটিতে স্যুইচ করার আগে আমি এটি ব্যবহার করছিলাম, এটি জিস্ট্রেমারের চেয়ে 3 সেকেন্ড বেশি বিলম্বিত হয়েছে (কেন জানি না)।
cvlcএটি চালানো, ~ 45% ব্যবহার করে, তবে কেবল সেই ডাটা হারে পাইপের মধ্য দিয়ে দৌড়ানো (আবার মনে রাখবেন, পাইপটি এটি কমিয়ে দিচ্ছে না ) সবেই সুইটি সরাবে, আমার ধারণা। <5% পছন্দ করুন। আপনি যদি যথাসম্ভব দক্ষতার সাথে এটি করতে চান তবে এটি সম্পূর্ণ তুচ্ছ নয় ...
raspivid | cvlcএটির একটি এবং এটি 40-50%। লোকেরা কোনও প্রশ্নের পক্ষে আরও ভাল প্রতিক্রিয়া জানাতে পারে যা একটি নির্দিষ্ট চিত্রের উন্নতি করতে তাদেরকে চ্যালেঞ্জ জানায়। এখনই আপনি কেন অনেক কিছু জিজ্ঞাসা করছেন, কেন প্রতিটি কারণ তাত্পর্যপূর্ণ তা ব্যাখ্যা না করেই।
|এই প্রসঙ্গে পাইপ ব্যবহার করা যে কোনও সমস্যা তৈরি করে এই ধারণাটি বিএসের একটি অবিশ্বাস্য টুকরো আপনি কি কোনওraspivid | cvlcপদ্ধতি ব্যবহার করে দেখেছেন? এটির সাথে খেলতে আমার খুব বেশি বা বেশি সময় ক্যামেরা লাগেনি, তবে এটি ব্যবহার করে কোনও একটি http প্রবাহ তৈরি করতে (অন্য প্রান্তে লিনাক্সে দেখা যায়vlc) / ঠিক আছে বলে মনে হচ্ছে।