[c++] concaténation fichier vidéo

kain31 Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   -  
 erikr le rouge -
Bonjour tout le monde

Voila mon probleme j'arrive a copier un fichier dans un autre mais quand je veux concatener un fichier avec un aute, c'est à dire rajouter en fin de fichier un autre fichier il y a un probleme.

il ne me rajoute pas en fin de fichier il fait simplement une copie pourtant je lui dis de rajouter a la fin.

Je travail avec des fichier vidéo.

Voici le code pour la copie et la concaténation

//copie du fichier source
std::ifstream source( "C:\\..\\video0.avi",std::ios_base::binary );
std::ofstream destination( "C:\\..\\video.avi",std::ios_base::binary );
char buff[4096];
while ( !source.eof() )
{
source.read ( buff, sizeof( buff ) );
destination.write ( buff, source.gcount() );
}

//on rajoute le fichier file a file1
std::ifstream file( "C:\\...\\video1.avi",std::ios_base::binary );
//ouverture avec ajout en fin de fichier 
std::ofstream file1( "C:\\..\\video.avi", std::ios_base::binary,std::ios_base::app); 


while ( !file.eof() )
{
file.read ( buff, sizeof( buff ) );
file1.write ( buff, file.gcount() );
}


Merci tout le monde
A voir également:

6 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
sans être méchant, tu est tordu.
Pourquoi rouvrir le fichier video1.avi dans file1 alors qu'il l'es déjà dans destination, et en plus pointant à la fin du fichier.
Est tu sur que le ::...::app place le "curseur" d'écriture à la fin du fichier?
Je ne sais pas ce que tu cherche à faire, mais il me semble que les fichiers video ont des entêtes, du coup, ça m'étonnerai beaucoup que ça fonctionne !
0
kain31 Messages postés 47 Date d'inscription   Statut Membre Dernière intervention  
 
Ce que je cherche a faire, je te l'explique.

Je possède deux vidéo et je souhaiterais copier c'est deux video dans un autre fichier video.

Donc dans un premier temps je doit copier un fichier dans le fichier destination puis rajouter a ce fichier le deuxième fichier.

Mais je c'est pas comment faire pour concatener.
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
essai ça :
//copie du fichier source
std::ifstream source( "C:\\..\\video0.avi",std::ios_base::binary );
std::ofstream destination( "C:\\..\\video.avi",std::ios_base::binary );
char buff[4096];
while ( !source.eof() )
{
source.read ( buff, sizeof( buff ) );
destination.write ( buff, source.gcount() );
}

//on rajoute le fichier file a file1
std::ifstream file( "C:\\...\\video1.avi",std::ios_base::binary );


while ( !file.eof() )
{
file.read ( buff, sizeof( buff ) );
destination.write ( buff, file.gcount() );
}

Ensuite, ton fichier video.avi contiendra bien les deux autre concaténer, c'est à dire écri à la suite l'un de l'autre. (regarde la taille final)
Par contre, si tu souhaite coller deux video ensemble l'une derrière l'autre avec comme but de les lire à la suite en une seul fois par le biai d'un lecteur type winamp : à mon avis ça ne marchera pas.
Si c'est ça que tu veu faire, prend un logiciel de montage video, tu t'enmerdera moins, et ça prendra moins de temps.
0
kain31 Messages postés 47 Date d'inscription   Statut Membre Dernière intervention  
 
merci beaucoup du code.

Mais en effet sa concatene mais impossible a lire apres et moi j'aimerais pouvoir faire un code qui me permet de concatener deux video.

Donc si quelqu'un sait comment faire, sa m'aiderait beaucoup

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Stupeflip Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   94
 
Salut,

Tu te rends compte que tu devras décoder les deux vidéos avant ? Ne serait-ce que pour virer les en-têtes. Puis les mettre à la suite et ré-encoder. Bref beaucoup de boulot au final pour garder une solution spécifique plutôt que d'utiliser un logiciel.
0
erikr le rouge
 
la commande cat sous linux pourra t'aider, en tout cas en mpeg, ça fonctionne.

cat toto.mpeg tata.mpeg > toto.tata.mpeg

et zou, toto.tata.mpeg est la somme des deux fichiers précédants

Je suis hors délai, mais bon.... plus d'infos sur http://lists.ze-linux.org/2006-08/msg00149.html
0