2010-06-16 8 views
32

mp4 file structure में इसकी अवधि क्या है?एमपी 4 डेटा संरचना से परिचित कोई भी?

+0

खोजें। यह हेडर में 8-बाइट (संस्करण 1) या 4-बाइट लंबाई है। –

+0

@MichaelTodd मैंने इसे किया, और फ़ाइल में बहुत सारी अवधि है। बेहतर समझने के लिए मैं पूरे दस्तावेज़ को पढ़ूंगा, अगर कोई जवाब नहीं जानता है। –

+0

संबंधित (जावा के लिए यह एक): http://stackoverflow.com/questions/3015393/how-to-handle-mp4-files-with-java –

उत्तर

13

यह आपके समस्या का जवाब नहीं हो सकता है, लेकिन यह मेरा था: http://mediainfo.sourceforge.net/

(यह एक पुस्तकालय है और यह खुला स्रोत है, तो आप सिर्फ हिस्सा (रों) आप की जरूरत के लिए जाँच कर सकते हैं)

+0

मैं इसे और अधिक नहीं ढूंढ रहा हूं, लेकिन शायद यह सबसे अच्छा जवाब है। –

4

MP4 एक "कंटेनर" प्रारूप है, जिसका मूल रूप से अर्थ है कि इसमें कई अलग-अलग ऑडियो या वीडियो स्ट्रीम हो सकते हैं। और प्रत्येक स्ट्रीम में इसकी अवधि अवधि हो सकती है ...

आपको जो चाहिए उसे खोदने के लिए, आपको कुछ और संदर्भ फाइलें मिलेंगी। मैं here और here देखकर सुझाव दे सकता हूं ... लेकिन आपको शायद उन विभिन्न प्रकार के ए/वी धाराओं के लिए खोज करना होगा जिन्हें आप समर्थन देना चाहते हैं।

6

जहां तक ​​मुझे पता है - "एमपी 4" कंटेनर क्विकटाइम परमाणु संरचना से लिया गया है। आप क्विकटाइम फ़ाइल प्रारूप का विवरण पढ़ सकते हैं।

पार्सिंग क्विकटाइम परमाणु एक बड़ा सौदा नहीं है (atomicParsley project देखें)। मैं एमपी 4 के लिए निश्चित नहीं हूं, लेकिन एमओवी फाइलों के लिए - "एमवीएचडी" (मूवी हेडर) परमाणु में "अवधि" फ़ील्ड है और "tkhd" (ट्रैक हेडर) परमाणु में भी है। यह अवधि आम तौर पर "समय पैमाने" विशेषता से गुणा कई फ्रेम होती है। एक ही परमाणुओं में समय पैमाने पाया जा सकता है।

6

लाल 5 एमपी 4 पाठक के लिए मैंने "एमवीएचडी" परमाणु का उपयोग किया, क्योंकि इसमें समय और अवधि दोनों फ़ील्ड शामिल हैं। परमाणु से अवधि जाएगा हो रही संस्करण के आधार पर अलग-अलग हो, इस्तेमाल किया जा रहा नीचे आपको एक उदाहरण देख सकते हैं:

 
public long create_full_atom(MP4DataStream bitstream) throws IOException { 
    long value = bitstream.readBytes(4); 
    version = (int)value >> 24; 
    flags = (int)value & 0xffffff; 
    readed += 4; 
    return readed; 
}

public long create_movie_header_atom(MP4DataStream bitstream) throws IOException { create_full_atom(bitstream); if (version == 1) { creationTime = createDate(bitstream.readBytes(8)); modificationTime = createDate(bitstream.readBytes(8)); timeScale = (int)bitstream.readBytes(4); duration = bitstream.readBytes(8); readed += 28; } else { creationTime = createDate(bitstream.readBytes(4)); modificationTime = createDate(bitstream.readBytes(4)); timeScale = (int)bitstream.readBytes(4); duration = bitstream.readBytes(4); readed += 16; } int qt_preferredRate = (int)bitstream.readBytes(4); int qt_preferredVolume = (int)bitstream.readBytes(2); bitstream.skipBytes(10); long qt_matrixA = bitstream.readBytes(4); long qt_matrixB = bitstream.readBytes(4); long qt_matrixU = bitstream.readBytes(4); long qt_matrixC = bitstream.readBytes(4); long qt_matrixD = bitstream.readBytes(4); long qt_matrixV = bitstream.readBytes(4); long qt_matrixX = bitstream.readBytes(4); long qt_matrixY = bitstream.readBytes(4); long qt_matrixW = bitstream.readBytes(4); long qt_previewTime = bitstream.readBytes(4); long qt_previewDuration = bitstream.readBytes(4); long qt_posterTime = bitstream.readBytes(4); long qt_selectionTime = bitstream.readBytes(4); long qt_selectionDuration = bitstream.readBytes(4); long qt_currentTime = bitstream.readBytes(4); long nextTrackID = bitstream.readBytes(4); readed += 80;
return readed;
}


एक तरफ ध्यान दें पर मैं खेलने समय की गणना करने के लिए इस्तेमाल किया मूल्यों और इतने तरह एफपीएस:
 
    double fps = (videoSampleCount * timeScale)/(double) duration; 
    double videoTime = ((double) duration/(double) timeScale); 
videoSampleCount परिवर्तनीय "stsz" परमाणु से आता है।

-1

मीडिया बॉक्स व्यूअर का उपयोग किया जा सकता है। यह एमपी 4 और क्विकटाइम पार्सर है। जब आप क्विकटाइम फ़ाइल खोलते हैं, तो आप परमाणु संरचना देख सकते हैं। वीडियो विवरण परमाणु की तलाश करें। इसकी संपत्तियों में से एक अवधि है। मीडिया बॉक्स व्यूअर www.jdxsoftware.org से डाउनलोड किया जा सकता है।

1

MP4Parser http://code.google.com/p/mp4parser/ पिछले पोस्टर उल्लेख के रूप में उपयोग वे भी एक नमूना है कि अवधि प्रदान करता है। मैक्रो क्षेत्र हैं:

  • ftyp - फ़ाइल प्रकार
  • Moov - अलग शीर्षक के खाली क्षेत्र और डेटा
  • - मेटा डेटा (शीर्षक गीत, autors, यूआरएल, और अन्य infos)
  • मुक्त होता है mdat - ऑडियो फ़्रेम हैं

आप इस फ्रीवेयर MP4 विश्लेषक उपकरण

कोशिश कर सकते हैं

1

मूल रूप से MP4 संरचना एक पेड़ है: -

0

मूवी की अवधि मूवी हेडर एमवीएचडी में है। सेकेंड में अवधि एमवीएचडी में दो फ़ील्ड से ली गई है।

  • 4 बाइट समय के पैमाने
  • 4 बाइट अवधि

ये लाइनें 380 और कल्पना @Tom ब्रिटो द्वारा पोस्ट की में 382 हैं।

तो दिया timescale 'ts' और अवधि 'dur' दस्तावेज़ में अवधि के लिए Duration in seconds = dur/ts

संबंधित मुद्दे