মোবাইল ডেভেলপমেন্টে ট্রান্সকোডিং — এটি কী, কাজের নীতি এবং ব্যবহারের পরিস্থিতি

লেখক: IT Sectr প্রকাশিত: 2026-05-25 পড়ার সময়: 10 মিনিট

ট্রান্সকোডিং হল একটি ডিজিটাল মিডিয়া ফাইলকে একটি কম্প্রেশন ফরম্যাট থেকে অন্যটিতে সম্পূর্ণ ডিকোডিং এবং পুনরায় এনকোডিং সহ রূপান্তর করার প্রক্রিয়া। ট্রান্সমাক্সিং (শুধুমাত্র কন্টেইনার পরিবর্তন) থেকে ভিন্ন, ট্রান্সকোডিং কোডেক, বিটরেট, রেজোলিউশন এবং কম্প্রেসড স্ট্রিমের অন্যান্য প্যারামিটার পরিবর্তন করে। Apple AVFoundation documentation (2026) অনুসারে, ট্রান্সকোডিং বিভিন্ন ডিভাইস এবং নেটওয়ার্ক অবস্থার সাথে কন্টেন্ট খাপ খাওয়ানোর জন্য ব্যবহৃত হয়।

মূল পয়েন্ট

  • ট্রান্সকোডিং হল উৎস স্ট্রিমের আনকম্প্রেসড PCM-তে সম্পূর্ণ ডিকোডিং এবং তারপর একটি নতুন ফরম্যাটে এনকোডিং
  • ট্রান্সমাক্সিং স্ট্রিম পুনরায় এনকোড না করে শুধুমাত্র কন্টেইনার পরিবর্তন করে — এটি ট্রান্সকোডিং নয়
  • ট্রান্সকোডিংয়ের প্রধান কারণ: কোডেক পরিবর্তন, বিটরেট কমানো, রেজোলিউশন পরিবর্তন, DRM অভিযোজন
  • টুল: FFmpeg, AVFoundation (iOS), MediaCodec (Android), AWS Elemental MediaConvert
  • মোবাইল ডিভাইসে রিয়েল-টাইম ট্রান্সকোডিং-এর জন্য হার্ডওয়্যার এনকোডার ত্বরণ প্রয়োজন

ট্রান্সকোডিং কী?

ট্রান্সকোডিং হল একটি মিডিয়া ফাইলকে একটি কম্প্রেশন ফরম্যাট থেকে অন্যটিতে রূপান্তর করার প্রক্রিয়া, যেখানে উৎস স্ট্রিমটি সম্পূর্ণরূপে একটি মধ্যবর্তী আনকম্প্রেসড PCM ফরম্যাটে ডিকোড করা হয় এবং তারপর নতুন প্যারামিটার দিয়ে এনকোড করা হয়। যদি উৎস ফাইলটি 10 Mbps বিটরেটে H.264 কোডেক ব্যবহার করে এবং আউটপুটে 3 Mbps বিটরেটে H.265 প্রয়োজন — এটি ট্রান্সকোডিং।

ট্রান্সকোডিং সাধারণ রিপ্যাকেজিং (ট্রান্সমাক্সিং) থেকে আলাদা, যেখানে শুধুমাত্র কন্টেইনার পরিবর্তন হয় (যেমন, MP4 থেকে MKV) কিন্তু কম্প্রেসড বিটস্ট্রিম অপরিবর্তিত থাকে। ট্রান্সকোডিংয়ে গণনাগতভাবে ব্যয়বহুল অপারেশন জড়িত: প্রতিটি ফ্রেম ডিকোড করা, ফিল্টার প্রয়োগ (স্কেলিং, রঙ সংশোধন, ক্রপিং), এবং নতুন প্যারামিটার দিয়ে পুনরায় এনকোডিং। এটি মিডিয়া নিয়ে কাজ করার সময় ট্রান্সকোডিংকে সবচেয়ে সংস্থান-নিবিড় অপারেশনগুলির একটি করে তোলে।

ট্রান্সকোডিং বিভিন্ন কাজে ব্যবহৃত হয়: ব্যান্ডউইথ সীমাবদ্ধতার সাথে ভিডিও খাপ খাওয়ানো, লক্ষ্য ডিভাইসে হার্ডওয়্যার ডিকোডিং সমর্থন সহ ফরম্যাটে রূপান্তর, HLS/DASH স্ট্রিমিংয়ের জন্য একাধিক সংস্করণ তৈরি করা, আলাদা ফাইলে অডিও ট্র্যাক নিষ্কাশন। OTT পরিষেবাগুলি (Netflix, YouTube, Twitch) প্রতিটি আপলোড করা ফাইলকে বিভিন্ন বিটরেট, রেজোলিউশন এবং কোডেক সহ কয়েক ডজন ভেরিয়েন্টে ট্রান্সকোড করে লক্ষ লক্ষ ব্যবহারকারীকে অভিযোজিত স্ট্রিমিং প্রদানের জন্য।

ট্রান্সকোডিং কীভাবে কাজ করে?

ট্রান্সকোডিং প্রক্রিয়াটি তিনটি প্রধান ধাপ নিয়ে গঠিত: ডিকোডিং, প্রক্রিয়াকরণ এবং এনকোডিং। প্রতিটি ধাপ প্রাপ্যতা এবং প্রয়োজনীয় কর্মক্ষমতার উপর নির্ভর করে CPU বা GPU/হার্ডওয়্যার ব্লকে সম্পাদন করা যেতে পারে।

ট্রান্সকোডিংয়ের ধাপগুলি

প্রথম ধাপ হল উৎস স্ট্রিম ডিকোড করা। উৎস ফাইলটি কন্টেইনার (MP4, MOV, MKV) থেকে পড়া হয়, তারপরে কম্প্রেসড ভিডিও প্যাকেটগুলি ডিকোডারে পাঠানো হয়। ডিকোডিং হার্ডওয়্যার-ভিত্তিক (যদি কোডেক সমর্থিত হয়) বা FFmpeg-এর মাধ্যমে সফ্টওয়্যার-ভিত্তিক হতে পারে। ডিকোডিংয়ের আউটপুট হল YUV420 বা BGRA ফরম্যাটে আনকম্প্রেসড ফ্রেম — এটি সেই ধাপ যেখানে ট্রান্সকোডিং সাধারণ রিমাল্টিপ্লেক্সিং থেকে আলাদা।

দ্বিতীয় ধাপ হল ফিল্টারিং এবং প্রক্রিয়াকরণ। ডিকোড করা ফ্রেমগুলি ফিল্টারের একটি চেইনের মধ্য দিয়ে যায়: লক্ষ্য রেজোলিউশনে স্কেলিং, ফ্রেম রেট পরিবর্তন, রঙ সংশোধন, টেক্সট বা গ্রাফিক্স ওভারলে। FFmpeg ফিল্টার চেইন একটি গ্রাফ হিসাবে তৈরি করা হয় যেখানে প্রতিটি ফিল্টার একটি পৃথক প্রক্রিয়াকরণ মডিউল। উদাহরণস্বরূপ, ফিল্টার scale=1280:720 রেজোলিউশন পরিবর্তন করে, fps=30 ফ্রেম রেট পরিবর্তন করে, এবং yadif ডিইন্টারলেসিং সম্পাদন করে। সমস্ত অপারেশন আনকম্প্রেসড ফ্রেমে সঞ্চালিত হয়, যা দ্বিতীয় ধাপকে সবচেয়ে সংস্থান-নিবিড় করে তোলে।

তৃতীয় ধাপ হল লক্ষ্য ফরম্যাটে এনকোডিং। প্রক্রিয়াকৃত ফ্রেমগুলি এনকোডারে খাওয়ানো হয়, যা লক্ষ্য কোডেক অ্যালগরিদম অনুযায়ী সেগুলিকে সংকুচিত করে। এনকোডার হার্ডওয়্যার-ভিত্তিক (iOS-এ VideoToolbox, Android-এ MediaCodec) বা সফ্টওয়্যার-ভিত্তিক (libx264, libx265) হতে পারে। এনকোডিং প্যারামিটার: ধ্রুবক গুণমানের জন্য CRF (কনস্ট্যান্ট রেট ফ্যাক্টর), CBR/VBR-এর জন্য বিটরেট, লক্ষ্য ডিভাইসের সাথে সামঞ্জস্যের জন্য প্রোফাইল এবং স্তর।

cpp
// FFmpeg-এ ট্রান্সকোডিং পাইপলাইন ডায়াগ্রাম
AVFormatContext *inputCtx, *outputCtx;
AVCodecContext *decoderCtx, *encoderCtx;
AVFrame *frame = av_frame_alloc();
AVPacket packet;

while (av_read_frame(inputCtx, &packet) >= 0) {
    // 1. ডিকোড করুন
    avcodec_send_packet(decoderCtx, &packet);
    avcodec_receive_frame(decoderCtx, frame);
    
    // 2. ফিল্টার করুন (স্কেল + fps পরিবর্তন)
    sws_scale(swsCtx, frame->data, frame->linesize,
              0, frame->height, scaledFrame->data,
              scaledFrame->linesize);
    
    // 3. এনকোড করুন
    avcodec_send_frame(encoderCtx, scaledFrame);
    avcodec_receive_packet(encoderCtx, &outPacket);
    av_interleaved_write_frame(outputCtx, &outPacket);
}

উপরের পাইপলাইনটি ক্লাসিক ট্রান্সকোডিং চক্র প্রদর্শন করে। av_read_frame ফাংশন ইনপুট ফাইল থেকে কম্প্রেসড প্যাকেট পড়ে, avcodec_send_packet সেগুলিকে ফ্রেমে ডিকোড করে, sws_scale স্কেলিং সম্পাদন করে, এবং avcodec_send_frame প্রক্রিয়াকৃত ফ্রেমকে আউটপুট ফরম্যাটে এনকোড করে। এই তিন-ধাপের চক্রটি এনকোডার সেটিংসের উপর নির্ভর করে প্রতিটি ফ্রেম বা ফ্রেমের গ্রুপের (GOP) জন্য পুনরাবৃত্তি হয়।

ট্রান্সকোডিং বনাম ট্রান্সমাক্সিং

ট্রান্সকোডিং এবং ট্রান্সমাক্সিংয়ের মধ্যে পার্থক্য মিডিয়া ইঞ্জিনিয়ারিংয়ের সবচেয়ে সাধারণ বিভ্রান্তিকর বিষয়গুলির একটি। এই পার্থক্য বোঝা সঠিক মিডিয়া প্রক্রিয়াকরণ কৌশল নির্বাচনের জন্য গুরুত্বপূর্ণ।

প্যারামিটারট্রান্সকোডিংট্রান্সমাক্সিং
কী পরিবর্তন হয়কোডেক, বিটরেট, রেজোলিউশনকন্টেইনার, মেটাডেটা
গণনাগত লোডউচ্চ (ডিকোডিং + এনকোডিং)সর্বনিম্ন (প্যাকেট কপি করা)
গুণমানখারাপ হতে পারে (জেনারেশন লস)নিরাপদ
সম্পাদনের সময়দীর্ঘ ভিডিওর জন্য মিনিট–ঘণ্টাসেকেন্ড–মিনিট
প্রয়োগফরম্যাট অভিযোজন, কম্প্রেশনসামঞ্জস্যের জন্য কন্টেইনার পরিবর্তন

ট্রান্সমাক্সিং হল ডিকোডিং এবং পুনরায় এনকোডিং ছাড়াই একটি কম্প্রেসড স্ট্রিমকে অন্য কন্টেইনারে রিপ্যাকেজ করা। যদি ভিডিও ইতিমধ্যেই MP4 কন্টেইনারে H.265 কোডেক দিয়ে সংকুচিত থাকে এবং এটিকে MOV বা MKV কন্টেইনারে রাখার প্রয়োজন হয় — ট্রান্সমাক্সিং কেবল একটি কন্টেইনার থেকে অন্যটিতে বিটস্ট্রিম প্যাকেট কপি করে। গুণমান প্রভাবিত হয় না, প্রক্রিয়াকরণের সময় ন্যূনতম কারণ ফ্রেম ডিকোডিংয়ের প্রয়োজন নেই। FFmpeg -codec copy ফ্ল্যাগ দিয়ে ট্রান্সমাক্সিং সম্পাদন করে।

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

ট্রান্সকোডিং টুল

ট্রান্সকোডিং টুলের পছন্দ প্ল্যাটফর্ম, কর্মক্ষমতার প্রয়োজনীয়তা এবং ব্যবহারের ক্ষেত্রে নির্ভর করে। মোবাইল ডেভেলপমেন্টের জন্য নেটিভ API এবং ক্রস-প্ল্যাটফর্ম লাইব্রেরি উভয়ই উপলব্ধ।

FFmpeg — সর্বজনীন টুল

FFmpeg সমস্ত প্ল্যাটফর্মে ট্রান্সকোডিংয়ের জন্য ডি ফ্যাক্টো স্ট্যান্ডার্ড। FFmpeg কমান্ড লাইন প্রায় যেকোনো রূপান্তর সম্পাদনের অনুমতি দেয়: কোডেক পরিবর্তন, বিটরেট সামঞ্জস্য, ট্রিমিং, কনক্যাটেনেশন, ফিল্টার প্রয়োগ। মোবাইল অ্যাপ্লিকেশনের জন্য, FFmpeg libavformat, libavcodec এবং libavfilter লাইব্রেরির মাধ্যমে সংহত করা হয়। একটি সাধারণ ট্রান্সকোডিং কমান্ডের উদাহরণ: ffmpeg -i input.mp4 -c:v libx265 -crf 23 -c:a aac -b:a 128k output.mp4

প্ল্যাটফর্ম API

iOS-এ, ট্রান্সকোডিং AVAssetWriter এবং AVAssetReader-এর মাধ্যমে সম্পাদন করা হয়। AVAssetReader আনকম্প্রেসড ফ্রেম পড়ে উৎস ফাইল ডিকোড করে, এবং AVAssetWriter সেগুলিকে লক্ষ্য ফরম্যাটে এনকোড করে। এই পদ্ধতি স্বয়ংক্রিয়ভাবে VideoToolbox হার্ডওয়্যার এনকোডার ব্যবহার করে, যা সর্বোচ্চ কর্মক্ষমতা নিশ্চিত করে। Android-এ, অনুরূপ কার্যকারিতা MediaCodec-এর মাধ্যমে MediaExtractor এবং MediaMuxer-এর সাথে উপলব্ধ — MediaExtractor কম্প্রেসড প্যাকেট বের করে, MediaCodec ডিকোড এবং এনকোড করে, MediaMuxer ফলাফল লেখে।

ক্লাউড পরিষেবা

প্রোডাকশন পরিবেশে সার্ভার-সাইড ট্রান্সকোডিংয়ের জন্য, ক্লাউড পরিষেবাগুলি ব্যবহার করা হয়: AWS Elemental MediaConvert, Azure Media Services, Google Transcoder API। এই পরিষেবাগুলি লোডের অধীনে স্বয়ংক্রিয়ভাবে স্কেল হয়, সমস্ত জনপ্রিয় ফরম্যাট সমর্থন করে এবং অভিযোজিত স্ট্রিমিংয়ের (HLS, DASH) জন্য একটি ইনপুট ফাইলকে কয়েক ডজন আউটপুট ভেরিয়েন্টে ট্রান্সকোড করতে পারে। মোবাইল অ্যাপ্লিকেশনের জন্য, ক্লাউড ট্রান্সকোডিং সর্বোত্তম সমাধান কারণ এটি ব্যবহারকারীর ডিভাইসে বোঝা চাপায় না এবং অ্যাসিঙ্ক্রোনাস কন্টেন্ট প্রস্তুতির অনুমতি দেয়।

ট্রান্সকোডিং কোড উদাহরণ

আসুন হার্ডওয়্যার ত্বরণ এবং মূল গুণমান প্যারামিটার কনফিগারেশন ব্যবহার করে মোবাইল প্ল্যাটফর্মে ব্যবহারিক ট্রান্সকোডিং উদাহরণ দেখি।

iOS-এ H.264 থেকে H.265 ট্রান্সকোডিং

swift
import AVFoundation

func transcodeVideo(sourceURL: URL, destURL: URL) {
    let asset = AVAsset(url: sourceURL)
    let preset = AVAssetExportPresetHEVCHighestQuality
    
    AVAssetExportSession(asset: asset, presetName: preset)?
        .exportAsynchronously {
            switch assetExportSession?.status {
            case .completed:
                print("ট্রান্সকোডিং সম্পন্ন হয়েছে")
            case .failed:
                print("ত্রুটি: " + assetExportSession.error.localizedDescription)
            default:
                break
            }
        }
    
    // AVAssetReader + AVAssetWriter-এর সাথে ম্যানুয়াল ট্রান্সকোডিং
    let reader = try AVAssetReader(asset: asset)
    let writer = try AVAssetWriter(url: destURL,
        fileType: .mp4)
    
    let outputSettings: [String: Any] = [
        AVVideoCodecKey: AVVideoCodecType.hevc,
        AVVideoWidthKey: 1920,
        AVVideoHeightKey: 1080,
        AVVideoCompressionPropertiesKey: [
            AVVideoAverageBitRateKey: 4_000_000,
            AVVideoProfileLevelKey: AVVideoProfileLevelH265Main10
        ]
    ]
    
    let adaptor = AVAssetWriterInput(
        mediaType: .video,
        outputSettings: outputSettings
    )
    writer.add(adaptor)
}

উদাহরণটি iOS-এ ট্রান্সকোডিংয়ের দুটি পদ্ধতি দেখায়। AVAssetExportSession হল গুণমান প্রিসেট (H.265-এর জন্য HEVCHighestQuality) সহ একটি সহজ উপায়। AVAssetReader + AVAssetWriter-এর মাধ্যমে ম্যানুয়াল পাইপলাইন প্যারামিটারগুলির উপর সম্পূর্ণ নিয়ন্ত্রণ সরবরাহ করে: বিটরেট, প্রোফাইল, স্তর। AVVideoProfileLevelH265Main10 প্যারামিটারটি 10-বিট রঙের গভীরতা সহ HDR প্রোফাইল Main10 সক্ষম করে, যা আধুনিক HDR কন্টেন্টের জন্য গুরুত্বপূর্ণ।

MediaCodec-এর সাথে Android-এ ট্রান্সকোডিং

kotlin
class Transcoder(private val context: Context) {
    
    fun transcodeToHevc(inputUri: Uri, outputFile: File) {
        val extractor = MediaExtractor()
        extractor.setDataSource(context, inputUri, null)
        
        val trackFormat = extractor.getTrackFormat(videoTrackIndex)
        val mime = trackFormat.getString(MediaFormat.KEY_MIME)
        
        val decoder = MediaCodec.createDecoderByType(mime!!)
        val encoder = MediaCodec.createEncoderByType(MediaFormat.MIMETYPE_VIDEO_HEVC)
        
        val outputFormat = MediaFormat.createVideoFormat(
            MediaFormat.MIMETYPE_VIDEO_HEVC, 1920, 1080
        ).apply {
            setInteger(MediaFormat.KEY_BIT_RATE, 4_000_000)
            setInteger(MediaFormat.KEY_FRAME_RATE, 30)
            setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 2)
        }
        
        encoder.configure(outputFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE)
        encoder.start()
    }
}

Android কোড MediaExtractor — MediaCodec ডিকোডার — MediaCodec এনকোডার — MediaMuxer-এর একটি পাইপলাইন তৈরি করে। MediaExtractor ইনপুট ফাইল থেকে কোডেক প্রকার নির্ধারণ করে এবং সংশ্লিষ্ট ডিকোডার নির্বাচন করে। এনকোডারটি H.265 (HEVC)-এর জন্য 4 Mbps বিটরেট এবং 2 সেকেন্ডের কী ফ্রেম ব্যবধানের সাথে কনফিগার করা হয়েছে, যা স্ট্রিমিংয়ের জন্য সর্বোত্তম। গুরুত্বপূর্ণ: MediaCodec এনকোডার সিঙ্ক্রোনাসভাবে কাজ করে, তাই রিয়েল-টাইম ট্রান্সকোডিংয়ের জন্য প্রতিটি ফ্রেমের সঠিক PTS টাইমস্ট্যাম্প হ্যান্ডলিং সহ একটি লুপ প্রয়োগ করতে হবে।

মোবাইল ডিভাইসের জন্য ট্রান্সকোডিং অপ্টিমাইজেশন

মোবাইল ডিভাইসে ট্রান্সকোডিং এমন একটি কাজ যার জন্য সীমিত CPU, GPU সংস্থান এবং তাপীয় সীমাবদ্ধতার কারণে সাবধানে অপ্টিমাইজেশন প্রয়োজন। বেশ কয়েকটি কৌশল দক্ষতার সাথে ট্রান্সকোডিং সম্পাদনে সহায়তা করে।

হার্ডওয়্যার এনকোডিং ব্যবহার

মূল কর্মক্ষমতা ফ্যাক্টর হল হার্ডওয়্যার এনকোডার। iOS-এ, VideoToolbox সফ্টওয়্যার libx264-এর চেয়ে 5–10 গুণ দ্রুত গতিতে হার্ডওয়্যার H.264 এবং H.265 এনকোডিং সরবরাহ করে। Android-এ, MediaCodec উপলব্ধ থাকলে হার্ডওয়্যার OMX কম্পোনেন্ট ব্যবহার করে। হার্ডওয়্যার এনকোডিং সক্ষম করলে ফ্ল্যাগশিপ ডিভাইসে 10 মিনিটের ভিডিওর ট্রান্সকোডিং সময় 30–40 মিনিট (সফ্টওয়্যার) থেকে কমে 3–5 মিনিট (হার্ডওয়্যার) হয়।

গুণমান প্যারামিটার নির্বাচন

মোবাইল ট্রান্সকোডিংয়ের জন্য, গুণমান, আকার এবং প্রক্রিয়াকরণ সময়ের মধ্যে ভারসাম্য গুরুত্বপূর্ণ। মোবাইল ডিভাইসে H.265-এর জন্য, 30 FPS-এ 1080p ভিডিওর জন্য 4–8 Mbps বিটরেট সুপারিশ করা হয়। libx265-এ CRF মোড (কনস্ট্যান্ট রেট ফ্যাক্টর) সরাসরি গুণমান সেট করার অনুমতি দেয়, যেখানে 23–28 মাঝারি ফাইল আকারে ভাল ভিজ্যুয়াল গুণমান সরবরাহ করে। হার্ডওয়্যার এনকোডারের জন্য, লক্ষ্য বিটরেট সহ CBR মোড ব্যবহার করুন কারণ CRF হার্ডওয়্যারে সমর্থিত নয়।

থার্মাল ম্যানেজমেন্ট

মোবাইল ডিভাইসে ক্রমাগত ট্রান্সকোডিং উল্লেখযোগ্য তাপ সৃষ্টি করে। 4K ভিডিওর 5–7 মিনিটের নিবিড় এনকোডিংয়ের পরে, প্রসেসরের তাপমাত্রা 50–55 ডিগ্রিতে পৌঁছাতে পারে, তারপরে থ্রটলিং শুরু হয়। সমাধান হল বিরতি সহ ট্রান্সকোডিং বা ফ্রেম রেট 30 FPS-এ কমানো। যদি অ্যাপ্লিকেশনটির ব্যাচ ট্রান্সকোডিং প্রয়োজন হয় (যেমন, একটি ভিডিও এডিটর), তাহলে কুলিং বিরতি সহ 2–3 মিনিটের ব্যাচে প্রক্রিয়া করা ভাল। প্রোডাকশন পরিস্থিতির জন্য, ট্রান্সকোডিং সার্ভার সাইডে স্থানান্তর করা এবং ক্লাউড পরিষেবা ব্যবহার করা সর্বোত্তম।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

ট্রান্সকোডিং এনকোডিং থেকে কীভাবে আলাদা?

এনকোডিং (encoding) হল আনকম্প্রেসড ডেটাকে লক্ষ্য কোডেকে সংকুচিত করা। ট্রান্সকোডিং ডিকোডিং এবং এনকোডিং উভয়ই অন্তর্ভুক্ত করে: এটি প্রথমে একটি বিদ্যমান কম্প্রেসড স্ট্রিম ডিকোড করে, তারপর এটি আবার এনকোড করে। সরল এনকোডিং ইনপুট হিসাবে আনকম্প্রেসড ডেটা নেয় (যেমন, ক্যামেরা থেকে), যখন ট্রান্সকোডিং ইতিমধ্যে সংকুচিত ফাইল নেয়।

মোবাইলে ট্রান্সকোডিংয়ের জন্য কোন কোডেক নির্বাচন করবেন?

সর্বাধিক সামঞ্জস্যের জন্য — H.264। ভাল কম্প্রেশনের জন্য — H.265 (HEVC)। যদি ডিভাইসটি হার্ডওয়্যার H.265 এনকোডিং সমর্থন করে (iPhone 8+, Snapdragon 845+ সহ Android), তাহলে এটি একই গুণমানে অর্ধেক ফাইল আকার সরবরাহ করে। AV1 এনকোডিং মোবাইল ডিভাইসে হার্ডওয়্যার ত্বরণের সাথেও এখনও খুব ধীর।

“লসলেস ট্রান্সকোডিং” কী?

কঠোরভাবে বলতে গেলে, লসি কোডেকের মধ্যে স্যুইচ করার সময় লসলেস ট্রান্সকোডিং অসম্ভব। যদি উভয় কোডেক লসি হয়, ট্রান্সকোডিংয়ের প্রতিটি প্রজন্ম গুণমান খারাপ করে। লসলেস ট্রান্সকোডিং শুধুমাত্র লসলেস ফরম্যাটের (FFV1, H.264 Lossless) মধ্যে বা পুনরায় এনকোডিং ছাড়া কন্টেইনার পরিবর্তন করার সময় (ট্রান্সমাক্সিং) সম্ভব।

ভিডিও কি রিয়েল টাইমে ট্রান্সকোড করা যেতে পারে?

হ্যাঁ, যদি হার্ডওয়্যার ডিকোডার এবং এনকোডার ব্যবহার করা হয় এবং লক্ষ্য রেজোলিউশন 1080p-এর বেশি না হয়। VideoToolbox (iOS) বা MediaCodec (Android) যুক্ত ডিভাইসে, রিয়েল-টাইম H.264→H.265 ট্রান্সকোডিং 1–3 সেকেন্ড বিলম্বে সম্ভব। 4K রিয়েল-টাইমের জন্য, Apple A17 Pro, Snapdragon 8 Gen 2 বা তার উপরের শক্তিশালী SoC প্রয়োজন।

ট্রান্সকোডিংয়ের পরে ভিডিওর গুণমান খারাপ হলো কেন?

লসি ট্রান্সকোডিং কম্প্রেশন আর্টিফ্যাক্ট জমা করে। যদি উৎস ফাইলটি ইতিমধ্যে ব্যাপকভাবে সংকুচিত ছিল (1080p-এর জন্য 2–3 Mbps বিটরেট), পুনরায় কম্প্রেশন ক্ষতি দ্বিগুণ করে। সুপারিশ হল শুধুমাত্র উচ্চ বিটরেটের (20+ Mbps) মাস্টার কপি থেকে ট্রান্সকোড করা এবং ন্যূনতম ক্ষতির জন্য CRF 18–23 ব্যবহার করা।

সারসংক্ষেপ

  • ট্রান্সকোডিং হল কোডেক, বিটরেট বা রেজোলিউশন পরিবর্তনের জন্য মিডিয়ার ডিকোডিং + এনকোডিংয়ের সম্পূর্ণ চক্র
  • ট্রান্সমাক্সিং পুনরায় এনকোডিং ছাড়াই শুধুমাত্র কন্টেইনার পরিবর্তন করে — এটি ট্রান্সকোডিং নয়
  • হার্ডওয়্যার ট্রান্সকোডিং VideoToolbox এবং MediaCodec-এ সফ্টওয়্যারের চেয়ে 5–10 গুণ দ্রুত
  • FFmpeg শত শত কোডেক এবং প্রক্রিয়াকরণ ফিল্টার সমর্থনকারী একটি সর্বজনীন টুল
  • লসি ট্রান্সকোডিংয়ের প্রতিটি প্রজন্ম গুণমান খারাপ করে — মাস্টার কপি ব্যবহার করুন
  • মোবাইল H.265-এর জন্য সর্বোত্তম প্যারামিটার: বিটরেট 4–8 Mbps, Main10 প্রোফাইল, GOP 2 সেকেন্ড
  • প্রোডাকশনের জন্য ক্লাউড ট্রান্সকোডিং পরিষেবা (AWS Elemental, Azure Media) ব্যবহার করুন — এগুলি ডিভাইসে বোঝা চাপায় না

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন