كيفية تحديد أبعاد الفيديو لملف دفق برنامج mpeg-2
-
08-07-2019 - |
سؤال
كيف يمكنني معرفة عرض وارتفاع الفيديو برمجياً في ملف mpeg-2 ينقل ملف تيار البرنامج؟
يحرر:أنا أستخدم لغة C++، لكن يسعدني الحصول على أمثلة بأي لغة.يحرر:سؤال مصحح - ربما كان ذلك عبارة عن تدفقات برنامجية كنت أسأل عنها
المحلول
وتحقق من التعليمات البرمجية المصدر إلى libmpeg2 أو فك F / OSS MPEG2. يبدو أن يتم تعيين العرض والارتفاع في وظيفة mpeg2_header_sequence()
في header.c
. لست متأكدا من كيفية تدفق التحكم لأن وظيفة معينة، وإن كان. أنا أقترح فتح ملف MPEG2 في شيء باستخدام libmpeg2 (مثل إمبلاير ) وإرفاق المصحح لرؤية عن كثب بالضبط ما تقوم به.
نصائح أخرى
إذا كنت تستخدم دايركت، هناك طريقة في واجهة VMRWindowlessControl:
piwc->GetNativeVideoSize(&w, &h, NULL, NULL);
وأو واجهة IBasicVideo:
pivb->GetVideoSize(&w, &h);
ولMPEG2 الفيديو ويمكن الاطلاع على حجم الأفقي والرأسي في تسلسل رأس الفيديو (من تيار بت الفيديو). رمز تسلسل الرأس هو 0x000001B3. بعض المثال رمز أدناه. ومع ذلك فإنه لا يأخذ بعين الاعتبار تمديد حجم عمودي / أفقي إذا تم تحديدها في رأس تسلسل التمديد.
#define VIDEO_SEQUENCE_HDR 0xB3
#define HOR_SIZE_MASK 0xFFF00000
#define HOR_SIZE_SHIFT 20
#define VER_SIZE_MASK 0x000FFF00
#define VER_SIZE_SHIFT 8
unsigned char *pTmp = tsPacket;
int len = 188;
int horizontal, vertical;
while(len>0 && !horizontal && !vertical)
{
if(*pTmp == 0 && *(pTmp+1) == 0
&& *(pTmp+2)== 0x01 && *(pTmp+3) == 0xB3 && (len-1) >0)
{
unsigned int *pHdr = (unsigned int *)pTmp;
pHdr++ ;
unsigned int secondByte = ntohl(*pHdr);
horizontal = (secondByte & HOR_SIZE_MASK) >> HOR_SIZE_SHIFT;
vertical = (secondByte & VER_SIZE_MASK) >> VER_SIZE_SHIFT;
break;
}
pTmp++;
len--;
}
ولقد لم يقل ما هي اللغة التي تريد استخدامها لذلك أنا أشك في أنك سوف تحصل على أي نماذج التعليمات البرمجية.
وإلقاء نظرة على الروابط التالية. أول يصف تنسيق ملف MPEG-2، والآخر هو RFC على نقل MPEG عبر RTP.
قال هاميشمن أن إجابة آدم روزنفيلد هي ما يحتاجه.وهذا يجعلني أتساءل عن دقة السؤال.دفق نقل MPEG لا يفعل ذلك يملك رأس تسلسل الفيديو.تم العثور على هذا الرأس في دفق برنامج MPEG.
ليس لدي إجابة.كنت آمل فقط على عكس الأمل أن تكون إجابة شخص ما صحيحة، لأنني أحتاج إلى إجابة.