Taille finale incorrecte (AVI - XViD - MP3/AC3)
Modérateur : Modérateurs
- Underground78
- Administrateur
- Messages : 11272
- Enregistré le : mar. 06 févr., 2007 21:54
- Localisation : France
- Contact :
Pour le MKV et MP4, je ne saurais dire précisément, mais l'overhead est légèrement négatif ! En effet il n'y a pas d'interleave car les différentes pistes sont séparées, et je suppose que la légère perte de taille doit venir d'une fusion des en-têtes ou quelque chose dans le style ...
Ah oui sinon, le fait que dans "Taille finale désirée", lorsqu'on tape 700Mo, il nous affiche 699Mo (toujours 1Mo de moins quelle que soit la valeur), c'est voulu ? Parce que c'est source d'erreur si on fait pas gaffe aussi
Ah oui sinon, le fait que dans "Taille finale désirée", lorsqu'on tape 700Mo, il nous affiche 699Mo (toujours 1Mo de moins quelle que soit la valeur), c'est voulu ? Parce que c'est source d'erreur si on fait pas gaffe aussi
- pepsilite
- The Grinch
- Messages : 23287
- Enregistré le : sam. 03 févr., 2007 19:13
- Localisation : Chez moi le plus possible ...
Oui c'était voulu pour que les erreurs d'arrondis n'engendrent pas des tailles supérieures à celles voulues... Bon avec la non prise en compte de l'overhead, ça ne servait effectivement pas à grand chose.
Sinon, bonne nouvelle, j'ai intégré la gestion de l'overhead dans la v3
Sinon, bonne nouvelle, j'ai intégré la gestion de l'overhead dans la v3
06/01/2020 m4ng v6 est disponible au téléchargement en version finale : m4ng v6
- Underground78
- Administrateur
- Messages : 11272
- Enregistré le : mar. 06 févr., 2007 21:54
- Localisation : France
- Contact :
Pour le mkv l'overhead est légèrement négatif quand la fonction "header removal compression" est activée (parfois au prix de la perte de compatibilité avec certains lecteurs ne respectant pas complètement la norme mkv) après pour le MP4 ça me parait assez étrange, j'ai jamais vu d'overhead négatif.Asterix a écrit :Pour le MKV et MP4, je ne saurais dire précisément, mais l'overhead est légèrement négatif ! En effet il n'y a pas d'interleave car les différentes pistes sont séparées, et je suppose que la légère perte de taille doit venir d'une fusion des en-têtes ou quelque chose dans le style ...
- Underground78
- Administrateur
- Messages : 11272
- Enregistré le : mar. 06 févr., 2007 21:54
- Localisation : France
- Contact :
Bah j'ai fait le test avec une piste XViD et une piste MP3 :
Après, je viens de tomber sur ça et ça, donc quand j'aurai 5 minutes, faudrait que je regarde si ça correspond avec mon exemple (même si j'en doute vu que la taille diminue) ... mais apparemment, ya un paquet de cas à traiter !
- Somme = 821.96 Mo
- AVI = 825.63 Mo
- MKV = 820.55 Mo
- MP4 = 819.63 Mo
Après, je viens de tomber sur ça et ça, donc quand j'aurai 5 minutes, faudrait que je regarde si ça correspond avec mon exemple (même si j'en doute vu que la taille diminue) ... mais apparemment, ya un paquet de cas à traiter !
ah ....
Avant de poster votre problème, venez faire un tour dans la FAQ voir si la solution ne s'y trouve pas
INFOS UTILES
- Underground78
- Administrateur
- Messages : 11272
- Enregistré le : mar. 06 févr., 2007 21:54
- Localisation : France
- Contact :
Pour info voila comment Megui calcule les débits.Asterix a écrit :Bah j'ai fait le test avec une piste XViD et une piste MP3 :Donc en prenant l'overhead AVI, ça fait 24 * longueur * fps = 3.66 Mo et 821.96 + 3.66 = 825.62 Mo (ouf)
- Somme = 821.96 Mo
- AVI = 825.63 Mo
- MKV = 820.55 Mo
- MP4 = 819.63 Mo
Après, je viens de tomber sur ça et ça, donc quand j'aurai 5 minutes, faudrait que je regarde si ça correspond avec mon exemple (même si j'en doute vu que la taille diminue) ... mais apparemment, ya un paquet de cas à traiter !
Bon j'ai regardé un peu plus dans le détail et en fait le truc, c'est qu'il y a 2 overhead, un video et un audio.
Un fichier se compose donc comme ça : (FluxVideo + OverheadVideo) + (FluxAudio + OverheadAudio), avec FluxVideo et FluxAudio les 2 flux bruts dont la taille vaut longueur * bitrate.
Par contre, à première vue, la valeur du bitrate que m4ng envoie au codec est le bitrate de FluxVideo + OverheadVideo (donc le bitrate du fichier video et non du flux) ce qui fait que l'overhead video est automatiquement inclus, et quand on mux avec un flux audio, il faut rajouter l'overhead audio (cf interleave ...).
Maintenant, pourquoi cet overhead audio est-il négatif avec les MKV et MP4 ??? Et bien non, il est bien positif, mais ce qui se passe, c'est qu'il est plus faible qu'en AVI, et l'overhead vidéo aussi ! Du coup, quand notre flux video, encapsulé dans son AVI, vient à être ré-encapsulé dans du MKV/MP4, la différence d'overhead fait que FluxVideo + OverheadVideo est plus petit, et quand on rajoute FluxAudio + OverheadAudio (un peu plus petit lui aussi), on se retrouve avec un fichier final plus petit.
Je vais essayer de creuser un peu ce WE et de faire des tests d'encodages multiples pour voir si ça colle ...
Un fichier se compose donc comme ça : (FluxVideo + OverheadVideo) + (FluxAudio + OverheadAudio), avec FluxVideo et FluxAudio les 2 flux bruts dont la taille vaut longueur * bitrate.
Par contre, à première vue, la valeur du bitrate que m4ng envoie au codec est le bitrate de FluxVideo + OverheadVideo (donc le bitrate du fichier video et non du flux) ce qui fait que l'overhead video est automatiquement inclus, et quand on mux avec un flux audio, il faut rajouter l'overhead audio (cf interleave ...).
Maintenant, pourquoi cet overhead audio est-il négatif avec les MKV et MP4 ??? Et bien non, il est bien positif, mais ce qui se passe, c'est qu'il est plus faible qu'en AVI, et l'overhead vidéo aussi ! Du coup, quand notre flux video, encapsulé dans son AVI, vient à être ré-encapsulé dans du MKV/MP4, la différence d'overhead fait que FluxVideo + OverheadVideo est plus petit, et quand on rajoute FluxAudio + OverheadAudio (un peu plus petit lui aussi), on se retrouve avec un fichier final plus petit.
Je vais essayer de creuser un peu ce WE et de faire des tests d'encodages multiples pour voir si ça colle ...
- pepsilite
- The Grinch
- Messages : 23287
- Enregistré le : sam. 03 févr., 2007 19:13
- Localisation : Chez moi le plus possible ...
pour l'instant c'est pour tout le monde, si c'est trop différent, je ne le mettrais que pour la sortie AVI
06/01/2020 m4ng v6 est disponible au téléchargement en version finale : m4ng v6
D'après mes premiers tests de cette nuit (avec la dernière v2_beta) :
Mais à terme, il faudra sûrement tous les faire car la différence est quand même non négligeable.
- Taille souhaitée : 1500 Mo
- Taille AVI : 1505.57 Mo
- Taille MKV : 1497.32 Mo
- Taille MP4 : 1495.82 Mo
Mais à terme, il faudra sûrement tous les faire car la différence est quand même non négligeable.
- pepsilite
- The Grinch
- Messages : 23287
- Enregistré le : sam. 03 févr., 2007 19:13
- Localisation : Chez moi le plus possible ...
"non négligeable"? 3mo de différence sur 1500? à mon avis même avec zoomant avec Hubble on ne verrait jamais la moindre différence ...
06/01/2020 m4ng v6 est disponible au téléchargement en version finale : m4ng v6
- pepsilite
- The Grinch
- Messages : 23287
- Enregistré le : sam. 03 févr., 2007 19:13
- Localisation : Chez moi le plus possible ...
Hmmmm ... à la réflexion quelque chose cloche dans le calcul du débit à retrancher ... fps*0.192, ça nous donne 25*0.192 = 130 ... 130 kbps à retrancher, ça fait beaucoup non?
06/01/2020 m4ng v6 est disponible au téléchargement en version finale : m4ng v6
Bon, après avoir fait plusieurs tests (9 encodages différents sur 4 films différents), je suis parvenu à un calcul des overhead qui marche pas mal dans tous les cas, mieux avec certains formats que d'autres, mais c'est dans tous les cas plus précis qu'actuellement
J'ai donc converti tous ces overhead (taille) en débit équivalent à soustraire/ajouter puisque ça semble plus simple et voici mes résultats :
Pour du codec XViD, le débit envoyé par m4ng au codec est le débit du fichier vidéo et non du flux, il inclut donc l'overhead vidéo du conteneur AVI. Du coup, si on encode en AVI, pas besoin de le rajouter, on a juste à rajouter l'overhead audio, ce qui revient à soustraire le débit équivalent, ce qui donne BitrateBon = BitrateMauvais - BitrateEquivalentAudio, et on va chercher BitrateEquivalentAudio dans la liste ci-dessus, ce qui donne 0,19*fps (pour du AVI c'est simple).
Toujours pour du XViD, si l'on encode en MKV maintenant. Il faut d'abord soustraire l'overhead AVI (automatiquement inclus avec du XViD), puis rajouter l'overhead MKV et l'overhead audio, ce qui donne pour du MKV (sans bFrames) et une piste AAC par exemple : BitrateBon = BitrateMauvais + BitrateEquivalentVideoAVI - BitrateEquivalentVideoMKV - BitrateEquivalentAudio, avec dans ce cas BitrateEquivalentVideoAVI=0.192*fps, BitrateEquivalentVideoMKV=(143*longueur*fps+60*longueur+57000)/(1250*longueur) et BitrateEquivalentAudio=(longueur*sampling+901120*longueur+25231360)/(22528000*longueur) d'après la liste ci-dessus.
Pour généraliser, on prend le mauvais bitrate (l'ancien quoi, enfin l'actuel), on lui rajoute le bitrate équivalent AVI puis on lui soustrait le bitrate équivalent du conteneur vidéo (donc ça s'annule si c'est du AVI) et le bitrate équivalent de la piste audio correspondant au conteneur utilisé.
Simple non ?
Si maintenant on encore en x264, dans ce cas le débit envoyé par m4ng au codec est bien celui du flux, donc plus besoin de soustraire l'overhead AVI comme dans le cas du XViD, il suffit d'ajouter les overhead (càd soustraire les débits équivalents) vidéo et audio associés à la piste et au conteneur utilisé.
Pour l'exemple, si on encode en MKV/AAC, on a BitrateBon = BitrateMauvais - BitrateEquivalentVideoMKV - BitrateEquivalentAudioMKVAAC.
J'espère avoir été suffisamment clair (c'était pas évident mais j'ai fait de mon mieux), mais s'il y a des questions ou d'autres combinaisons conteneur/piste audio à calculer que j'aurais oubliés (j'ai fait tous ceux de m4ng v2, mais il y en a peut-être des nouveaux dans la v3 ...), pas de problème !
P.S. : Au niveau des unités dans les formules, longueur est en secondes, fps en rien, sampling en hertz, et ça donne les débits équivalents en kbps
J'ai donc converti tous ces overhead (taille) en débit équivalent à soustraire/ajouter puisque ça semble plus simple et voici mes résultats :
- Overhead Vidéo
- Conteneur AVI : 0,192 * fps
- Conteneur MKV (si pas de bFrames) : (143 * longueur * fps + 60 * longueur + 57000) / (1250 * longueur)
- Conteneur MKV (si bFrames) : (313 * longueur * fps + 120 * longueur + 114000) / (2500 * longueur)
- Conteneur MP4 (si pas de bFrames) : 0,0344 * fps
- Conteneur MP4 (si bFrames) : 0,0832 * fps
Overhead Audio - Conteneur AVI
- Piste MP3/AC3 : 0,19 * fps
- Conteneur MKV
- Piste MP3 : (longueur * sampling + 1013760 * longueur + 28385280) / (25344000 * longueur)
- Piste AC3 : (longueur * sampling + 1351680 * longueur + 37847040) / (33792000 * longueur)
- Piste AAC : (longueur * sampling + 901120 * longueur + 25231360) / (22528000 * longueur)
- Piste OGG : (longueur * sampling + 901120 * longueur + 738197504) / (22528000 * longueur)
- Conteneur MP4
- Piste MP3/AC3/AAC : 0
Pour du codec XViD, le débit envoyé par m4ng au codec est le débit du fichier vidéo et non du flux, il inclut donc l'overhead vidéo du conteneur AVI. Du coup, si on encode en AVI, pas besoin de le rajouter, on a juste à rajouter l'overhead audio, ce qui revient à soustraire le débit équivalent, ce qui donne BitrateBon = BitrateMauvais - BitrateEquivalentAudio, et on va chercher BitrateEquivalentAudio dans la liste ci-dessus, ce qui donne 0,19*fps (pour du AVI c'est simple).
Toujours pour du XViD, si l'on encode en MKV maintenant. Il faut d'abord soustraire l'overhead AVI (automatiquement inclus avec du XViD), puis rajouter l'overhead MKV et l'overhead audio, ce qui donne pour du MKV (sans bFrames) et une piste AAC par exemple : BitrateBon = BitrateMauvais + BitrateEquivalentVideoAVI - BitrateEquivalentVideoMKV - BitrateEquivalentAudio, avec dans ce cas BitrateEquivalentVideoAVI=0.192*fps, BitrateEquivalentVideoMKV=(143*longueur*fps+60*longueur+57000)/(1250*longueur) et BitrateEquivalentAudio=(longueur*sampling+901120*longueur+25231360)/(22528000*longueur) d'après la liste ci-dessus.
Pour généraliser, on prend le mauvais bitrate (l'ancien quoi, enfin l'actuel), on lui rajoute le bitrate équivalent AVI puis on lui soustrait le bitrate équivalent du conteneur vidéo (donc ça s'annule si c'est du AVI) et le bitrate équivalent de la piste audio correspondant au conteneur utilisé.
Simple non ?
Si maintenant on encore en x264, dans ce cas le débit envoyé par m4ng au codec est bien celui du flux, donc plus besoin de soustraire l'overhead AVI comme dans le cas du XViD, il suffit d'ajouter les overhead (càd soustraire les débits équivalents) vidéo et audio associés à la piste et au conteneur utilisé.
Pour l'exemple, si on encode en MKV/AAC, on a BitrateBon = BitrateMauvais - BitrateEquivalentVideoMKV - BitrateEquivalentAudioMKVAAC.
J'espère avoir été suffisamment clair (c'était pas évident mais j'ai fait de mon mieux), mais s'il y a des questions ou d'autres combinaisons conteneur/piste audio à calculer que j'aurais oubliés (j'ai fait tous ceux de m4ng v2, mais il y en a peut-être des nouveaux dans la v3 ...), pas de problème !
P.S. : Au niveau des unités dans les formules, longueur est en secondes, fps en rien, sampling en hertz, et ça donne les débits équivalents en kbps