2010-03-04 24 views
12

एस 2 पी स्ट्रीम के लिए एसडीपी में स्पॉप-पैरामीटर-सेट में बेस 64 डीकोडेड बाइट्स का क्या अर्थ है? मैं इस उदाहरण से वीडियो आकार कैसे जान सकता हूं?एच 264 एसडीपी में स्पॉप-पैरामीटर-सेट को डीकोड कैसे करें?

एसडीपी उदाहरण:

sprop-parameter-sets=Z0IAKeNQFAe2AtwEBAaQeJEV,aM48gA== 

पहला भाग Base16 को Base64 से डीकोड:

67 42 00 29 E3 50 14 07 B6 02 DC 04 04 06 90 78 91 15 

दूसरा हिस्सा (अल्पविराम से अलग):

68 CE 3C 80 

उत्तर:Fetching the dimensions of a H264Video stream

उत्तर

12

कल्पना की आवश्यकता यहाँ आईटीयू वेबसाइट से मुफ्त डाउनलोड के लिए उपलब्ध है: - H.264 (03/10)

स्वतंत्र रूप से पीडीएफ डाउनलोड का चयन करें और आप प्रारूप खंड 7.3.2.1 में विस्तृत मिल जाएगा .1।

क्षमा करें, मेरे पिछले उत्तर से नहीं मिल रहा था, बस यह नहीं पता था कि जानकारी सार्वजनिक डोमेन में उपलब्ध थी।

+0

आपको नियम बनाओ !!!!!!!!! Thanx! = डी – Cipi

+2

उत्तर में यूआरएल पुराना है, यहां नया है: http://www.itu.int/rec/T-REC-H.264/en – Cipi

+0

spec अब TIES सदस्यता या क्रय के बिना उपलब्ध नहीं है एक प्रति। – Deanna

1

जैसा कि यह पता चला है, मेरे प्रश्न का उत्तर इस दस्तावेज़ में लिखा गया है: आईएसओ/आईईसी 14496-10: 2005, धारा 7.3.2.1 के तहत। और इसे पाने के लिए मुझे भुगतान करने की आवश्यकता है। तो ... =)

+0

यह तुम यहाँ दस्तावेज़ मुक्त डाउनलोड कर सकते हैं लगता है: http://www.itu.int/rec/टी-REC-H.264/en – Flame

+0

अद्यतन के लिए Thanx! :) – Cipi

6

बेशक spec हमेशा सर्वोत्तम होता है, लेकिन एसडीपी में स्पॉप-पैरामीटर-सेट में आमतौर पर आपके अनुक्रम पैरामीटर और चित्र पैरामीटर सेट, बेस -64 एन्कोडेड और अल्पविराम द्वारा सीमित किया जाता है। अनुक्रम पैरामीटर और चित्र पैरामीटर सेट मूल रूप से डिकोडर को बताते हैं कि आने वाली H264 स्ट्रीम को ठीक से कैसे डीकोड करना है; इसके बिना आप सही ढंग से डीकोड नहीं कर सकते हैं।

एसपीएस/पीपीएस के लिए एक पार्सर लिखना मुश्किल नहीं है, हालांकि ऐसा करने के लिए आपको बिल्कुल विनिर्देश की आवश्यकता होगी। आपको एक अच्छी बिट-रीडर कक्षा और ज्ञान के बारे में भी जानकारी होगी कि कैसे घातीय गोल्ब एन्कोडिंग हस्ताक्षरित और हस्ताक्षरित दोनों मानों के लिए काम करता है। here और here देखें।

आखिरकार, डूम 9 पर this thread में पाया गया कोड मेरे लिए अमूल्य था - यह मूल रूप से प्राथमिक H264 स्ट्रीम के लिए एक पूर्ण पार्सर है। इसमें थोड़ा पाठक वर्ग, एनयूएल, एसपीएस, पीपीएस, वीयूआई पैरामीटर, अनुक्रम स्केलिंग मैट्रिस इत्यादि को पार्स करने के लिए दिनचर्या शामिल है। यह किसी भी वीडियो इंजीनियर के लिए कोड का एक बहुत ही आसान टुकड़ा है।

+0

थैंक्स, मैं इसे पहले से ही डीकोड करने में कामयाब रहा हूं: http://www.itu.int/rec/T-REC-H.264-200903-I/en। =) – Cipi

1

वीडियो का आकार एसडीपी की "फ्रेम फ्रेम" लाइन में है, है ना?

00028 int av_strstart(const char *str, const char *pfx, const char **ptr) 
00029 { 
00030  while (*pfx && *pfx == *str) { 
00031   pfx++; 
00032   str++; 
00033  } 
00034  if (!*pfx && ptr) 
00035   *ptr = str; 
00036  return !*pfx; 
00037 } 
00038 

पी अपनी लाइन का एक सूचक एसडीपी

है
 if (av_strstart(p, "framesize:", &p)) { 
00370   char buf1[50]; 
00371   char *dst = buf1; 
00372 
00373   // remove the protocol identifier.. 
00374   while (*p && *p == ' ') p++; // strip spaces. 
00375   while (*p && *p != ' ') p++; // eat protocol identifier 
00376   while (*p && *p == ' ') p++; // strip trailing spaces. 
00377   while (*p && *p != '-' && (dst - buf1) < sizeof(buf1) - 1) { 
00378    *dst++ = *p++; 
00379   } 
00380   *dst = '\0'; 
00381 
00382   // a='framesize:96 320-240' 
00383   // set our parameters.. 
00384   codec->width = atoi(buf1); 
00385   codec->height = atoi(p + 1); // skip the - 
00386   codec->pix_fmt = PIX_FMT_YUV420P; 
      } 

संदर्भ: http://cekirdek.pardus.org.tr/~ismail/ffmpeg-docs/rtpdec__h264_8c-source.html#l00360

+1

असल में, स्वीकृत उत्तर में दस्तावेज़ पैरामीटर सेट को डीकोड करने का तरीका बताता है ... – Cipi