Skip to content

Commit f7ef5be

Browse files
author
Clement Champetier
committed
VideoProperties: fix getFps if the average framerate is not defined
1 parent 985a661 commit f7ef5be

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

src/AvTranscoder/properties/VideoProperties.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,12 @@ int VideoProperties::getLevel() const
432432

433433
float VideoProperties::getFps() const
434434
{
435-
return av_q2d(_formatContext->streams[_streamIndex]->avg_frame_rate);
435+
if(! _formatContext)
436+
throw std::runtime_error("unknown format context");
437+
438+
if(_formatContext->streams[_streamIndex]->avg_frame_rate.den)
439+
return av_q2d(_formatContext->streams[_streamIndex]->avg_frame_rate);
440+
return av_q2d(av_inv_q(getTimeBase()));
436441
}
437442

438443
float VideoProperties::getDuration() const

src/AvTranscoder/properties/VideoProperties.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ class AvExport VideoProperties : public StreamProperties
6464

6565
/**
6666
* @brief Corresponds to the 'fps' returned by ffprobe.
67+
* @note If the average framerate is not defined in the format, return the tbn.
6768
* fps = the average framerate that has come from the AVStream
6869
* tbn = the time base in AVStream that has come from the AVStream
6970
* tbc = the time base in AVCodecContext for the codec used for a particular stream

0 commit comments

Comments
 (0)