H264 এনকোডিং এড়াতে আমি রাস্পিভিডকে কীভাবে পেতে পারি? (5 সেকেন্ড লেটেন্সি স্ট্রিমিং ভিডিও থেকে মুক্তি পাওয়া)


11

PI- ক্যামের সাথে PI- ক্যামের সাথে নজরদারি ক্যামেরা হিসাবে ব্যবহার করার সময় 5 সেকেন্ডের বিলম্ব থেকে মুক্তি পাওয়ার বিষয়ে গাজিলিয়ন ফোরাম এবং থ্রেড রয়েছে। অনেক টিউটোরিয়াল দেখায় যে আরটিপি প্রোটোকল ব্যবহার করে চিত্রগুলি এনকোড করতে এবং প্রবাহিত করতে কীভাবে ভিএলসি ব্যবহার করতে হয় যার ফলস্বরূপ ~ 5 সেকেন্ড ল্যাগ হয়।

আমার মতে, কারণটি হ'ল প্রজাতি H264 এ প্রবাহটি এনকোড করছে, যখন ভিএলসিকে এটিকে আবার ডিকোড করতে হবে এবং আরটিপি যা আছে তা পুনরায় এনকোড করতে হবে। কমান্ডলাইনটি এর মতো দেখাচ্ছে:

raspivid -w 640 -h 480 -o - -t 0 |cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264

প্রথম অংশটি বর্ণিতকে স্ট্যান্ডার্ড আউটপুটে ভিডিও স্ট্রিম করতে বলে:

raspivid -w 640 -h 480 -o - -t 0 

পাইপের পরে অংশটি, ভিএলসিকে এটি বাছাই করতে বলে এবং h264 ব্যবহার করে ডিকোড করুন:

cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264

এই mux-ing এবং demux-ing সম্পদের বেশ কোমর!

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

গিথুবতে আমি 330 টি কাঁটাচামচ দেখতে পাচ্ছি তবে সেগুলি রসিকামের জন্য নয় (পুরো ব্যবহারকারল্যান্ডের পুরো প্রকল্পের জন্য) বলে মনে হচ্ছে। আমি একটি কাঁটাচামচ সন্ধানের চেষ্টা হারিয়ে ফেলেছি যা এনকোডিং সরিয়ে দিয়েছে বা এমজেপেইগের মতো সহজ কিছু বাস্তবায়িত করেছে।

সি এবং ভিডিও কোডেক জ্ঞানের অধিকারী কেউ আমাকে এবং অন্যান্য গাজিলিয়ান ব্যবহারকারীদের বিলম্ব থেকে মুক্তি পেতে সহায়তা করতে পারে? সম্ভবত সেই কাঁটাগুলির মধ্যে একটির মধ্যেই সমাধানটি ইতিমধ্যে বাইরে রয়েছে তবে আমি এটির জন্য কোনও ভাগ্য ছাড়াই বেশ কয়েক ঘন্টা ব্যয় করেছি।

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


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

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

হ্যাঁ আমি বুঝতে চাইছি আপনি কী বলতে চাইছেন। আমি আমার সিসিটিভি আইপি সার্ভারে শালীন মানের এমজেপিইজি পাওয়ার চেষ্টা করে দিন কাটিয়েছি। অনেকগুলি জিনিস বদলেছে তবে সরাসরি হার্ডওয়্যার জেপিজি এনকোডিং এবং একটি স্ট্রিমে পাইপিং অস্তিত্বহীন, কারণ এপিআই উপলব্ধিযোগ্য নয়। আমার জানা একমাত্র উপায় হ'ল সফ্টওয়্যার এবং আমি যে সেরা সমাধানটি পেয়েছি তা হ'ল এনজিনেক্স-আরটিএমপি জেপিইজি সিঙ্ক। আইফোনের জন্য এইচএলএস আসলে দুর্দান্ত কাজ করে তবে এটি একটি 5s-10s পিছিয়ে গেছে :(
পাইটর কুলা

1
আপনি ক্যামেরা সফ্টওয়্যারটির জন্য গিথুব প্রকল্পে একটি প্রশ্ন হিসাবে এটি উত্থাপনের চেষ্টা করতে পারেন। কেন এটি করা শক্ত তা আপনি সম্ভবত ব্যাখ্যা পেয়ে যাবেন তবে অন্যরা যদি এটি একটি কার্যকর বৈশিষ্ট্য হিসাবে খুঁজে পান তবে কেউ হয়ত এটি বাস্তবায়ন করতে পারেন।
টমজি

ডেমাক্স ডিকোডের মতো নয় ... দয়া করে এটি দেখুন
ফ্ল্যাশ থান্ডার

উত্তর:


5

এটি সম্ভবত আপনি উত্তরগুলি চেয়ে যাচ্ছেন তা নয়, তবে আমি ভিএলসি স্ট্রিমিংয়ের প্রস্তাব দিই না ..

একটি স্কুল প্রকল্পের জন্য, আমি কিছু স্ট্রিমিং বিকল্প চেষ্টা করেছি (আরপিআইতেও!):

  • ভিএলসি
  • MJPEG
  • GStreamer

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

এবং আপনি যদি এটি ব্যবহার করেন তবে আমার পাইপলাইনটি এখানে:

raspivid -t 0 -w 640 -h 480 -fps 25 -b 1200000 -p 0,0,640,480 -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=1 pt=96 ! gdppay ! tcpserversink host=YOUR_IP port=YOUR_PORT

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

1
আমার একটি সিনোলজিও রয়েছে তবে এটিতে জিস্ট্রিমার চেষ্টা করা হয়নি (আমার মনে হয় যথেষ্ট শক্তিশালী নয়)। বিটিডব্লিউ, অ্যান্ড্রয়েড সম্পর্কে, আপনি এটিতেও জিস্ট্রিমার ব্যবহার করতে পারেন! আমি এটি আমার প্রকল্পের জন্য ব্যবহার করছি এবং এটি ভালভাবে কাজ করছে :)!
Val,

Gstreamer এর সমস্যাটিতে এটি ফ্রেম ডেটাতে টাইমফ্রেমিনেটারওয়াল অন্তর্ভুক্ত করে না এবং এটি একটি সিঙ্ক হিসাবে ব্যবহারযোগ্য নয় (এমনকি বিকল্পটি যোগ করার সাথেও যোগ হয়) :( পাইপের মাধ্যমে মোড স্ক্রিপ্ট পাওয়া যায় তবে আমি প্রায়শই ভিএলসি বোমা পেতে জাস্ট্রিমার পেয়েছিলাম found এটি প্রায় ছিল about 6 মাস আগে যখন আমি সওম সিসিটিভি করছিলাম তখন .. তবে এটি কখনই নির্ভরযোগ্যভাবে কাজ করতে পারে না :(
পাইটর কুলা

@ ভাল সত্য, অ্যান্ড্রয়েডের জন্য একটি এসডিকে রয়েছে, তবে প্লে-স্টোরের বাইরের অনেকগুলি খেলোয়াড় নেই যারা জিএসটি-লঞ্চ-1.0 -v tcpclientsrc হোস্ট = 11.22.33.44 পোর্ট = 1234 এর মতো পাইপলাইন সমর্থন করে! জিডিপিপে! rtph264 দিন! avdec_h264! ভিডিও কনভার্ট! autovideosink সিঙ্ক = মিথ্যা। আইওএসের জন্য আরও কম উপলব্ধ। সিনোলজি একটি দুর্দান্ত কেন্দ্র যা বেশিরভাগ মূলধারার ডিভাইসগুলিকে সমর্থন করে, মোশন-ডিটেকশন, রেকর্ডিং এবং বিজ্ঞপ্তিগুলি, বাক্সের বাইরেও (এবং এসডি-কার্ডগুলি ছাড়াই) পারে can
লুই সোমার্স

আপনি কি এখনও এভাবে ব্যবহার করছেন? নতুন U4VL চালক, কিন্তু H264 সঙ্গে এখনও একই ল্যাগ সমস্যা ভিএলসি স্ট্রিমিং করার
পাযত্র Kula

0

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

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

উপরের সমাধানটি ইউভি 4 এল প্রকল্পের উপাদানগুলি ব্যবহার করে। এই পৃষ্ঠায় UV4L প্রকল্পের ডকুমেন্টেশনটিতেও উল্লেখ করা হয়েছে:

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

আমি এখনও এটি হ্রদ চেষ্টা করি নি যদিও এখনও (যেহেতু আমি আমার বর্তমান সেট আপটি গোলযোগ করতে চাই না)।


1
এটি আপনার সমস্যা ছিল কিনা তা নিশ্চিত নন তবে আপনি যদি রাউটারের মাধ্যমে মাল্টিকাস্ট আরটিএসপি ট্র্যাফিক প্রেরণ করছেন তবে নিশ্চিত হয়ে নিন যে এতে আইজিএমপি স্নুপিং সক্রিয় হয়েছে এবং নিশ্চিত হয়ে নিন যে আপনার পিসি রাউটার থেকে আইজিএমপি কোয়েরিগুলি ব্লক করছে না। অন্যথায় রাউটার বুঝতে পারবে না যে আপনার পিসি প্যাকেটগুলি গ্রহণ করার চেষ্টা করছে, তাই এটি কখনই ফরোয়ার্ড করবে না।
মালভাইনাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.