24 #include <QProgressDialog>
25 #include <QImageReader>
26 #include <QImageWriter>
30 #include "layersound.h"
32 #define MIN(a,b) ((a)>(b)?(b):(a))
37 int16_t safeSum( int16_t a, int16_t b )
39 if ( ( (
int )a + (
int )b ) > 32767 )
41 if ( ( (
int )a + (
int )b ) < -32768 )
52 foreach( QString format, formats )
58 formats = QImageWriter::supportedImageFormats();
59 foreach( QString format, formats )
66 void Editor::importMovie( QString filePath,
int fps )
69 QSettings settings( PENCIL2D, PENCIL2D );
71 qDebug() <<
"-------IMPORT VIDEO------" << filePath;
74 QDir::temp().mkdir(
"pencil" );
75 QString tempPath = QDir::temp().absolutePath() +
"/pencil/";
77 if ( QFile::exists( QDir::current().currentPath() +
"/plugins/ffmpeg.exe" ) ==
true )
79 QProgressDialog progress(
"Importing movie...",
"Abort", 0, 100, NULL );
80 progress.setWindowModality( Qt::WindowModal );
82 progress.setValue( 10 );
84 qDebug() <<
"./plugins/ffmpeg.exe -i \"" << filePath <<
"\" -r " << QString::number( fps ) <<
" -f image2 \"" << tempPath <<
"tmp_import%4d.png\"";
85 ffmpeg.start(
"./plugins/ffmpeg.exe -i \"" + filePath +
"\" -r " + QString::number( fps ) +
" -f image2 \"" + tempPath +
"tmp_import%4d.png\"" );
86 progress.setValue( 20 );
87 if ( ffmpeg.waitForStarted() == true )
89 if ( ffmpeg.waitForFinished() == true )
91 qDebug() <<
"stdout: " + ffmpeg.readAllStandardOutput();
92 qDebug() <<
"stderr: " + ffmpeg.readAllStandardError();
96 qDebug() <<
"ERROR: FFmpeg did not finish executing.";
101 qDebug() <<
"ERROR: Could not execute FFmpeg.";
103 progress.setValue( 50 );
104 QDir dir1( tempPath );
105 int nFiles = dir1.entryList().count();
107 QString frameNumberString = QString::number( i );
108 while ( frameNumberString.length() < 4 ) frameNumberString.prepend(
"0" );
109 while ( QFile::exists( tempPath +
"tmp_import" + frameNumberString +
".png" ) )
111 progress.setValue( 50 + i * 50 / nFiles );
112 if ( i>1 ) scrubForward();
113 importImage( tempPath +
"tmp_import" + frameNumberString +
".png" );
115 frameNumberString = QString::number( i );
116 while ( frameNumberString.length() < 4 ) frameNumberString.prepend(
"0" );
118 progress.setValue( 100 );
120 QDir dir( tempPath );
121 QStringList filtername(
"*.*" );
122 QStringList entries = dir.entryList( filtername, QDir::Files, QDir::Type );
123 for (
int i = 0; i < entries.size(); i++ )
124 dir.remove( entries[ i ] );
128 qDebug() <<
"Please place ffmpeg.exe in plugins directory";