| 
    OpenShot Library | libopenshot
    0.4.0
    
   | 
 
 
 
 
Go to the documentation of this file.
   20         local_reader(reader), 
path(
path), chunk_size(24*3), chunk_count(1), frame_count(1), is_writing(false),
 
   21         default_extension(
".webm"), default_vcodec(
"libvpx"), default_acodec(
"libvorbis"), last_frame_needed(false), is_open(false)
 
   34     write_json_meta_data();
 
   41 std::string ChunkWriter::get_chunk_path(int64_t chunk_number, std::string folder, std::string extension)
 
   44     std::stringstream chunk_count_string;
 
   45     chunk_count_string << chunk_number;
 
   46     QString padded_count = 
"%1"; 
 
   47     padded_count = padded_count.arg(chunk_count_string.str().c_str(), 6, 
'0');
 
   48     if (folder.length() != 0 && extension.length() != 0)
 
   50         return QDir::cleanPath(QString(path.c_str()) + QDir::separator() + folder.c_str() + QDir::separator() + padded_count + extension.c_str()).toStdString();
 
   52     else if (folder.length() == 0 && extension.length() != 0)
 
   54         return QDir::cleanPath(QString(path.c_str()) + QDir::separator() + padded_count + extension.c_str()).toStdString();
 
   56     else if (folder.length() != 0 && extension.length() == 0)
 
   58         return QDir::cleanPath(QString(path.c_str()) + QDir::separator() + folder.c_str()).toStdString();
 
   68         throw WriterClosed(
"The ChunkWriter is closed.  Call Open() before calling this method.", path);
 
   74         frame->Save(get_chunk_path(chunk_count, 
"", 
".jpeg"), 1.0);
 
   77         create_folder(get_chunk_path(chunk_count, 
"final", 
""));
 
   78         writer_final = 
new FFmpegWriter(get_chunk_path(chunk_count, 
"final", default_extension));
 
   83         create_folder(get_chunk_path(chunk_count, 
"preview", 
""));
 
   84         writer_preview = 
new FFmpegWriter(get_chunk_path(chunk_count, 
"preview", default_extension));
 
   89         create_folder(get_chunk_path(chunk_count, 
"thumb", 
""));
 
   90         writer_thumb = 
new FFmpegWriter(get_chunk_path(chunk_count, 
"thumb", default_extension));
 
  106         last_frame_needed = 
true;
 
  111     if (last_frame_needed)
 
  121             auto blank_frame = std::make_shared<Frame>(
 
  131         last_frame_needed = 
false;
 
  144     if (frame_count % chunk_size == 0 && frame_count >= chunk_size)
 
  147         for (
int z = 0; z<12; z++)
 
  161         writer_final->
Close();
 
  162         writer_preview->
Close();
 
  163         writer_thumb->
Close();
 
  184     for (int64_t number = start; number <= length; number++)
 
  187         std::shared_ptr<Frame> f = reader->
GetFrame(number);
 
  198     for (int64_t number = start; number <= length; number++)
 
  201         std::shared_ptr<Frame> f = local_reader->
GetFrame(number);
 
  215         for (
int z = 0; z<12; z++)
 
  229         writer_final->
Close();
 
  230         writer_preview->
Close();
 
  231         writer_thumb->
Close();
 
  248     local_reader->
Close();
 
  252 void ChunkWriter::write_json_meta_data()
 
  255     std::string json_path = QDir::cleanPath(QString(path.c_str()) + QDir::separator() + 
"info.json").toStdString();
 
  258     std::ofstream myfile;
 
  259     myfile.open (json_path.c_str());
 
  260     myfile << local_reader->
Json() << std::endl;
 
  265 void ChunkWriter::create_folder(std::string 
path)
 
  267     QDir dir(
path.c_str());
 
  274 bool ChunkWriter::is_chunk_valid()
 
  
int video_bit_rate
The bit rate of the video stream (in bytes)
 
Exception when a writer is closed, and a frame is requested.
 
virtual std::shared_ptr< openshot::Frame > GetFrame(int64_t number)=0
 
virtual std::string Json() const =0
Generate JSON string of this object.
 
openshot::Fraction fps
Frames per second, as a fraction (i.e. 24/1 = 24 fps)
 
This namespace is the default namespace for all code in the openshot library.
 
int channels
The number of audio channels used in the audio stream.
 
Header file for ChunkWriter class.
 
void SetVideoOptions(bool has_video, std::string codec, openshot::Fraction fps, int width, int height, openshot::Fraction pixel_ratio, bool interlaced, bool top_field_first, int bit_rate)
Set video export options.
 
void WriteFrame(std::shared_ptr< openshot::Frame > frame)
Add a frame to the stack waiting to be encoded.
 
int width
The width of the video (in pixels)
 
std::string acodec
The name of the audio codec used to encode / decode the video stream.
 
This class uses the FFmpeg libraries, to write and encode video files and audio files.
 
openshot::Fraction pixel_ratio
The pixel ratio of the video stream as a fraction (i.e. some pixels are not square)
 
virtual void Open()=0
Open the reader (and start consuming resources, such as images or video files)
 
openshot::ChannelLayout channel_layout
The channel layout (mono, stereo, 5 point surround, etc...)
 
Header file for Frame class.
 
void WriteFrame(std::shared_ptr< openshot::Frame > frame)
Add a frame to the stack waiting to be encoded.
 
void Close()
Close the writer.
 
int height
The height of the video (in pixels)
 
void WriteTrailer()
Write the file trailer (after all frames are written). This is called automatically by the Close() me...
 
void CopyReaderInfo(openshot::ReaderBase *reader)
This method copy's the info struct of a reader, and sets the writer with the same info.
 
void Close()
Close the writer.
 
This abstract class is the base class, used by all readers in libopenshot.
 
std::string vcodec
The name of the video codec used to encode / decode the video stream.
 
int sample_rate
The number of audio samples per second (44100 is a common sample rate)
 
virtual void Close()=0
Close the reader (and any resources it was consuming)
 
void SetAudioOptions(bool has_audio, std::string codec, int sample_rate, int channels, openshot::ChannelLayout channel_layout, int bit_rate)
Set audio export options.
 
ChunkWriter(std::string path, openshot::ReaderBase *reader)
Constructor for ChunkWriter. Throws one of the following exceptions.
 
void PrepareStreams()
Prepare & initialize streams and open codecs. This method is called automatically by the Open() metho...
 
WriterInfo info
Information about the current media file.
 
Header file for all Exception classes.
 
void WriteHeader()
Write the file header (after the options are set). This method is called automatically by the Open() ...