আইওএস এভিপ্লেয়ার শুরুর বিলম্ব কীভাবে হ্রাস করা যায়


115

দ্রষ্টব্য, নীচের প্রশ্নের জন্য: সমস্ত সম্পদ ডিভাইসে স্থানীয় - কোনও নেটওয়ার্ক স্ট্রিমিং হচ্ছে না। ভিডিওগুলিতে অডিও ট্র্যাক রয়েছে।

আমি এমন একটি আইওএস অ্যাপ্লিকেশন নিয়ে কাজ করছি যা প্রশ্নোত্তর ভিডিও ক্লিপ শুরু করতে সর্বনিম্ন বিলম্বের সাথে ভিডিও ফাইল খেলতে পারে। দুর্ভাগ্যক্রমে আমরা জানি না যে সুনির্দিষ্ট ভিডিও ক্লিপটি পরবর্তী কী, যতক্ষণ না আমাদের এটির শুরু করার প্রয়োজন হয়। বিশেষত: যখন একটি ভিডিও ক্লিপ বাজানো হয়, তখন আমরা জানব যে পরবর্তী ভিডিওগুলি (মোটামুটিভাবে) 10 টি ভিডিও ক্লিপগুলি কী, তবে পরবর্তী ক্লিপটি 'অবিলম্বে' খেলার সময় না আসা পর্যন্ত আমরা কোনটি ঠিক তা জানি না know

আমি প্রকৃত আরম্ভের বিলম্বগুলি দেখার জন্য যা করেছি তা হ'ল addBoundaryTimeObserverForTimesভিডিও প্লেয়ারকে কল করা, ভিডিওটি কখন খেলতে শুরু করে তা দেখার জন্য এক মিলি সেকেন্ডের সময়কালের সাথে এবং আমি সেই সময়ের স্ট্যাম্পের পার্থক্যটি প্রথম স্থানের সাথে নিয়ে যাই কোড যা নির্দেশ করে যে কোন সম্পদটি খেলতে শুরু করবে।

আমি এখন পর্যন্ত যা দেখেছি তা থেকে, আমি দেখতে পেয়েছি যে AVAssetলোডিংয়ের সংমিশ্রণটি ব্যবহার করে এবং AVPlayerItemএটি প্রস্তুত AVPlayerStatusReadyToPlayহওয়ার পরে এটি থেকে একটি তৈরি করা এবং তারপরে আমি খেলার কল করার আগে অপেক্ষা করতে শুরু করতে 1 এবং 3 সেকেন্ডের মধ্যে সময় নেয় ক্লিপ.

আমি যেহেতু আমার কাছে মোটামুটি সমতুল্য: কল করা [AVPlayerItem playerItemWithURL:]এবং AVPlayerItemStatusReadyToPlayখেলার জন্য অপেক্ষা করাতে আমি স্যুইচ করেছি । মোটামুটি একই কর্মক্ষমতা।

একটি জিনিস আমি পর্যবেক্ষণ করছি তা হচ্ছে প্রথম এভিপ্লেয়ার আইটেম লোডটি বাকীগুলির চেয়ে ধীর। মনে হয় একটি ধারণা হ'ল প্রথম ভিডিওটি চালানোর চেষ্টা করার আগে একটি স্বল্প / খালি সম্পদ সহ এভিপ্লেয়ারের প্রাক-বিমান চালানো ভাল সাধারণ অনুশীলনের হতে পারে। [ প্রথমবার কোনও শব্দ বাজলে AVAudioPlayer এর জন্য ধীর শুরু করুন

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

আপডেট: ধারণা 7, নীচে, প্রায় 500 এমএসের পরিবর্তিত হিসাবে ফলিত ফলন। এটি একটি উন্নতি, তবে এটি আরও দ্রুত পেয়ে ভাল লাগবে।

আইডিয়া 1: এন এভিপ্লেয়ারগুলি ব্যবহার করুন (কাজ করবে না)

~ 10 AVPPlayerঅবজেক্ট ব্যবহার করে এবং সমস্ত ~ 10 টি ক্লিপগুলি শুরু করুন এবং বিরতি দিন এবং একবার আমরা যখন জানতে পারি যে আমাদের কোনটি সত্যই প্রয়োজন, স্যুইচ করুন এবং সঠিকটি বিরতি দিন AVPlayerএবং পরবর্তী চক্রটির জন্য আবার সমস্ত শুরু করুন।

আমি মনে করি এটি কাজ করে না, কারণ আমি পড়েছি AVPlayer'sআইওএসে মোটামুটি 4 সক্রিয় সীমাবদ্ধতা রয়েছে । এখানে স্ট্যাকওভারফ্লোতে কেউ একজন জিজ্ঞাসা করেছিল এবং 4 টি অ্যাভিপ্লেয়ার সীমা সম্পর্কে জানতে পেরেছিল: দ্রুত-স্যুইচিং-মধ্যে-ভিডিও-ব্যবহার-অ্যাফাউন্ডেশন

আইডিয়া 2: AVQueuePlayer ব্যবহার করুন (কাজ করবে না)

আমি বিশ্বাস করি না যে 10 এলোমেলো AVPlayerItemsকরা AVQueuePlayerসমস্ত বিরামবিহীন শুরুর জন্য প্রি-লোড করবে। AVQueuePlayerএটি একটি সারি, এবং আমি মনে করি এটি সত্যই কেবলমাত্র তাত্ক্ষণিক প্লেব্যাকের জন্য কাতারে থাকা পরবর্তী ভিডিও তৈরি করে। আমি জানি না যে 10 টি ভিডিওর মধ্যে কোনটি আমরা আবার খেলতে চাই, তা না শুরু করার আগ পর্যন্ত। iOS-avplayer-ভিডিও-প্রিলোডিং

আইডিয়া 3: লোড, খেলুন এবং AVPlayerItemsপটভূমিতে ধরে রাখুন (এখনও 100% নিশ্চিত নয় - তবে ভাল দেখাচ্ছে না)

আমি দেখছি যে পটভূমিতে প্রতিটি ভিডিও ক্লিপের প্রথম দ্বিতীয়টি লোড করা এবং প্লে করার কোনও সুবিধা আছে (ভিডিও এবং অডিও আউটপুট দমন করুন) এবং প্রতিটিটির একটি রেফারেন্স রাখুন AVPlayerItemএবং যখন আমরা জানি যে কোন আইটেমটি খেলতে হবে when বাস্তব, এটিকে একটিতে অদলবদল করুন এবং সক্রিয় একের সাথে পটভূমি AVPlayer স্যুপ করুন। পাখলান পুনরাবৃত্তি.

তত্ত্বটি হ'ল যে সাম্প্রতিক সময়ে খেলে নেওয়া AVPlayer/AVPlayerItemএখনও কিছু প্রস্তুত সংস্থান রাখতে পারে যা পরবর্তী প্লেব্যাকটি আরও দ্রুত তৈরি করে। এখনও অবধি আমি এর থেকে উপকারগুলি দেখিনি, তবে AVPlayerLayerপটভূমির জন্য আমার সঠিকভাবে সেটআপ নাও থাকতে পারে । আমি সন্দেহ করি এটি যা দেখেছে তার থেকে জিনিসগুলি সত্যই উন্নত করবে।

আইডিয়া 4: একটি আলাদা ফাইল ফর্ম্যাট ব্যবহার করুন - সম্ভবত এমন একটি যা লোড করা দ্রুত?

আমি বর্তমানে .m4v এর (ভিডিও-এমপিইজি 4) এইচ .264 ফর্ম্যাটটি ব্যবহার করছি। এইচ .264 এর বিভিন্ন কোডেক অপশন রয়েছে, সুতরাং এটি সম্ভব যে কিছু অপশন অন্যদের চেয়ে দ্রুততর হয়। আমি খুঁজে পেয়েছি যে আরও উন্নত সেটিংস ব্যবহার করে যা ফাইলের আকারকে আরও ছোট করে তোলে তা চেষ্টা করার সময় বাড়িয়ে দেয়, তবে অন্য কোনও উপায় খুঁজে পায় না options

আইডিয়া 5: ক্ষতিহীন ভিডিও ফর্ম্যাট + AVQueuePlayer এর সংমিশ্রণ

যদি এমন কোনও ভিডিও ফর্ম্যাট থাকে যা লোড করা দ্রুত হয় তবে ফাইলের আকারটি যেখানে উন্মাদ, সেখানে একটি ধারণা হতে পারে যে প্রতিটি ভিডিও ক্লিপটির প্রথম 10 সেকেন্ড এমন সংস্করণ সহ প্রস্ফুটিত হবে যা দ্রুত এবং লোড করা দ্রুত, তবে ফিরে H.264 এ এনকোড করা একটি সম্পদ সহ এটি আপ। একটি AVQueuePlayer ব্যবহার করুন, এবং সঙ্কুচিত ফাইল ফর্ম্যাটে প্রথম 10 সেকেন্ড যুক্ত করুন, এবং এটি H.264 এর সাথে প্রস্তুত করুন যা 10 সেকেন্ড অবধি প্রস্তুত / প্রিলোড সময় পায়। সুতরাং আমি উভয় বিশ্বের 'সেরা' পেতে চাই: দ্রুত শুরুর সময়গুলি, তবে আরও কমপ্যাক্ট ফর্ম্যাট থেকেও উপকৃত হয়।

আইডিয়া 6: একটি মানহীন AVPlayer ব্যবহার করুন / আমার নিজের লিখুন / অন্য কারও ব্যবহার করুন

আমার প্রয়োজন হিসাবে, সম্ভবত আমি AVPlayer ব্যবহার করতে পারি না, তবে AVAssetReader অবলম্বন করতে হবে, এবং প্রথম কয়েক সেকেন্ড ডিকোড করতে হবে (সম্ভবত ডিস্কে কাঁচা ফাইল লিখতে হবে), এবং যখন প্লেব্যাক আসে, এটি খেলতে কাঁচা বিন্যাসটি ব্যবহার করুন দ্রুত ফিরে। আমার কাছে এটি একটি বিশাল প্রকল্পের মতো বলে মনে হচ্ছে এবং যদি আমি এটি নির্মোহভাবে চালিয়ে যাই তবে এটি অস্পষ্ট / এমনকি আরও ভাল কাজ করার সম্ভাবনা নেই। প্রতিটি ডিকোডড এবং কমপ্রেসড ভিডিও ফ্রেমটি ২.২৫ এমবি। নির্লজ্জভাবে বলতে - যদি আমরা ভিডিওটির জন্য ~ 30 fps নিয়ে যাই তবে আমি ~ 60 এমবি / এস-পড়ার-থেকে-ডিস্কের প্রয়োজনীয়তাটি শেষ করতাম, যা সম্ভবত অসম্ভব / এড়ানো। স্পষ্টতই আমাদের কিছু স্তরের চিত্র সংকোচনের করতে হবে (সম্ভবত দেশী ওপেনজিএল / এস সংক্ষেপণ ফর্ম্যাটগুলি পিভিআরটিসি এর মাধ্যমে) ... তবে এটি দুর্দান্ত পাগল। সম্ভবত সেখানে একটি লাইব্রেরি আছে যা আমি ব্যবহার করতে পারি?

আইডিয়া 7: সবকিছুকে একটি একক চলচ্চিত্রের সম্পদে, এবং অনুসন্ধান টোটাইমে একত্র করুন

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

আপনি কোন পদ্ধতির সেরা বলে মনে করেন? এখনও পর্যন্ত, আমি পিছিয়ে পড়া কমানোর ক্ষেত্রে এতটা অগ্রগতি করতে পারি নি।


এটির মূল্যের জন্য, আমি আইডিয়া 7. নিয়ে যাচ্ছি It's এটি এখনও ধীর, তবে অন্যান্য বিকল্পগুলির মতো অপ্রত্যাশিতভাবে ধীর নয়। আমার পরের প্রশ্নটি হ'ল - কোডেক বিকল্পগুলি, রেজোলিউশন এবং কী-ফ্রেমের ফ্রিকোয়েন্সি কি সিক্টো টাইমিংয়ের উপর প্রভাব ফেলবে?
বারেন্ট হ্যাবারমিয়ার

গেমটি দেরীতে না হলেও এটিকে যত তাড়াতাড়ি সম্ভব ভিডিওগুলি স্যুইচ করা মূল্যবান হতে পারে (অর্থাত্‍ নতুনটি খেলতে শুরু হওয়ার সাথে সাথে) এবং অ্যাপটি তার সিপিইউয়ের বেশিরভাগ সময় কোথায় ব্যয় করে তা দেখার জন্য prof
টিসি।

1
প্রায় এক বছর পরে এখন, আপনি কি কখনও এটি দিয়ে খুঁজে পেয়েছেন?
lnafziger

1
আমি বিকল্প 7 দিয়ে গিয়েছিলাম এবং 300ms এবং 500ms সেকের মধ্যে কোথাও পৌঁছেছি। একটি জিনিস আমি খুঁজে পেলাম যে ফ্যানসিয়ার এমপি 4 কোডেক অপশনগুলি ধীরে ধীরে সন্ধানটো হয়। কিছু ভিডিও সংক্ষেপণ বিকল্প রয়েছে যা আরও ভাল সংকোচনের জন্য অনুমতি দেয় এবং ভিডিওর মান বজায় রাখে, তবে ডিকোডিংয়ের সময়টি মেরে ফেলে।
বার্ট হ্যাবারমিয়ার

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

উত্তর:


4

আইওএস 10.x এবং এর চেয়েও বেশি এভিপ্লেয়ার হ্রাস করার জন্য আমি বিলম্ব শুরু করেছি: avplayer.automaticallyWaitsToMinimizeStalling = false; এবং আমার কাছে এটি ঠিক হয়ে গেছে বলে মনে হয়েছিল। এটির অন্যান্য পরিণতিও হতে পারে, তবে আমি এখনও সেগুলি আঘাত করি নি।

আমি এর জন্য ধারণাটি পেয়েছি: https://stackoverflow.com/a/50598525/9620547


আমি দেরীতে reduction-7 সেকেন্ড হ্রাস পেয়েছি। তবে আমার এখানে একটি প্রশ্ন রয়েছে, এটি অ্যাপ্লিকেশনটির কার্যকারিতায় প্রভাব ফেলবে?
কলপা

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

তথ্যের জন্য ধন্যবাদ। @grizzb
Kalpa

1

সম্পদটি তৈরি করার পরে এটি প্রস্তুত নাও হতে পারে, এটি মুভিটির সময়কালের মতো গণনা করতে পারে, মুভিটির সমস্ত মেটাডেটা ফাইলটিতে থাকা নিশ্চিত হন।


1

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


ভিডিওর অডিও অংশটি সম্পর্কে কী? সিঙ্ক্রোনাইজ করার জন্য আমার ভিডিও এবং অডিও দরকার।
বার্ট হ্যাবারমিয়ার

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

অ্যাভিএনিমেটার ব্যবহার করে নেটওয়ার্ক ভিডিও চালানোর কোনও সম্ভাবনা আছে কি?
রিচার্ড তোপচি

না, এটি স্থানীয় ফাইলগুলিতে কাজ করে, স্ট্রিমিং নেটওয়ার্ক ভিডিও সম্পূর্ণ আলাদা জিনিস।
মোডজে

0

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

অবশ্যই আমি জানি না যে স্যুইচিংটি এত সহজে করা যায় যে এটি প্লেব্যাককে ব্যহত করে না।

(আমি পারলে মন্তব্য হিসাবে এটিকে যুক্ত করতাম))

সেরা, পিটার


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

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

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

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

না দুঃক্ষিত. যেমনটি আমি বলেছি, আমি এভি বা কোর মিডিয়া উভয়ের বিশেষজ্ঞ নই। কেবল আপনার প্রশ্নটি পড়ুন এবং আমি ব্যক্তিগতভাবে কীভাবে এগিয়ে যাব এবং সেগুলি ভাগ করে নিতে চাই সে সম্পর্কে কিছু ধারণা ছিল। পিটার
ইলমিয়াকস

0

যদি আমি আপনার সমস্যাটি সঠিকভাবে বুঝতে পারি তবে মনে হচ্ছে আপনার কাছে একটি ধারাবাহিক ভিডিও রয়েছে যা আপনার কাছে মুহুর্তের নোটিশের জন্য অডিও ট্র্যাকটি লোড করা দরকার।

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

সীমাবদ্ধতা যাইহোক ভিডিওতে প্রসারিত, যেমনটি আমি বলেছিলাম, এটি একটি অডিও লাইব্রেরি তাই কোনও ভিডিও ম্যানিপুলেশন এখনও AVPlayer দিয়ে করতে হবে। তবে -seekToTime:toleranfeBefore:toleranceAfter:আপনাকে ব্যবহার করা যতক্ষণ না আপনি যত তাড়াতাড়ি সমস্ত প্রয়োজনীয় বিকল্পের সাথে প্রিওল করেন ততক্ষণ ভিডিওর মধ্যে দ্রুত সন্ধান করতে সক্ষম হওয়া উচিত।

যদি আপনি একাধিক ডিভাইসগুলির মধ্যে সিঙ্ক করছেন (যা আপনার অ্যাপ্লিকেশনটি পরামর্শ দিতে পারে) কেবল একটি মন্তব্য রেখে দিন এবং আমি আমার উত্তর সম্পাদনা করে খুশি হব।

পিএস: বেস এর সি-এর মতো ফর্ম্যাটটির কারণে প্রথমে ভয়ঙ্কর দেখাতে পারে তবে এটি কীসের জন্য এটি ব্যবহার করা সত্যই সহজ।


-2

এখানে AVAsset বর্গ দ্বারা সরবরাহ করা বেশ কয়েকটি সম্পত্তি এবং পদ্ধতি রয়েছে যা সহায়তা করতে পারে:

- (void)_pu_setCachedDuration:(id)arg1;
- (id)pu_cachedDuration; 
- (struct
 { 
   long long x1; 
   int x2;
   unsigned int x3; 
   long long x4; 
})pu_duration;
- (void)pu_loadDurationWithCompletionHandler:(id /* block */)arg1;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.