From 4089421e7c24e9a13c0773dc88b2ce1e82483ba4 Mon Sep 17 00:00:00 2001 From: 0xb79orch <0xb79orch@gmail.com> Date: Tue, 31 Oct 2023 13:33:58 +0000 Subject: [PATCH] add fps and duration to GetCodecInfo --- ffmpeg/extras.c | 4 ++++ ffmpeg/extras.h | 2 ++ ffmpeg/ffmpeg.go | 5 +++++ 3 files changed, 11 insertions(+) diff --git a/ffmpeg/extras.c b/ffmpeg/extras.c index 05910be29a..ac30ec31bf 100644 --- a/ffmpeg/extras.c +++ b/ffmpeg/extras.c @@ -176,6 +176,10 @@ int lpms_get_codec_info(char *fname, pcodec_info out) } out->width = ic->streams[vstream]->codecpar->width; out->height = ic->streams[vstream]->codecpar->height; + + AVRational frame_rate = av_guess_frame_rate(ic,ic->streams[vstream],NULL); + out->fps = (frame_rate.num && frame_rate.den ? av_q2d(frame_rate) : 0); + out->dur = (double)ic->streams[vstream]->nb_frames / out->fps; } else { // Indicate failure to extract video codec from given container out->video_codec[0] = 0; diff --git a/ffmpeg/extras.h b/ffmpeg/extras.h index 96f172a1e6..b06b0903ac 100644 --- a/ffmpeg/extras.h +++ b/ffmpeg/extras.h @@ -7,6 +7,8 @@ typedef struct s_codec_info { int pixel_format; int width; int height; + double fps; + double dur; } codec_info, *pcodec_info; int lpms_rtmp2hls(char *listen, char *outf, char *ts_tmpl, char *seg_time, char *seg_start); diff --git a/ffmpeg/ffmpeg.go b/ffmpeg/ffmpeg.go index 6ed3442dd9..8c19cf4227 100755 --- a/ffmpeg/ffmpeg.go +++ b/ffmpeg/ffmpeg.go @@ -244,6 +244,8 @@ type MediaFormatInfo struct { Acodec, Vcodec string PixFormat PixelFormat Width, Height int + FPS float32 + Dur float32 } func (f *MediaFormatInfo) ScaledHeight(width int) int { @@ -276,6 +278,9 @@ func GetCodecInfo(fname string) (CodecStatus, MediaFormatInfo, error) { format.PixFormat = PixelFormat{int(params_c.pixel_format)} format.Width = int(params_c.width) format.Height = int(params_c.height) + format.FPS = float32(params_c.fps) + format.Dur = float32(params_c.dur) + return status, format, nil }