পুনরায় এনকোডিং ভিডিও ফাইল ছাড়াই অনুপাতের সংশোধন করুন


18

নিম্নলিখিত বৈশিষ্ট্যগুলি সহ আমার কাছে একটি ভিডিও স্ট্রিম রয়েছে:

Stream #0:0: Video: mpeg4 (Advanced Simple Profile) (XVID / 0x44495658), yuv420p, 720x416 [SAR 1:1 DAR 45:26], 1908 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc

আমি যখন এটি ভিএলসিতে চালনা করি তখন সঠিক অনুপাতের অনুপাতের সাথে ভিডিও প্রদর্শন করতে আমাকে অনুপাতের অনুপাতটি "4: 3" এ পরিবর্তন করতে "এ" টিপতে হয়।

ভিডিওর তথ্যের দিকে তাকালে, ত্রুটিটি কী যে ক) প্রকৃত ভিডিওটি পিক্সেল ডেটাতে ভুলভাবে প্রসারিত করা হয়েছে, বা খ) কেবলমাত্র কিছু মেটাডেটা মান রয়েছে যা ভুলভাবে সেট করা হয়েছে?

যদি পূর্বের হয় তবে আমি জানি আমি ভিডিওটি পুনরায় এনকোড করতে এবং প্রস্থ এবং উচ্চতা পরিবর্তন করতে পারি। তবে যদি পরবর্তীটি হয় তবে ভিডিওটি পুনরায় এনকোডিং না করেই মেটাডেটা ঠিক করার জন্য আমি কী ffmpeg কমান্ড চালাচ্ছি?

উত্তর:


36

নমুনা অনুপাত অনুপাত (এসএআর) এবং ডিসপ্লে আসপেক্ট অনুপাত (ডিএআর) এর মধ্যে পার্থক্য রয়েছে। আপনি যদি ভিডিওটি 4: 3 এ প্রদর্শন করতে চান তবে আপনাকে চিত্রটিতে প্রকৃত পিক্সেলগুলি পরিবর্তন করতে হবে (পিক্সেলগুলি স্কেল করে এবং এসএআর পরিবর্তন করে), অথবা একটি মেটাডেটা পতাকা সেট করে কনটেইনার স্তরে যা বাহ্যিক বলে আপনার পছন্দসই ডিআর-তে চিত্র প্রসারিত করতে মিডিয়া প্লেয়ারগুলি।

আপনি ভিডিও ফিল্টার প্রয়োগ না করে পিক্সেলগুলি স্কেল করতে এবং এসএআর পরিবর্তন করতে সক্ষম হবেন না। আপনি যদি এই পদ্ধতিটি চয়ন করেন তবে আপনাকে ফাইলটি ট্রান্সকোড করতে হবে - যেহেতু আপনি ভিডিও ফিল্টার প্রয়োগ করার সময় ভিডিও স্ট্রিমটি "স্ট্রিম কপি" করতে পারবেন না।

চিত্রটি স্কেল করতে এবং এসএআর পরিবর্তন করতে (ট্রান্সকোডিং করার সময়) চেষ্টা করুন:

ffmpeg -i <INPUT_FILE> -vf scale=720:540 -c:v <Video_Codec> <OUTPUT_FILE>

অন্যদিকে, আপনি যদি কেবল মেটাডেটা পতাকাটি পরিবর্তন করতে এবং DAR সামঞ্জস্য করতে চান তবে আপনি ভিডিওটি অনুলিপি করতে সক্ষম হবেন। এটি করতে, চেষ্টা করুন:

ffmpeg -i <INPUT_FILE> -aspect 720:540 -c copy [OUTPUT_FILE]

অসাধারণ! দিক বদলানো সরাসরি কাজ!
forthrin

2
আপনি -c copyএকই সাথে ব্যবহার এবং স্কেল করতে পারবেন না ; তবে আপনি -aspectধারক স্তরে দিক অনুপাত পরিবর্তন করতে ব্যবহার করতে পারেন (তবে স্ট্রিম স্তর নয়)।
লগন

@ লর্ডনেকবার্ড, ব্যবহার -aspectকরে প্লেব্যাকের জন্য কাজ করে ffplayতবে ডাব্লুএমপি বা এমপিসি-এইচসি তে নয়। এটি Stream #…তথ্য লাইনে অতিরিক্ত এসএআর / ডিএআর আইটেম যুক্ত করে FFmpeg/probe/playতবে সাধারণ প্লেব্যাকের সমাধান বলে মনে হয় না। উইন্ডো দিয়ে ভিডিওটি প্রসারিত করা এমপিসি-এইচসি প্লেব্যাকের সহজ সমাধান হিসাবে মনে হচ্ছে।
লুমি

পুনরায় কোডিং ছাড়াই এমপিইজি 2 এর জন্য আমার পক্ষে কাজ করেনি
মিখাইল ভি

কেন জানি এটি আমার পক্ষে কাজ করে নি। এটি ঠিক একই ভিডিও আউটপুট!
টিনা জে

4

দেলগাদোর উত্তরটি সঠিক যে এমপি 4বক্স এটি করতে পারে, তবে -parবিকল্পটি বর্ণিত হিসাবে কাজ করে না। একটি -outপ্যারামিটার সহ (যাতে আপনার মূল ফাইলটি বিরক্ত না করা হয়):

mp4box source.mp4 -out target.mp4 -par stream-number=width:height

আপনি যখন ব্যবহার করেন -par stream-number=width:height, আপনি পিক্সেল অ্যাস্পেক্ট রেশিও সংজ্ঞায়িত করেন - এটি স্টোরেজ অ্যাস্পেক্ট রেশিও দ্বারা ডিভাইসের দিক অনুপাতকে ভাগ করার ফলাফল। (সমানভাবে, আপনি একটি উত্স পিক্সেলের দিক অনুপাত বর্ণনা করছেন)) উদাহরণস্বরূপ, ধরুন আপনার কাছে এমন একটি ডিভিডি উত্স রয়েছে যা 720 × 480, এবং সঠিক প্রদর্শন দিক অনুপাত 4: 3। এই ক্ষেত্রে, আপনার প্রয়োজন:

mp4box source.mp4 -out target.mp4 -par 1=8:9

কারণ (4/3) / (720/480) = 8/9।

যদি উত্সটি সত্য এসডি এনটিএসসি পিক্সেলকে উপস্থাপন করে (তবে কেবলমাত্র কেন্দ্রীয় 4০৪ 80 ৪80০ পিক্সেল উভয় পাশেই ৮ পিক্সেল ওভারস্ক্যান করে একটি 4 side 3 স্ক্রিনে ম্যাপ করার কথা রয়েছে), সঠিক কমান্ডটি হ'ল:

mp4box source.mp4 -out target.mp4 -par 1=10:11

কারণ (4/3) / (704/480) = 10/11 - স্ট্যান্ডার্ড সংজ্ঞা NTSC ভিডিওর জন্য রেফারেন্স পিক্সেল দিক অনুপাত।

প্রশ্নে প্রদত্ত কেসটির জন্য, যদি এটি সত্যই 4: 3 হয় তবে এটি একটি অত্যন্ত বিজোড় পিক্সেল দিক অনুপাত দেয়: (4/3) / (720/416) = 104/135। এটি 720 বিস্তৃত, যা একটি ডিভিডি উত্স প্রস্তাব করে; এটি একটি 25 fps ভিডিও, PAL পরামর্শ দিচ্ছে, কিন্তু এনএআরএসসি প্রস্তাব দিয়ে PAR 1 এরও কম কাজ করে। এটি 4: 5 হতে পারে, আমি মনে করি (104: 135 এর খুব কাছে), তবে আমি এমন কিছু জানি না যা সেই পিক্সেল দিক অনুপাত উত্পাদন করে; এটি প্রথমে চেষ্টা করে দেখুন এবং তারপরে 3: 4 চেষ্টা করুন যদি এটি এখনও খানিকটা অনুভূমিকভাবে প্রসারিত দেখায়। আপনি যদি নিশ্চিত হন যে এটি অবশ্যই 4: 3, অবশ্যই 104: 135 ব্যবহার করুন।


3

এফএফএমপিএগ পুনরায় এনকোডিং, এমপি 4বক্স (জিপিএকের অংশ ) এবং এমকেভ্রিম ক্যান ব্যতীত কোনও ভিডিও স্ট্রিমের পরামিতি পরিবর্তন করতে পারে না । একটি ভিডিও স্ট্রিম এবং 4: 3 এর আসল / সঠিক দিক অনুপাতের ক্ষেত্রে আপনি চেষ্টা করতে পারেন:

MP4Box -par 1=3:4 VideoFile.mp4

    "-par" : PixelAspectRatio (adjusts DAR + SAR with respect to the video resolution)
    "1"=   : stream number
    "3:4"  : aspect ratio (lower number 1st!)
    Changes are directly applied to "VideoFile.mp4", no copy

আগে এবং পরে যাচাই করতে: ffmpeg -i VideoFile.mp4


0

পরিবর্তন এসএআর সাথে কাজ reencoding ছাড়া ffmpegউপর .mp4ব্যবহার h264_metadataজ্ঞান যেমন নির্দিষ্ট এখানে :

ffmpeg -i in.mp4 -c copy -bsf:v "h264_metadata=sample_aspect_ratio=4/3" out.mp4

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