D'abord bravo pour ce programme PTVM qui est très convivial
et qui m'a fait renoncer définitivement au programme 'Pinnacle TV Center pro'
(j'ai une carte Pinnacle PCTV Hybrid Pro PCI).
Je propose d'ajouter, à une prochaine version de PTVM,
la possibilité de découper automatiquement les fichiers mpg enregistrés lors de la capture
selon une taille paramètrable par l'utilisateur.
Cela permettrais d'enregistrer plus de 4 Go consécutifs sur une partition FAT32.
Cela pourrais se faire d'une façon équivalente à ce que fait le logiciel VirtualDub
en nommant ainsi la liste des fichiers : nom.01.mpg , nom.02.mpg , nom.03.mpg , etc .
A bientôt.
Découpage automatique des fichiers mpg lors de la capture
-
- Administrateur du site et développeur
- Messages : 2058
- Enregistré le : 05 août 2007, 12:57
- Carte Tuner : August DVB-T210 USB + divers autres
- Êtes-vous un robot ? : Je ne suis pas un robot
- Localisation : Pantin (IDF, 93)
- Contact :
Re: Découpage automatique des fichiers mpg lors de la captur
Bonjour,mekp a écrit :D'abord bravo pour ce programme PTVM qui est très convivial
et qui m'a fait renoncer définitivement au programme 'Pinnacle TV Center pro'
(j'ai une carte Pinnacle PCTV Hybrid Pro PCI).
Je propose d'ajouter, à une prochaine version de PTVM,
la possibilité de découper automatiquement les fichiers mpg enregistrés lors de la capture
selon une taille paramètrable par l'utilisateur.
Cela permettrais d'enregistrer plus de 4 Go consécutifs sur une partition FAT32.
Cela pourrais se faire d'une façon équivalente à ce que fait le logiciel VirtualDub
en nommant ainsi la liste des fichiers : nom.01.mpg , nom.02.mpg , nom.03.mpg , etc .
Ceci a déjà été évoqué une ou deux fois ailleurs dans ce forum, je crois, et il y a déjà un certain temps.
C'est sans doute possible, mais ce n'est pas très évident à faire « proprement » (autrement dit, de telle sorte qu'il n'y ait pas une rupture visible ou audible au moment du raccord).
Gingko
Gingko
․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․
Tuners utilisés, sur 3 ordis : • USB : August DVB-T210, AverMedia HDTV DVB-T Volar (2×) • PCI : Hauppauge Nova-DT Dual DVB-T • Express Card : AverMedia Digi Express 54
․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․
Tuners utilisés, sur 3 ordis : • USB : August DVB-T210, AverMedia HDTV DVB-T Volar (2×) • PCI : Hauppauge Nova-DT Dual DVB-T • Express Card : AverMedia Digi Express 54
-
- Messages : 14
- Enregistré le : 20 juin 2010, 15:06
- Carte Tuner : pinnacle PCTV hybrid pro pci
- Êtes-vous un robot ? : Je ne suis pas un robot
Re: Découpage automatique des fichiers mpg lors de la captur
*****************************************************************************************************
j'ai fait une modification de PouchinTVmod pour permettre de capturer
plus de 4 Go en PS (.mpg) sur des partitions FAT32 en splittant le fichier de capture
en plusieurs fichiers < 4 Go (taille paramètrable)
*****************************************************************************************************
***** ajout d'un fichier 'lettresFAT32.txt' dans le même répertoire que PouchinTVMod.exe *****
****************************************************************************************************************
***** ajout vers le début du fichier capture.cpp *****
*************************************************************
*****************************************************************************************
***** modif du module CCapture::ecrit_fichier(...) du fichier capture.cpp *****
*****************************************************************************************
******************************************************
***** ajout vers le début du fichier ini.cpp *****
******************************************************
****************************************************************************************
**** modif du module NomFichierAvecDate::Create() du fichier ini.cpp *****
****************************************************************************************
j'ai fait une modification de PouchinTVmod pour permettre de capturer
plus de 4 Go en PS (.mpg) sur des partitions FAT32 en splittant le fichier de capture
en plusieurs fichiers < 4 Go (taille paramètrable)
*****************************************************************************************************
- il faut noter que chaque fichier 'splitté' n'est pas un fichier .mpg valide !!!!!
- il faudra concaténer les fichiers 'splittés' pour obtenir un fichier .mpg valide !!!!!
(sur une partition NTFS s'il doit dépasser 4 Go) - au lieu d'un fichier de capture unique (par exemple : nom.mpg)
on aura plusieurs fichiers : nom.mpg.001, nom.mpg.002, nom.mpg.003, etc
- ajout d'un fichier de paramètres de type texte
- modification des fichiers capture.cpp et ini.cpp
***** ajout d'un fichier 'lettresFAT32.txt' dans le même répertoire que PouchinTVMod.exe *****
****************************************************************************************************************
- exemple de contenu :
CSW
2000000000
- qu'il y aura split pour les partitions C: , S: et W:
- que la taille maximum des fichiers 'splittés' est 2000000000 (presque 2 Go)
- si ce genre de modification interesse suffisament de personnes
on pourrait envisager de modifier le fichier 'config.ini'
au lieu d'utiliser le fichier spécifique 'lettresFAT32.txt'
***** ajout vers le début du fichier capture.cpp *****
*************************************************************
Code : Tout sélectionner
// ----- variables ajoutées pour le split du fichier de capture -----
extern TCHAR nom_init[MAX_PATH]; // declaré en global
extern unsigned int written_all, written_all_max; // declaré en global
extern int nusufx; // declaré en global
***** modif du module CCapture::ecrit_fichier(...) du fichier capture.cpp *****
*****************************************************************************************
Code : Tout sélectionner
BOOL CCapture::ecrit_fichier(LPCVOID pBuf, DWORD sizBuf) const
{
DWORD written;
// ----- mise en commentaire pour le split du fichier de capture -----
// return WriteFile(hFile, pBuf, sizBuf, &written, NULL);
// ----- partie ajoutée pour le split du fichier de capture -----
BOOL result;
result = WriteFile(hFile, pBuf, sizBuf, &written, NULL);
if ( nusufx == -1 ) return result;
written_all = written_all+written;
if ( written_all > written_all_max ) {
TCHAR nom_new[MAX_PATH];
nusufx++;
swprintf(nom_new, L"%s.%3.3d", nom_init, nusufx);
CloseHandle(hFile);
CreateFile(nom_new, GENERIC_WRITE, FILE_SHARE_READ, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
written_all = 0;
}
return result;
// ----- fin de la partie ajoutée -----
}
***** ajout vers le début du fichier ini.cpp *****
******************************************************
Code : Tout sélectionner
// ----- variables ajoutées pour le split du fichier de capture -----
TCHAR nom_init[MAX_PATH]; // declaré en global
unsigned int written_all, written_all_max; // declaré en global
int nusufx; // declaré en global
// ----- fin des variables ajoutées
**** modif du module NomFichierAvecDate::Create() du fichier ini.cpp *****
****************************************************************************************
Code : Tout sélectionner
HANDLE NomFichierAvecDate::Create() const
{
// ----- partie ajoutée pour initialiser le split du fichier de capture -----
FILE *fd;
char FileLetterFat[300], LettersFat[20], nom_mbs[100], LetterFile, chwrittenmax[20];
wchar_t cmdline[300];
char *ptch;
int itmp, i_last_slash;
bool do_split_file;
LPTSTR lpszCommandLine = ::GetCommandLine();
wcscpy(cmdline, lpszCommandLine);
wcstombs(&FileLetterFat[0], cmdline, sizeof(cmdline));
strcat(FileLetterFat, " ");
if ( FileLetterFat[0] == '"' ) {
memmove(&FileLetterFat[0] , &FileLetterFat[1], strlen(FileLetterFat)); // elimine 1ere double quote
ptch = strchr(FileLetterFat, '"');
if ( ptch != NULL ) *ptch = 0; // elimine 2eme double quote et ce qui suit
} else {
ptch = strchr(FileLetterFat, ' ');
if ( ptch != NULL ) *ptch = 0; // elimine espace et ce qui suit
}
i_last_slash = -1;
for (itmp = 0; itmp < (int)strlen(FileLetterFat); itmp++) {
if ( FileLetterFat[itmp] == 92 ) i_last_slash = itmp; // 92 : anti-slash
}
if ( i_last_slash == -1 ) {
// cas ou il n'y a pas de répertoire devant le nom de l'exécutable
FileLetterFat[0] = 0;
} else {
FileLetterFat[i_last_slash+1] = 0;
}
strcpy(FileLetterFat, "lettresFAT32.txt");
do_split_file = false;
fd = fopen(FileLetterFat, "r");
if ( fd != NULL ) {
// fichier présent, il doit contenir :
// - en 1ere ligne : une liste de lettres (par exemple : CSW)
// correspondant aux lettres de lecteurs associées à des partitions FAT32
// ou même à des partitions NTFS pour lesquelles on veut splitter le fichier
// - en 2eme ligne : la taille maximum en octets à partir de laquelle
// on splitte le fichier (par exemple : 2000000000 pour presque 2 Go)
// la 2eme ligne est facultative (dans ce cas 2000000000 est pris par défaut)
fgets(LettersFat, sizeof(LettersFat), fd);
if ( LettersFat[strlen(LettersFat)-1] == 10 ) LettersFat[strlen(LettersFat)-1] = 0;
strupr(LettersFat); // converti en majuscules
if ( fgets(chwrittenmax, sizeof(chwrittenmax), fd) != NULL ) {
if ( chwrittenmax[strlen(chwrittenmax)-1] == 10 ) chwrittenmax[strlen(chwrittenmax)-1] = 0;
sscanf(chwrittenmax, "%d", &written_all_max);
} else {
written_all_max = 2000000000; // presque 2 Go
}
fclose(fd);
wcstombs(&nom_mbs[0], nom, sizeof(nom));
if ( nom_mbs[1] == ':' ) {
// cas de nom de fichier absolu (par exemple : C:\dir\file)
// le cas de nom de fichier relatif (par exemple : dir1\file) n'est pas traité
LetterFile = nom_mbs[0];
if ( LetterFile >= 97 ) LetterFile = LetterFile-32; // converti en majuscules
if ( strchr(LettersFat, nom_mbs[0]) != NULL ) {
// cas ou la lettre est dans la liste LettersFat
do_split_file = true;
}
}
}
if ( do_split_file == false ) {
nusufx = -1; // pour désactiver le découpage du fichier capturé
} else {
written_all = 0;
nusufx = 1;
wcscpy(nom_init, nom);
TCHAR nom_new[MAX_PATH];
swprintf(nom_new, L"%s.%3.3d", nom_init, nusufx);
return CreateFile(nom_new, GENERIC_WRITE, FILE_SHARE_READ, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
}
// ----- fin de la partie ajoutée -----
return CreateFile(nom, GENERIC_WRITE, FILE_SHARE_READ, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
}
-
- Administrateur du site et développeur
- Messages : 2058
- Enregistré le : 05 août 2007, 12:57
- Carte Tuner : August DVB-T210 USB + divers autres
- Êtes-vous un robot ? : Je ne suis pas un robot
- Localisation : Pantin (IDF, 93)
- Contact :
Re: Découpage automatique des fichiers mpg lors de la captur
Bonjour,mekp a écrit :*****************************************************************************************************
j'ai fait une modification de PouchinTVmod pour permettre de capturer
plus de 4 Go en PS (.mpg) sur des partitions FAT32 en splittant le fichier de capture
en plusieurs fichiers < 4 Go (taille paramètrable)
*****************************************************************************************************
[……]
Merci pour votre contribution et votre intérêt pour Pouchin TV Mod.
J'ai déplacé votre message dans la section « Développement », et je me suis également permis un certain reformatage de son texte, essentiellement pour faire ressortir les indentations du code.
Le problème du découpage des fichiers .mpg est justement de faire une coupure propre entre les deux fichiers.
Ce qui n'est d'ailleurs pas évident à faire, étant donnée la nature des images de type « B » qui sont des interpolations bidirectionnelles entre deux images de type « I » ou « P » : le fichier devant nécessairement débuter et se terminer par une image complète, la réplication de la même image s'imposera en fin d'un fichier et au début du suivant, et le raccordement ultérieur de deux fichiers ainsi découpés résultera au mieux en une image en double (ou bien en deux images perdues), sauf à recoder les deux ou trois dernières images, opération beaucoup plus complexe.
Gingko
Gingko
․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․
Tuners utilisés, sur 3 ordis : • USB : August DVB-T210, AverMedia HDTV DVB-T Volar (2×) • PCI : Hauppauge Nova-DT Dual DVB-T • Express Card : AverMedia Digi Express 54
․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․
Tuners utilisés, sur 3 ordis : • USB : August DVB-T210, AverMedia HDTV DVB-T Volar (2×) • PCI : Hauppauge Nova-DT Dual DVB-T • Express Card : AverMedia Digi Express 54