h264section: set min bit rate on target file size
This commit is contained in:
@@ -45,6 +45,7 @@ void Encoder::WriteAudio(AudioParams pcm_info, const QString &pcm_filename)
|
||||
EncodingParams::EncodingParams() :
|
||||
video_enabled_(false),
|
||||
video_bit_rate_(0),
|
||||
video_min_bit_rate_(0),
|
||||
video_max_bit_rate_(0),
|
||||
video_buffer_size_(0),
|
||||
video_threads_(0),
|
||||
@@ -82,6 +83,11 @@ void EncodingParams::set_video_bit_rate(const int64_t &rate)
|
||||
video_bit_rate_ = rate;
|
||||
}
|
||||
|
||||
void EncodingParams::set_video_min_bit_rate(const int64_t &rate)
|
||||
{
|
||||
video_min_bit_rate_ = rate;
|
||||
}
|
||||
|
||||
void EncodingParams::set_video_max_bit_rate(const int64_t &rate)
|
||||
{
|
||||
video_max_bit_rate_ = rate;
|
||||
@@ -132,6 +138,11 @@ const int64_t &EncodingParams::video_bit_rate() const
|
||||
return video_bit_rate_;
|
||||
}
|
||||
|
||||
const int64_t &EncodingParams::video_min_bit_rate() const
|
||||
{
|
||||
return video_min_bit_rate_;
|
||||
}
|
||||
|
||||
const int64_t &EncodingParams::video_max_bit_rate() const
|
||||
{
|
||||
return video_max_bit_rate_;
|
||||
@@ -193,6 +204,7 @@ void EncodingParams::Save(QXmlStreamWriter *writer) const
|
||||
writer->writeTextElement(QStringLiteral("timebase"), video_params_.time_base().toString());
|
||||
writer->writeTextElement(QStringLiteral("divider"), QString::number(video_params_.divider()));
|
||||
writer->writeTextElement(QStringLiteral("bitrate"), QString::number(video_bit_rate_));
|
||||
writer->writeTextElement(QStringLiteral("minbitrate"), QString::number(video_max_bit_rate_));
|
||||
writer->writeTextElement(QStringLiteral("maxbitrate"), QString::number(video_max_bit_rate_));
|
||||
writer->writeTextElement(QStringLiteral("bufsize"), QString::number(video_buffer_size_));
|
||||
writer->writeTextElement(QStringLiteral("threads"), QString::number(video_threads_));
|
||||
|
||||
@@ -48,6 +48,7 @@ public:
|
||||
|
||||
void set_video_option(const QString& key, const QString& value);
|
||||
void set_video_bit_rate(const int64_t& rate);
|
||||
void set_video_min_bit_rate(const int64_t& rate);
|
||||
void set_video_max_bit_rate(const int64_t& rate);
|
||||
void set_video_buffer_size(const int64_t& sz);
|
||||
void set_video_threads(const int& threads);
|
||||
@@ -60,6 +61,7 @@ public:
|
||||
const VideoParams& video_params() const;
|
||||
const QHash<QString, QString>& video_opts() const;
|
||||
const int64_t& video_bit_rate() const;
|
||||
const int64_t& video_min_bit_rate() const;
|
||||
const int64_t& video_max_bit_rate() const;
|
||||
const int64_t& video_buffer_size() const;
|
||||
const int& video_threads() const;
|
||||
@@ -92,6 +94,7 @@ private:
|
||||
VideoParams video_params_;
|
||||
QHash<QString, QString> video_opts_;
|
||||
int64_t video_bit_rate_;
|
||||
int64_t video_min_bit_rate_;
|
||||
int64_t video_max_bit_rate_;
|
||||
int64_t video_buffer_size_;
|
||||
int video_threads_;
|
||||
|
||||
@@ -517,6 +517,10 @@ bool FFmpegEncoder::InitializeStream(AVMediaType type, AVStream** stream_ptr, AV
|
||||
codec_ctx->bit_rate = params().video_bit_rate();
|
||||
}
|
||||
|
||||
if (params().video_min_bit_rate() > 0) {
|
||||
codec_ctx->rc_min_rate = params().video_min_bit_rate();
|
||||
}
|
||||
|
||||
if (params().video_max_bit_rate() > 0) {
|
||||
codec_ctx->rc_max_rate = params().video_max_bit_rate();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user