2010-08-11 15 views
2

Je travaille dans une application dans laquelle nous utilisons IMediaDet pour obtenir des longueurs de flux. Maintenant, nous commençons à travailler avec des conteneurs MP4. Le problème est, quand j'essaie un IMediaDet :: put_fileName() avec le fichier MP4, je reçois HRESULT = -2147024770 (ERROR_MOD_NOT_FOUND). En utilisant un demuxer comercial mp4, je vois que le flux vidéo utilise l'encodage mpg2. Mes questions: Comment obtenir la longueur du flux d'un flux à l'intérieur d'un conteneur MP4? Existe-t-il un moyen de faire accepter ces fichiers par IMediaDet? Existe-t-il un moyen de montrer ce que le démultiplexeur IMediaDet devrait utiliser?Obtenir des longueurs de flux MP4

Toute aide serait grandement appréciée.

Merci.

+0

http://www.fourcc.org/ pourrait aider ... – rogerdpack

Répondre

1

Malheureusement, DirectShow does not contain an MP4 parser, even in Windows 7. Dans Win7, la fonctionnalité MP4 a été ajoutée à la fondation de médias.

Vous avez donc quelques options. Vous pouvez acheter ou créer un filtre DirectShow qui implémente un demux MP4 et associate it with the "mp4" file extension, ce qui devrait permettre à IMediaDet de démultiplexer correctement le fichier. Ou vous pouvez utiliser Media Foundation, qui devrait être en mesure de retourner cette information. Ou vous pouvez utiliser une bibliothèque séparée entièrement pour les fichiers MP4, like MP4v2. (notez que vous pouvez également implémenter un filtre de démultiplexage MP4 avec MP4v2, si vous voulez utiliser directement DirectShow au lieu de MP4v2)