Fichiers

Fichiers - C - Programmation

Marsh Posté le 17-08-2009 à 12:04:32    

Bonjour,
 
Newbies :ange: , cherche à savoir comment faire pour créer un fichier d'une taille fixe de 1Go (8Gb, je ne sait même pas si c'est possible de créer un tel fichier aux vues de certains commentaires lus)
c'est pour bufferiser 1heure de video format mpeg2 et poser dessus un pointeur d'ecriture différent pointeur de lecture.
 
je cherche en fait à faire de la TV avec IGMP (oui c'est dejà moi les autres questions à la con postées sur le forum  :p ) et il faut que je stoque sur un serveur 1heure de chaque chaine.
est ce que quelqu'un pourrait m'aider, m'orrienter, j'avoue etre un peu perdu  :sarcastic:  
 
d'avance merci :)  


---------------
De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent.
Reply

Marsh Posté le 17-08-2009 à 12:04:32   

Reply

Marsh Posté le 17-08-2009 à 12:59:26    

Pourquoi ce serait impossible ?
La limite c'est 4Go sur un système 32bits, et bien plus pour un système 64bits (16To je crois).

Reply

Marsh Posté le 17-08-2009 à 13:17:42    

ON parle de fichier, pas de mémoire ici. Selon ton système de fichiers, tu peux certainement aller au moins jusqu'à 16Go par fichier.
 
sinon vlc ?

Reply

Marsh Posté le 17-08-2009 à 13:49:48    

merci, deja ça me rassure pas mal. :)
 
En fait j'aimerai faire un fichier buffer qui collecte les données en provenance d'une carte TV ou autre flux video.
ce fichier doit correspondre à 1Heure de video, donc en mpeg2 ça tourne entre 700mo et 1go environ.
par consequent j'aimerai faire un fichier de taille fixe 1Go (une sorte de gros buffer circulaire) avec un pointeur qui va me servir à ecrire les données venat de la carte TV et un pointeur de lecture qui renvoie les données vers le réseau...
 
j'ai deja trouver les fonction permettant de créer le fichier (fopen), de le fermer (fclose), de se deplacer dans ce fichier (fseek), mais je n'ai pas trouver comment on pouvait fixer la taille de ce dernier.

Reply

Marsh Posté le 17-08-2009 à 14:00:52    

Taz a écrit :


sinon vlc ?


 c'est à dire ? :??:  
c'est vrai que vlc c'est vraiment une bête, et il gererait IGMP :
http://www.videolan.org/vlc/features.php?cat=misc
mais je pense qu'il ne le gère qu'en tant que client, moi je voudrais plutot me concentrer sur le serveur.
de plus je ne pense pas qu'il buffurise 1H de données.
mais l'idée est bonne et je vais aller voir le code (Gpl), merci je n'y avait pas pensé :)


---------------
De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent.
Reply

Marsh Posté le 17-08-2009 à 14:03:15    

Non vlc a intégré depuis longtemps la couche VLS, donc serveur sans problème.

Reply

Marsh Posté le 17-08-2009 à 16:49:12    

personne ne sait pour créer un fichier de taille fixe ?

Reply

Marsh Posté le 17-08-2009 à 16:53:18    

ProGrammeHeure a écrit :

personne ne sait pour créer un fichier de taille fixe ?


Je dirais que c'est à toi de te démerderdébrouiller pour gérer la taille de ton fichier.


---------------
deluser --remove-home ptitchep
Reply

Marsh Posté le 17-08-2009 à 17:34:31    

donc si je veux un fichier de 1Go il faut tout d'abords que j'ecrive 1Go de données sur ce fichier, alors seulement il fera 1Go?!
enfin seulement si j'ai bien compris.

Reply

Marsh Posté le 17-08-2009 à 17:46:28    

Tu peux aussi utiliser fseek sur un fichier stdio avec un SEEK_SET au dela de la taille physique du fichier, puis écrire un octet à la fin. Ton fichier aura une la taille demandé juste en écrivant cet octet.
 
Cela dit, ça n'a un intérêt que pour le mappage de fichier en mémoire (mmap), si c'est pour réserver une taille sur le disque, il faudra effectivement écrire les 1Go de données dans le fichier, car avec la première méthode tu auras un fichier à trou : à l'affichage ton gestionnaire de fichier affichera 1Go, mais sur le disque il n'occupera que quelques Ko.

Reply

Marsh Posté le 17-08-2009 à 17:46:28   

Reply

Marsh Posté le 17-08-2009 à 18:08:39    

mon but final est de faire un buffer circulaire de 1go.
ça pourrait etre typiquement un film, ou une source TV (provenance DBV flux H262: mpeg2 )stoké dans ce gros buffer.
donc si je fait un  
statu = fseek (MonFichier, 1000000000 ,SEEK_SET);
ce serait bon ?! serait-ce approprié?

Reply

Marsh Posté le 31-08-2009 à 14:35:47    


personne pour me confirmer?

Reply

Marsh Posté le 31-08-2009 à 15:00:28    

ProGrammeHeure a écrit :

mon but final est de faire un buffer circulaire de 1go.
ça pourrait etre typiquement un film, ou une source TV (provenance DBV flux H262: mpeg2 )stoké dans ce gros buffer.
donc si je fait un  
statu = fseek (MonFichier, 1000000000 ,SEEK_SET);
ce serait bon ?! serait-ce approprié?


Là ça va certainement faire un fichier à trou en fonction de ton OS.
Si tu veux créer un fichier et bien l'allouer, écris des 0 dedans et voilà.

Reply

Marsh Posté le 31-08-2009 à 15:06:33    

merci pour la reponse
 
si je n'alloue pas ces fichiers ( car c'est tout de même un peut long de remplir 1Go de 0 je pense),  
et que je créer plusieur fichier de ce type à la suite, exemple:
statu = fseek (MonFichier1, 1000000000 ,SEEK_SET);
statu = fseek (MonFichier2, 1000000000 ,SEEK_SET);
...
statu = fseek (MonFichierN, 1000000000 ,SEEK_SET);
et que je les remplit plus tard progessivement jusqu'à 1Go est ce que cela peut poser des problèmes?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed