ios - FFmpeg ব্যবহার করে আইওএস-এ লেখার সময় এইচএলএসে এফএমপি 4 ট্রান্সকোডিং



avfoundation http-live-streaming (1)

টি এল; ডিআর

আমি fmp4 টুকরো টিএস বিভাগে (এইচএলএসের জন্য) রূপান্তর করতে চাই কারণ এই আইওএস ডিভাইসে FFmpeg ব্যবহার করে খণ্ডগুলি লেখা হচ্ছে।

কেন?

আমি স্থানীয়ভাবে নির্বিঘ্নে, এইচডি অনুলিপি বজায় রেখে আইওএসে সরাসরি আপলোড অর্জনের চেষ্টা করছি।

আমি কি চেষ্টা করেছি

  1. AVAssetWriter রোলিং যেখানে প্রতিটি লিখতে 8 সেকেন্ড, তারপরে FFmpeg এর মাধ্যমে একসাথে MP4 গুলি করে।

    কী ভুল হয়েছে - কিছু সময় অডিও এবং ভিডিওতে ব্লিপ থাকে। আমি এর 3 টি কারণ চিহ্নিত করেছি।

    1) ফাঁকা তৈরি করতে এএসি এনকোডার দ্বারা লিখিত অডিওটির জন্য প্রাইমিং ফ্রেমগুলি।

    2) যেহেতু ভিডিও ফ্রেমগুলি 33.33 মিমি দীর্ঘ এবং অডিও ফ্রেমগুলি 0.022 মিমি দীর্ঘ, তাদের পক্ষে কোনও ফাইলের শেষে লাইন আপ না করা সম্ভব।

    3) ম্যাক ওএসে উপস্থিত ফ্রেমের সঠিক এনকোডিংয়ের অভাব, তবে এখানে আইওএস বিবরণের জন্য উপলব্ধ নেই

  2. FFmpeg টিএস বিভাগে কাঁচা অডিও সহ একটি বড় ভিডিও কেবল এমপি 4 ফাইল ম্যাক্স করে। কাজটি ছিল কিকফ্লিপ এসডিকে ভিত্তিক

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

আমি এখন কি ভাবছি

অ্যাপল এই বছর (2016) ডাব্লুডাব্লুডিসিতে এফএমপি 4 চাপছিল এবং আমি এর আগে এটির তেমন কিছু দেখিনি। যেহেতু একটি এফএমপি 4 ফাইলটি পড়া যায় এবং এটি লেখার সময় প্লে করা যায় , তাই আমি ভেবেছিলাম যে এফএফএমপিগের পক্ষে এটি যেমন লেখা হচ্ছে ততক্ষণ ট্রান্সকোড করা সম্ভব হবে, যতক্ষণ না আমরা যতক্ষণ না প্রতিটি ফ্রেমের মধ্যে এফএফপিপেতে বাইটগুলি প্রেরণ বন্ধ করে রাখি as ফাইল শেষ হয়েছে।

তবে, আমি এফএফপিপেগ সি এপিআইয়ের সাথে যথেষ্ট পরিচিত নই, আমি এটি চেষ্টা # 2 এর মধ্যে কেবল সংক্ষেপে ব্যবহার করেছি।

তোমার কাছে আমার যা দরকার

  1. এটি কি একটি সম্ভাব্য সমাধান? আমি বাস্তবে এটি সম্পাদন করতে পারি কিনা তা জানতে কেউ কি fmp4 এর সাথে যথেষ্ট পরিচিত?
  2. আমি কীভাবে জানব যে AVFoundation ফাইলের মধ্যে একটি টুকরো লেখার কাজ শেষ করেছে যাতে আমি এফএফপিপেতে পাইপ করতে পারি?
  3. আমি কীভাবে ডিস্কের কোনও ফাইল থেকে ডেটা নিতে পারি, একবারে খণ্ড খণ্ড করে এফএফএমপেইগে পাস করতে এবং এটি টিএস বিভাগগুলিকে ছড়িয়ে দিতে পারি?

দৃrict়ভাবে বলতে গেলে আপনার fmp4 ট্রান্সকোড করার দরকার নেই যদি এতে h264 + aac থাকে, আপনার কেবলমাত্র নমুনা ডেটা টিএস হিসাবে পুনরায় প্যাকেজ করতে হবে। ( ffmpeg -codec copy বা gpac ব্যবহার করে)

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

আমি বিশ্বাস করি ffmpeg একটি লাইভ fmp4 স্ট্রিমটি (যেমন, দীর্ঘকাল ধরে চলমান এইচটিটিপি পোস্ট ব্যবহার করে) ধাক্কা দিতে সক্ষম হওয়া উচিত, তবে প্লেআউটটির সাথে এটির অর্থপূর্ণ কিছু করা (যেমন। স্ট্রিম থেকে এইচএলএস) করা প্রয়োজন।