|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 81
|
[C++ o Dos] Unire File Video
Buona sera,
sto scrivendo un programma in c++ e sono arrivato al un punto in cui ho bisogno di unire più file video in uno. I file, inoltre, sono molteplici e con nomi imprevedibili e il programma verrà eseguito nella stessa cartella dei video. Ho provato ad usare questo codice dos, validissimo per quasi tutti i tipi file (tranne l'avi, evidentemente -.-), che ho inserito nel solito system("...."): Codice:
copy /b *.avi ciao.no Il codice in sè funziona, ma ogni file video nel suo codice interno penso espliciti anche la lunghezza, così quando apro ciao.avi mi riproduce solo il primo video, nonostante le sue dimensioni totali siano la somma esatta di tutti gli avi. Come potrei risolvere? Grazie mille in anticipo |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Un file AVI è un file con una struttura specifica, non puoi semplicemente concatenare i due file insieme , ma devi unirli rispettando la struttura del file.
Ti consiglio di leggerti un po' di documentazione su come un file AVI è strutturato e scrivere del codice che unisce i due file in maniera corretta: http://msdn.microsoft.com/en-us/library/ms779636.aspx Oppure, se puoi fare affidamento a un tool esterno. Potresti cercare di vedere se in giro ci sono dei tool a linea di comando che fanno il lavoro che vuoi senza dover scrivere tu l'unificatore. Ciao
__________________
GPU Compiler Engineer |
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 81
|
Quote:
Comunque grazie per l'aiuto, leggerò la documentazione da te fornita |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Wmv e mpg sono formati diversi da avi molto complessi da gestire. Cercare di gestirli a mano dal codice del tuo programma non è impossibile ma è incredibilmente difficile e ti porterebbe via mesi di tempo. Io ti consiglio di cercare un binario già compilato di ffmpeg e lanciarlo dal codice come stai facendo con copy.
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
L'unica possibilità che hai è quella di usare una libreria come gstreamer http://gstreamer.freedesktop.org/
Alternative sono xine, mplayer e ffmpeg. |
|
|
|
|
|
#6 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 81
|
Quote:
Codice:
$ mencoder *.avi -oac mp3lame -ovc xvid -xvidencopts pass=1 -o video_finale.avi Esiste un comando simile per fare la stessa cosa con ffmpeg? EDIT Ho trovato questo codice ffmpeg Codice:
ffmpeg -i video1.mpeg -i video2.mpeg -vcodec copy -acodec copy -vcodec copy -acodec copy test12.mpeg -newvideo -newaudio Ultima modifica di skeleton : 16-07-2012 alle 12:02. |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2005
Messaggi: 5245
|
|
|
|
|
|
|
#8 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 81
|
Quote:
|
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Quelli citati sono tutti programmi che manipolano i file video. Se ti serve semplicemente unire i file puoi usare quelli, altrimenti usi le librerie fornite da mplayer, ffmpeg o gstreamer.
Banalmente per unire più file avi faresti così mencoder -oac copy -ovc copy -idx -o output.avi video1.avi video2.avi video3.avi |
|
|
|
|
|
#10 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 81
|
Quote:
|
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
pare che sia incluso nella distribuzione di MPalyer.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#12 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 81
|
Quote:
|
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Se ti interessa sapere di più prova a documentarti.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#14 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 81
|
Quote:
Grazie a tutti per l'aiuto, funziona tutto a meraviglia Ultima modifica di skeleton : 16-07-2012 alle 13:32. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:51.




















