Dove nel mp4 file structure è la durata di esso?Qualcuno ha familiarità con la struttura dei dati mp4?
risposta
questo non può essere la risposta al vostro problema, ma era al mio: http://mediainfo.sourceforge.net/
(Ha una biblioteca ed è open source, quindi si può solo controllare la parte (s) è necessario)
Non sto più cercando questo, ma questa è probabilmente la migliore risposta qui. –
MP4 è un formato "contenitore", che in pratica significa che può contenere un numero di diversi flussi audio o video. E ogni stream può avere il proprio valore di durata ...
Per individuare quello che ti serve, ti serviranno altri file di riferimento. Potrei suggerire di cercare here e here ... ma probabilmente dovrai andare oltre le ricerche per i diversi tipi di flussi A/V che vuoi supportare.
Per quanto ne so - il contenitore "mp4" deriva dalla struttura atomica QuickTime. È possibile leggere la descrizione del formato file QuickTime.
L'analisi degli atomi quicktime non è un grosso problema (vedere atomicParsley project). Non sono sicuro per MP4, ma per quanto riguarda i file MOV - c'è un campo "durata" in atomo "mvhd" (intestazione film) e anche in atomo "tkhd" (intestazione traccia). Questa durata è solitamente un numero di fotogrammi moltiplicato per l'attributo "scala temporale". La scala del tempo può essere trovata negli stessi atomi.
Per il lettore Red5 MP4 ho usato l'atomo "mvhd", poiché contiene sia i campi della scala temporale che quelli della durata. Ottenere la durata dall'atomo sarà diverso in base alla versione in uso, qui sotto potete vedere un esempio:
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;
}
Su un lato nota che ho usato i valori per calcolare il tempo di gioco e fps in questo modo:
double fps = (videoSampleCount * timeScale)/(double) duration;
double videoTime = ((double) duration/(double) timeScale);
Il videoSampleCount variabile deriva dall'atomo "stsz".
È possibile utilizzare Media Box Viewer. È un parser MP4 e Quicktime. Quando apri un file Quicktime, puoi vedere la struttura dell'atomo. Cerca l'atomo della descrizione del video. Una delle sue proprietà è la durata. Media Box Viewer può essere scaricato da www.jdxsoftware.org.
Vedere il progetto https://github.com/sannies/mp4parser. È una libreria Java che mostra la struttura dei file mp4.
Utilizzando MP4Parser http://code.google.com/p/mp4parser/ come poster precedente detto - hanno persino un campione che fornisce Durata:
Fondamentalmente struttura MP4 è un albero. Macro aree sono:
- ftyp - tipo di file
- moov - contiene i metadati (titolo del brano, autors, url, e altre informazioni)
- gratuito - zona vuota per intestazione separata e dati
- MDAT - contiene l'audio incornicia
si può provare questo strumento freeware MP4 Analyzer
http://www.thinmultimedia.co.kr/products/MP4Reader_download.html
La durata del film è nell'intestazione del film mvhd. La durata in secondi è derivata da due campi in mvhd.
- 4 tempo byte durata scala
- 4 byte
Queste sono le linee 380 e 382 nelle specifiche inviato da @ Tom Brito.
Quindi, dato 'ts' scala cronologica e durata 'dur' Duration in seconds = dur/ts
- 1. Python ha una struttura dati linkedList integrata?
- 2. Qualcuno ha provato con vss2git?
- 3. Qualcuno ha esperienza con AppScale?
- 4. Qualcuno ha esperienza con Perl5i?
- 5. PHP ha una struttura dati impostata?
- 6. Python ha una struttura dati a corda?
- 7. Struttura del database per la memorizzazione dei dati storici
- 8. Come visualizzare la struttura di dati flat nella struttura gerarchica dei dati (Java)?
- 9. LaTeX ha una struttura dati array?
- 10. Qualcuno ha esperienza con CloudFoundry con Grails?
- 11. java ha una struttura di dati "LinkedConcurrentHashMap"?
- 12. Perché favorire l'allineamento della struttura dei dati?
- 13. Capire la struttura dei dati di contesto in Antlr4
- 14. La struttura dati della corda
- 15. struttura dei dati per l'indicizzazione grande file
- 16. Qualcuno ha qualche esperienza con Hobo?
- 17. e disfare struttura dati con Perl6
- 18. Come postare la struttura dei dati come json alla fiaschetta?
- 19. Set (struttura dei dati) in PowerShell
- 20. Qualcuno ha integrato correttamente la chat con redmine?
- 21. Qualcuno ha usato Ant4Eclipse con Project Lombok?
- 22. Qualcuno ha provato il lino?
- 23. La migliore struttura dati per i dati della serie storica
- 24. Qualcuno ha mai usato SciPy con IronPython?
- 25. Qualcuno ha esperienza con gcc LTO (C++)?
- 26. Qualcuno ha avuto problemi con Windows 7?
- 27. Qualcuno ha adottato con successo JaikuEngine?
- 28. Qualcuno ha dati quantitativi su VHDL rispetto all'uso Verilog?
- 29. Perché .Net non ha una struttura dati impostata?
- 30. Qualcuno ha dei collegamenti ai tutorial di javacc?
di ricerca per la durata nel documento. È una lunghezza di 8 byte (versione 1) o di 4 byte nell'intestazione. –
@MichaelTodd L'ho fatto e ci sono molte durate nel file. Leggerò l'intero documento per capire meglio, se nessuno conosce la risposta. –
Correlati (questo per Java): http://stackoverflow.com/questions/3015393/how-to-handle-mp4-files-with-java –