30fps এ rfmp এ স্ট্রিমিং ffmpeg


0

আমি আমার ডেস্কটপটি ফেসবুক আরটিএমপি সার্ভারে স্ক্রিন-ক্যাপচার-রেকর্ডার ব্যবহার করে স্ট্রিম করার চেষ্টা করছি:

ffmpeg -re -rtbufsize 256M -f dshow -i audio="Mikrofon (Realtek Audio)" 
-rtbufsize 256M -f dshow -i audio="virtual-audio-capturer"  
-rtbufsize 1024M -f dshow -i video=screen-capture-recorder -r 30  
-filter:v scale=1280:720 -c:v  h264_nvenc -pix_fmt yuv420p -preset fast 
-b:v 8M -maxrate:v 10M  -c:a aac -b:a 128k -ar 44100 
-f flv rtmp://live-api.facebook.com:80/rtmp/..............

আমি জিপিইউ ত্বরণের জন্য h264_nvenc কোডেক ব্যবহার করছি, তবে আমি কেবল 12-18 fps এ rtmp এ স্ট্রিম করতে পারি। যাইহোক, আমি যখন কোনও ফাইলে স্ট্রিম করি:

ffmpeg -re  -rtbufsize 256M -f dshow -i audio="Mikrofon (Realtek Audio)" 
-rtbufsize 256M -f dshow -i audio="virtual-audio-capturer"  
-rtbufsize 1024M -f dshow -i video=screen-capture-recorder -r 30  
-filter:v scale=1280:720 -c:v  h264_nvenc -pix_fmt yuv420p -preset fast 
-b:v 8M -maxrate:v 10M  -c:a aac -b:a 128k -ar 44100 
D:\test.mp4 -y

আমি গেম খেলেও সমস্যা ছাড়াই 30 fps পাই (যেমন। ডিউটির কল 6, খুব সুন্দর এইচডাব্লু ড্রেন)।

এছাড়াও, যখন স্ট্রিমিং (টু আরটিএমপি) শুরু হয়, যখন আমি এই ত্রুটিটি পেতে থাকি তখন আমার-আর্টবুফাইজ আকার 1024 এম হয় যা আমি বেশ বড় বলে মনে করি এবং অনেকগুলি ফ্রেম হারিয়ে যায়:

real-time buffer too full or near too full! frame dropped!

কীভাবে আপনি rtbufsize ত্রুটি রোধ করতে সাহায্য করতে পারেন, এবং আমার আদেশটি পরিবর্তন করা সম্ভব হয় যাতে আমি 30 fps এ rtmp এ স্ট্রিম করতে পারি? ধন্যবাদ

প্রয়োজনে আমার ffmpeg বিল্ড কনফিগারেশনটি হ'ল:

ffmpeg সংস্করণ 3.3.3 কপিরাইট (সি) 2000-2017 জিসিসি 7.1.0 (জিসিসি) কনফিগারেশন দিয়ে তৈরি এফএফপিপেইগ বিকাশকারী:--ডাইজেবল-স্ট্যাটিক - সক্ষম-ভাগ করা - সক্ষম-জিপিএল - সক্ষম-সংস্করণ 3 - সক্ষম-চুদা - সক্ষম-কুইড - সক্ষম-ডি 3 ডি 11va - সক্ষম-ডিএক্সভা 2 - সক্ষম-লিবমএফএক্স - অক্ষম-ন্যাভ --enable-avisynth --enable-bzlib --enable-fontconfig --able-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --able-libgme --able-libgsm --enable-libilbc --enable-libmodplug --able-libmp3lame --enable-libopencore-amrnb --able-libopencore-amrwb --enable-libopenh264 - - সক্ষম-লিবোপেনজপেগ - সক্ষম-লিবোপ্পাস - সক্ষম-লিবার্ট্প - সক্ষম-লিবাস্পেপি - সক্ষম-লিবাসক্সার - সক্ষম-লিব্সপেক্স - অক্ষম-লিবিথোয়ারা - সক্ষম-লিবটওয়েলেম - সক্ষম-লিবিডড্যাব - সক্ষম-লিবোভো amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --able-libxavs -enable-libxvid --enable-libzimg--enable-lzma - সক্ষম-zlib

উত্তর:


0

শুরু করতে, আমি -rtbufsizeপ্রতিটি ইনপুট জন্য পৃথক হারাতে হবে । যদি ffmpeg পিছিয়ে থাকে, রিয়েল টাইম বাফারকে সাহায্য করবে না যতক্ষণ না আপনি মাঝে মাঝে স্পাইকগুলি প্রতিকার করার চেষ্টা করছেন। আমি জানিনা যে উইন্ডোজে হেডরুম ffmpeg কতটা রিজার্ভ করে তবে আমি মনে করি এটি নিরাপদ যে আপনি যদি আউটপুট ফ্রেম রেট 30 এ সেট করে 12fps পেয়ে থাকেন তবে তা কখনই ধরা পড়বে না। এটি মূলত পরে এনকোড করার জন্য স্ক্রিন ক্যাপচারের 1GB অবধি রেকর্ডিং করছে , সম্ভবত এক মিনিটের বাফার হিসাবে অভিনয় করে , ফ্রেমগুলি নামার আগে সম্ভবত এটি আরও ছোট হবে।

আপনি বলেছিলেন যে কোনও সমস্যা ছাড়াই আপনি 30fps এ ফাইল সংরক্ষণ করতে সক্ষম হয়েছেন, তাই এটি সম্ভবত ফেসবুকে আপলোডের গতি। সুতরাং আপনাকে আউটপুটটি মূলত ছোট করতে হবে।

আমি নিশ্চিত যে ffmpeg সমস্ত ইনপুট ডিফল্ট হিসাবে 25fps হিসাবে পড়ে, তাই 30 এর পরিবর্তে আউটপুট 25fps এ সেট করা আপনার এফপিএসকে নিখরচায় 20 এরও বেশি আপ করতে পারে। যদিও প্রদর্শনী কীভাবে কাজ করে সে সম্পর্কে আমি নিশ্চিত নই, তাই আপনি যদি সত্যই 30fps চান তবে আমি সে সম্পর্কে ভুল হতে পারি।

এবং আমি কেবল লক্ষ্য করেছি যে আপনি -b:v 8Mএনকোডারটির জন্য রেখেছেন ... এটি কি আপনার ইন্টারনেট সংযোগের জন্য বাস্তববাদী? অনেকগুলি আইএসপি এর আবাসিক গ্রাহকদের জন্য আপলোডগুলি থ্রটল করবে, যাতে আপনি সম্ভবত 3-4 এমএমপিএসের বেশি না করতে সক্ষম হবেন, বিশেষত যদি আপনি লাইভ স্ট্রিম রাখতে চান।

আপনি ব্যবহার করতে চান -preset=slowবা mediumযদি আপনি প্রিসেট ব্যবহার করতে চলেছেন। এটি হার্ডওয়্যার এনকোডারটির জন্য আলাদা হতে পারে, সুতরাং আপনি এর অপশনগুলি পরীক্ষা করতে চাইতে পারেন, তবে নেটওয়ার্কের গতি বাধা হিসাবে, আপনি যদি রিয়েল-টাইম স্ট্রিমিং চান, তবে ভিডিওর ফ্রেম হারের চেয়ে ছোট হতে হবে, আপনি তেমন কিছু করতে পারবেন না frame , রেজোলিউশন বা সংক্ষেপণ।

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