2017-08-17 3 views
0

Je dois obtenir un fichier mpeg4 à utiliser dans une autre application, à partir d'une vidéo mpeg4 originale que j'ai chargée dans matlab et éditée (image par image). Pour ce faire, j'ai essayé d'utiliser Videowriter, réglage de la qualité à 100%:Qualité MPEG4 enregistrée dans MATLAB

newVid = VideoWriter(outputfilename, 'MPEG-4'); 
newVid.FrameRate = fps; 
newVid.Quality = 100; 

Cependant, le résultat que je reçois est très pauvre et si la taille de la vidéo d'origine non édité était ~ 50 Mo, celui que je reçois post-edit dans matlab est environ ~ 20MB, et je ne sais pas comment garder la qualité et la taille comme ils étaient. J'ai également essayé d'enregistrer sous .avi et de convertir en mpeg4 avec ffmpeg, mais cela a donné des résultats encore plus médiocres. Des idées?

+2

Savez-vous que dans votre code que vous avez défini la propriété 'Quality' être' 30'? –

+0

Désolé c'était une version antérieure. Il a été plus tard fixé à 100 – guyts

Répondre

0

MPEG-4 est un format compressé, donc il y a une perte d'information lorsque vous le sauvegardez dans ce format. La qualité est la qualité de la compression mais vous ne voulez pas de compression. Pour forcer Matlab ne pas utiliser la compression ma conjecture est d'utiliser la déclaration ci-dessous comme la valeur par défaut est H.264

 

    newVid.VideoCompressionMethod = 'none' 

+0

Les docs disent, cet attribut est en lecture seule. – sascha

+0

Ensuite, je suppose que vous devrez utiliser un autre format non compressé ('AVI non compressé') et le convertir en dehors de matlab comme vous l'avez essayé. Il semble que ffmpeg peut faire sans perte H.264 enconding (https://trac.ffmpeg.org/wiki/Encode/H.264) – MosGeo

+0

Je ne suis pas celui qui demande et ffmpeg peut faire n'importe quoi ;-) (et cette partie de matlab semble mal conçu) – sascha