Files
libopenshot/src/Main.cpp

195 lines
4.5 KiB
C++
Raw Normal View History

2011-10-11 08:44:27 -05:00
#include <fstream>
2011-10-11 08:44:27 -05:00
#include <iostream>
#include <map>
#include <queue>
#include <tr1/memory>
2011-10-11 08:44:27 -05:00
#include "../include/OpenShot.h"
#include <omp.h>
2011-10-11 08:44:27 -05:00
using namespace openshot;
using namespace tr1;
2011-10-11 08:44:27 -05:00
void FrameReady(int number)
{
cout << "Frame #: " << number << " is ready!" << endl;
}
int main()
{
2012-10-30 18:53:26 -05:00
/* TIMELINE ---------------- */
Timeline t(720, 420, Framerate(24,1), 48000, 2);
// Add some clips
Clip c1(new FFmpegReader("/home/jonathan/Videos/sintel_trailer-480p.mp4"));
2013-01-12 14:51:59 -06:00
// Clip c2(new FFmpegReader("/home/jonathan/Videos/sintel_trailer-480p.mp4"));
// Clip c3(new ImageReader("/home/jonathan/Desktop/logo.png"));
// Clip c4(new ImageReader("/home/jonathan/Desktop/text3.png")); // audio
// Clip c5(new ImageReader("/home/jonathan/Desktop/text1.png")); // color
// Clip c6(new ImageReader("/home/jonathan/Desktop/text4.png")); // sub-pixel
// Clip c7(new ImageReader("/home/jonathan/Desktop/text8.png")); // coming soon
// Clip c10(new ImageReader("/home/jonathan/Desktop/text10.png")); // time mapping
// CLIP 1 (background movie)
c1.Position(0.0);
c1.gravity = GRAVITY_LEFT;
c1.scale = SCALE_CROP;
c1.Layer(0);
c1.End(16.0);
c1.alpha.AddPoint(1, 0.0);
c1.alpha.AddPoint(500, 0.0);
c1.alpha.AddPoint(565, 1.0);
2013-01-12 14:51:59 -06:00
// c1.time.AddPoint(1, 360);
// c1.time.AddPoint(384, 180, LINEAR);
// c1.time.AddPoint(385, 180);
// c1.time.AddPoint(565, 720, LINEAR);
//c1.time.PrintValues();
//return 1;
// CLIP 2 (wave form)
2013-01-12 14:51:59 -06:00
// c2.Position(0.0);
// c2.Layer(1);
// c2.Waveform(true);
// c2.alpha.AddPoint(1, 1.0);
// c2.alpha.AddPoint(150, 0.0);
// c2.alpha.AddPoint(360, 0.0, LINEAR);
// c2.alpha.AddPoint(384, 1.0);
// c2.volume.AddPoint(1, 0.0);
// c2.volume.AddPoint(300, 0.0, LINEAR);
// c2.End(15.0);
// c2.wave_color.blue.AddPoint(1, 65000);
// c2.wave_color.blue.AddPoint(300, 0);
// c2.wave_color.red.AddPoint(1, 0);
// c2.wave_color.red.AddPoint(300, 65000);
// CLIP 3 (watermark)
2013-01-12 14:51:59 -06:00
// c3.Layer(2);
// c3.End(50);
// c3.gravity = GRAVITY_BOTTOM_RIGHT;
// c3.scale = SCALE_NONE;
// c3.alpha.AddPoint(1, 1.0);
// c3.alpha.AddPoint(75, 0.0);
// c3.location_x.AddPoint(1, -5);
// c3.location_y.AddPoint(1, -5);
//
// // CLIP 4 (text about waveform)
// c4.Layer(3);
// c4.scale = SCALE_NONE;
// c4.gravity = GRAVITY_CENTER;
// c4.Position(1);
// c4.alpha.AddPoint(1, 1.0);
// c4.alpha.AddPoint(30, 0.0);
// c4.alpha.AddPoint(100, 0.0);
// c4.alpha.AddPoint(130, 1.0);
// c4.End(5.5);
//
// // CLIP 5 (text about colors)
// c5.Layer(3);
// c5.scale = SCALE_NONE;
// c5.gravity = GRAVITY_CENTER;
// c5.Position(16);
// c5.alpha.AddPoint(1, 1.0);
// c5.alpha.AddPoint(30, 0.0);
// c5.alpha.AddPoint(100, 0.0);
// c5.alpha.AddPoint(130, 1.0);
// c5.End(5.5);
//
// // CLIP 6 (text about sub-pixel)
// c6.Layer(3);
// c6.scale = SCALE_NONE;
// c6.gravity = GRAVITY_LEFT;
// c6.Position(24);
// c6.alpha.AddPoint(1, 1.0);
// c6.alpha.AddPoint(30, 0.0);
// c6.alpha.AddPoint(100, 0.0);
// c6.alpha.AddPoint(130, 1.0);
// c6.location_x.AddPoint(1,0.05);
// c6.location_x.AddPoint(130, 0.3);
// c6.End(5.5);
//
// // CLIP 7 (text about coming soon)
// c7.Layer(3);
// c7.scale = SCALE_NONE;
// c7.gravity = GRAVITY_CENTER;
// c7.Position(18.0);
// c7.alpha.AddPoint(1, 1.0);
// c7.alpha.AddPoint(30, 0.0);
// c7.alpha.AddPoint(100, 0.0);
// c7.alpha.AddPoint(130, 1.0);
// c7.End(5.5);
//
//
// // CLIP 10 (text about waveform)
// c10.Layer(3);
// c10.scale = SCALE_NONE;
// c10.gravity = GRAVITY_CENTER;
// c10.Position(1);
// c10.alpha.AddPoint(1, 1.0);
// c10.alpha.AddPoint(30, 0.0);
// c10.alpha.AddPoint(100, 0.0);
// c10.alpha.AddPoint(130, 1.0);
// c10.End(5.5);
// Add clips
t.AddClip(&c1);
//t.AddClip(&c2);
//t.AddClip(&c3);
//t.AddClip(&c4);
//t.AddClip(&c5);
//t.AddClip(&c6);
2013-01-12 14:51:59 -06:00
//t.AddClip(&c7);
//t.AddClip(&c10);
/* ---------------- */
/* WRITER ---------------- */
FFmpegWriter w("/home/jonathan/output.webm");
// Set options
w.SetAudioOptions(true, "libvorbis", 48000, 2, 128000);
w.SetVideoOptions(true, "libvpx", Fraction(24,1), 720, 420, Fraction(1,1), false, false, 3000000);
// Prepare Streams
w.PrepareStreams();
// Write header
w.WriteHeader();
// Output stream info
w.OutputStreamInfo();
for (int frame = 1; frame <= 565; frame++)
{
tr1::shared_ptr<Frame> f = t.GetFrame(frame);
if (f)
{
//if (frame >= 13)
//f->Display();
// Write frame
cout << "queue frame " << frame << " (" << f->number << ", " << f << ")" << endl;
w.WriteFrame(f);
}
}
// Write Footer
w.WriteTrailer();
// Close writer & reader
w.Close();
// Close timeline
t.Close();
/* ---------------- */
cout << "Successfully Finished Timeline DEMO" << endl;
return 0;
2011-10-11 08:44:27 -05:00
}