OpenShot Library | libopenshot  0.4.0
Public Member Functions | List of all members
openshot::ChunkWriter Class Reference

This class takes any reader and generates a special type of video file, built with chunks of small video and audio data. More...

#include <ChunkWriter.h>

Inheritance diagram for openshot::ChunkWriter:
[legend]
Collaboration diagram for openshot::ChunkWriter:
[legend]

Public Member Functions

 ChunkWriter (std::string path, openshot::ReaderBase *reader)
 Constructor for ChunkWriter. Throws one of the following exceptions. More...
 
void Close ()
 Close the writer. More...
 
int64_t GetChunkSize ()
 Get the chunk size (number of frames to write in each chunk) More...
 
bool IsOpen ()
 Determine if writer is open or closed. More...
 
void Open ()
 Open writer. More...
 
void SetChunkSize (int64_t new_size)
 Set the chunk size (number of frames to write in each chunk) More...
 
void WriteFrame (int64_t start, int64_t length)
 Write a block of frames from a reader. More...
 
void WriteFrame (openshot::ReaderBase *reader, int64_t start, int64_t length)
 Write a block of frames from a reader. More...
 
void WriteFrame (std::shared_ptr< openshot::Frame > frame)
 Add a frame to the stack waiting to be encoded. More...
 
- Public Member Functions inherited from openshot::WriterBase
void CopyReaderInfo (openshot::ReaderBase *reader)
 This method copy's the info struct of a reader, and sets the writer with the same info. More...
 
void DisplayInfo (std::ostream *out=&std::cout)
 Display file information in the standard output stream (stdout) More...
 
std::string Json () const
 Generate JSON string of this object. More...
 
Json::Value JsonValue () const
 Generate Json::Value for this object. More...
 
void SetJson (const std::string value)
 Load JSON string into this object. More...
 
void SetJsonValue (const Json::Value root)
 Load Json::Value into this object. More...
 
 WriterBase ()
 Constructor for WriterBase class, many things are initialized here. More...
 
virtual ~WriterBase ()=default
 

Additional Inherited Members

- Public Attributes inherited from openshot::WriterBase
WriterInfo info
 Information about the current media file. More...
 

Detailed Description

This class takes any reader and generates a special type of video file, built with chunks of small video and audio data.

These chunks can easily be passed around in a distributed computing environment, without needing to share the entire video file. They also allow a chunk to be frame accurate, since seeking inaccuracies are removed.

// This example demonstrates how to feed a reader into a ChunkWriter
FFmpegReader *r = new FFmpegReader("MyAwesomeVideo.mp4"); // Get a reader
r.Open(); // Open the reader
// Create a ChunkWriter (and a folder location on your computer)
ChunkWriter w("/folder_path_to_hold_chunks/", r);
// Open the writer
w.Open();
// Write a block of frames to the ChunkWriter (from frame 1 to the end)
w.WriteFrame(r, 1, r->info.video_length);
// Close the reader & writer
w.Close();
r.Close();

Definition at line 62 of file ChunkWriter.h.

Constructor & Destructor Documentation

◆ ChunkWriter()

ChunkWriter::ChunkWriter ( std::string  path,
openshot::ReaderBase reader 
)

Constructor for ChunkWriter. Throws one of the following exceptions.

Parameters
pathThe folder path of the chunk file to be created
readerThe initial reader to base this chunk file's meta data on (such as fps, height, width, etc...)

Definition at line 19 of file ChunkWriter.cpp.

Member Function Documentation

◆ Close()

void ChunkWriter::Close ( )

Close the writer.

Definition at line 209 of file ChunkWriter.cpp.

◆ GetChunkSize()

int64_t openshot::ChunkWriter::GetChunkSize ( )
inline

Get the chunk size (number of frames to write in each chunk)

Definition at line 104 of file ChunkWriter.h.

◆ IsOpen()

bool openshot::ChunkWriter::IsOpen ( )
inlinevirtual

Determine if writer is open or closed.

Implements openshot::WriterBase.

Definition at line 107 of file ChunkWriter.h.

◆ Open()

void ChunkWriter::Open ( )
virtual

Open writer.

Implements openshot::WriterBase.

Definition at line 280 of file ChunkWriter.cpp.

◆ SetChunkSize()

void openshot::ChunkWriter::SetChunkSize ( int64_t  new_size)
inline

Set the chunk size (number of frames to write in each chunk)

Parameters
new_sizeThe number of frames to write in this chunk file

Definition at line 114 of file ChunkWriter.h.

◆ WriteFrame() [1/3]

void ChunkWriter::WriteFrame ( int64_t  start,
int64_t  length 
)

Write a block of frames from a reader.

Parameters
startThe starting frame number to write (of the reader passed into the constructor)
lengthThe number of frames to write (of the reader passed into the constructor)

Definition at line 195 of file ChunkWriter.cpp.

◆ WriteFrame() [2/3]

void ChunkWriter::WriteFrame ( openshot::ReaderBase reader,
int64_t  start,
int64_t  length 
)
virtual

Write a block of frames from a reader.

Parameters
readerThe reader containing the frames you need
startThe starting frame number to write
lengthThe number of frames to write

Implements openshot::WriterBase.

Definition at line 181 of file ChunkWriter.cpp.

◆ WriteFrame() [3/3]

void ChunkWriter::WriteFrame ( std::shared_ptr< openshot::Frame frame)
virtual

Add a frame to the stack waiting to be encoded.

Parameters
frameThe openshot::Frame object that needs to be written to this chunk file.

Implements openshot::WriterBase.

Definition at line 64 of file ChunkWriter.cpp.

Referenced by WriteFrame().


The documentation for this class was generated from the following files:
openshot::ChunkWriter::ChunkWriter
ChunkWriter(std::string path, openshot::ReaderBase *reader)
Constructor for ChunkWriter. Throws one of the following exceptions.
Definition: ChunkWriter.cpp:19