41 #ifndef FILMSTRO_FFMPEG_FFMPEGVIDEOWRITER_H_INCLUDED
42 #define FILMSTRO_FFMPEG_FFMPEGVIDEOWRITER_H_INCLUDED
44 class FFmpegVideoSource;
75 void setTimeBase (AVMediaType type, AVRational timebase);
82 bool openMovieFile (
const juce::File& outputFile,
const juce::String& format=juce::String());
93 void videoSizeChanged (
const int width,
const int height,
const AVPixelFormat)
override;
105 void closeContexts ();
107 void finishWriting ();
110 bool writeAudioFrame (
const bool flush=
false);
112 int encodeWriteFrame (AVFrame *frame, AVMediaType type);
117 juce::int64 audioWritePosition;
119 AVFormatContext* formatContext;
121 AVCodecContext* videoContext;
122 AVCodecContext* audioContext;
123 AVCodecContext* subtitleContext;
125 AVCodecID videoCodec;
126 AVCodecID audioCodec;
127 AVCodecID subtitleCodec;
131 int subtitleStreamIdx;
133 AVRational videoTimeBase;
134 AVRational audioTimeBase;
135 AVRational subtitleTimeBase;
138 int64_t channelLayout;
142 AVPixelFormat pixelFormat;
143 AVRational pixelAspect;
148 juce::ScopedPointer<FFmpegVideoScaler> outVideoScaler;
149 juce::ScopedPointer<FFmpegVideoScaler> inVideoScaler;
void setVideoSize(const int width, const int height)
Set the video size before opening a file.
Definition: filmstro_ffmpeg_FFmpegVideoWriter.cpp:113
void setSampleRate(const int newSampleRate)
Set the audio sample rate before opening a file.
Definition: filmstro_ffmpeg_FFmpegVideoWriter.cpp:107
void copySettingsFromContext(const AVCodecContext *context)
copies settings from a context (e.g.
Definition: filmstro_ffmpeg_FFmpegVideoWriter.cpp:146
bool openMovieFile(const juce::File &outputFile, const juce::String &format=juce::String())
Opens a file for writing audio, video and subtitles.
Definition: filmstro_ffmpeg_FFmpegVideoWriter.cpp:176
void writeNextVideoFrame(const juce::Image &image, const juce::int64 timestamp)
Write the next video frame from juce image.
Definition: filmstro_ffmpeg_FFmpegVideoWriter.cpp:406
void videoSizeChanged(const int width, const int height, const AVPixelFormat) override
This is called whenever the size changed, so a framebuffer can be resized.
Definition: filmstro_ffmpeg_FFmpegVideoWriter.cpp:543
Definition: filmstro_ffmpeg_FFmpegVideoWriter.h:47
void setPixelAspect(const int num, const int den)
Set the pixel aspect ratio as fraction before opening a file.
Definition: filmstro_ffmpeg_FFmpegVideoWriter.cpp:124
FFmpegVideoWriter(const juce::String &format=juce::String())
Definition: filmstro_ffmpeg_FFmpegVideoWriter.cpp:43
void setTimeBase(AVMediaType type, AVRational timebase)
Set the timebase for the stream, provide either AVMEDIA_TYPE_VIDEO, AVMEDIA_TYPE_AUDIO, AVMEDIA_TYPE_SUBTITLE.
Definition: filmstro_ffmpeg_FFmpegVideoWriter.cpp:129
static juce::StringArray getOutputFormatNames()
Returns the names of available output formats.
Definition: filmstro_ffmpeg_FFmpegVideoWriter.cpp:81
Definition: filmstro_ffmpeg_FFmpegVideoListener.h:44
~FFmpegVideoWriter()
Definition: filmstro_ffmpeg_FFmpegVideoWriter.cpp:77
void setVideoCodec(AVCodecID codec=AV_CODEC_ID_PROBE)
Set the requested video codec before opening a file.
Definition: filmstro_ffmpeg_FFmpegVideoWriter.cpp:92
void setAudioCodec(AVCodecID codec=AV_CODEC_ID_PROBE)
Set the requested audio codec before opening a file.
Definition: filmstro_ffmpeg_FFmpegVideoWriter.cpp:97
void displayNewFrame(const AVFrame *) override
This callback receives frames from e.g.
Definition: filmstro_ffmpeg_FFmpegVideoWriter.cpp:549
void setPixelFormat(const AVPixelFormat format)
Set the pixel format before opening a file.
Definition: filmstro_ffmpeg_FFmpegVideoWriter.cpp:119
void closeMovieFile()
Closes the movie file.
Definition: filmstro_ffmpeg_FFmpegVideoWriter.cpp:347
void writeNextAudioBlock(juce::AudioSourceChannelInfo &info)
Append a chunk of audio data.
Definition: filmstro_ffmpeg_FFmpegVideoWriter.cpp:400
void setSubtitleCodec(AVCodecID codec=AV_CODEC_ID_PROBE)
Set the requested subtitle codec before opening a file.
Definition: filmstro_ffmpeg_FFmpegVideoWriter.cpp:102