Forum

FPS Transcode 30 to 25 FPS

chris 2018-03-04 21:14:35 UTC in Nimble Streamer

I process a 60 or 30FPS stream coming in via H264 and if I don't specify fps_n and fps_d in my h265 transcode, nimble transcodes to 25FPS.

Is this normal behavior?

Denis Slobodskoy 2018-03-05 03:16:22 UTC 

Frame rate should remain the same, unless you're using deinterlacing (yadif) filter - in this case one frame may be produced from two input frames. Please submit your questions via https://wmspanel.com/help with detailed information of your streams and transcoder scenarios.

Aaron 2018-08-31 16:44:55 UTC 

I'm seeing the same issue and wondering why as well. Incoming video is UDP multicast 1080i 29.97. I'm deinterlacing using yadif and scaling to 1280x720 and my output frame rate appears to be defaulting to PAL i.e. 25fps. I would expect to get 720p29.97 at the output in this case but I'm not.

Denis Slobodskoy 2018-09-03 01:19:31 UTC 

Probably you mean source stream has 59.94 fps, as interlaced stream should have 50/60 rate - otherwise it's progressive stream and you don't need to deinterlace it. Since yadif filter changes frame rate, you should specify output frame rate explicitly.

chris 2018-09-03 03:00:08 UTC 

Use:

fps_n, fps_d
Set output FPS numerator and denominator. It only affects num_units_in_tick and time_scale fields in SPS.

If fps_n=30 and fps_d=1 then it's 30 FPS
If fps_n=60000 and fps_d=2002 then it's 29.97 FPS

martin 2018-09-03 12:21:16 UTC 

given the source fps is 59.94 fps interlaced, and we are using yadif filter, what is the ideal output fps for the best quality ? fps_n=120000, fps_d=2002 ?

Denis Slobodskoy 2018-09-04 01:26:38 UTC 

martin, if you're using yadif with mode=0 (send_frame, default) or 2 (send_frame_nospatial) it will generate one frame from two fields - in other words, FPS will be halved (29.97); otherwise with mode=1 or 3 (send_field / send_field_nospatial) it will remain 59.94.
fps_n and fps_d are numerator and denominator for FPS fraction; for 59.94 it can be 60000/1001 , 120000/2002, 180000/3003 etc. - as fraction will be reduced, it the same value.

Aaron 2018-09-05 18:50:48 UTC 

This is probably starting to get off topic for this thread as it seems to be more of yadif issue than a standards conversion problem. It seems after doing a de-interlace with the yadif filter the frame/field rate information is lost and the output defaults to 25FPS. Personally I would expect if my field rate going into the de-interlace step is 59.94 I would expect my final output to be 29.97 Frames per second without having to specify it in the transcode setup later on. i.e. fps_n = 60000 and fps_d=2002.

Denis Slobodskoy 2018-09-06 00:53:27 UTC 

Aaron,
Unfortunately, FPS information is lost after yadif filter and we can't restore it. You have to specify distinctly FPS in your scenarios.

Post a reply


Post a new question

Categories:

Tags:

nimbleNimble StreamerFAQHLSDVRRTMPnimble streamerhlsABRcachewmsauthNimbleAPItranscoderffmpegdvrapiVODfailoverrtmpSRTstreamingDASHwmspanelvodudprtsppaywallsubtitlessldpDispersaRTSPyoutubelivelivestreamingmp4MPEG-DASHWMSAuthpay-per-viewgeosrtdashstreamervideoedgeabrWindowsencryptionhttpsUDPwhite labelconfiguser agentsmilFFMPEGmulticastsslMPEG-TSaudioCORSre-streamingmpeg-dashchunksraspberry piandroidbandwidthadvertizercorsvlcWMSPanelS3DRMrules.confadvertisingipv6MPEGTSFastSpringRAMwms panelthumbnailFMLEVATcrossdomainupdateRecordingmpegtsplaylistSMILakamaiaespushwowzaserverserrorm3u8TranscodeSSLbalanceplaylist_dvrWowzachromecastconfigurationIDreportingbugperformancedomainnimblestreamerIPloopmobilerepublishingHttpsVidillionpublish controlcodecmpeg-tschunkawsAWSdownloadorigincloudfrontSLDPCDNraspiannimble webcam html5UIroutesbitrateRegistration Issuedirect link32-bit Windowstwitchanalysecache_controlitworkmelive abr support mpeg-dashwmspanelapirtmp abrbeirutWWDCdubaideep statshls to multicast udplogcloudIIS Smooth StreamingmediaHot-linking protectionHTTPSAbrHDSvaddioalertsjwplayer websiteAuthentication in HLSbaselinewhmcsCentOS v6.4pricenginx rtmp nimblelimitOld logsAV BridgescreencastVaddioPI3 Ubuntuview timeattaching domainsinterfacesWMSCONFIG_HOMEmessageDVRRecordingrestreamcostloadbalancingmod_rewritemetadataprofileID3 tagsgbpsAxiswmsauthsignhighhls restreaminghds streamVLClocalciscoresumenibler.net hotlinkdecodertransocding republishingVideo Playergentoo install server nimbleAliaslost trafficPublic Iptranscoding using NvidiaPaywall AuthofflinedocumentationTrancoderconcurrent-connectionslocationlebanonmanifestfileipMP4 not playedspaceicecast urlruleseekingServer-sidehot linkingtasks-controlchangeamfstoppedmainplayoutPlayReadyamazon web servicelimuxdvr stream twiceconnectivitydvr streamunique visitorhot-linkAXVVGonpay per viewblocknvencHLS vodpaywalapplicationanalytics7dvr_archivesmpeg dashbrandingobsTCOtrialopensslMP4microsoft streamerrorsrocksoftlog traffic statsExpression Encoderdebianprogressive downloadABR DASHHLS Playerlive video on demandFFmpegmultiple originsnimblesessionidDASH Playerbandwithserverheaderlog nimble analysertmp playbackvideojsscreen freezecan't registersourceSnapshotsadaptiveAV1 codecprivate networkLarge DVR filesNGINX-RTMPJWPLAYERno WMSPanelPullvideo stoplive videomac osx installcrossdomain more then 1 domain4Kwotermarkattachmenthelp errorvimeovod no soundconcurrent connectionload balanceAWS 3buttvsomcdnlive streamFairplayfallbackamazonControl APIWidevineRemote StorageWowza AgentLive streamingTranscodernot foundsecuritypullmpeg2tsServer-Side-Task-ControlAS3disk migrationscreen capturestereo to monotwitch larix broadcaster androidDVRSettingsinstall players setup ready to goDelete recordsAppledrmicecastresourceaes encryptionsubscriptionABR HLS Bitrateslive pull settingsvideo looprtmp for YouTubestarttime duration seekpointrebootmonitordvr streamsoutratenimble.confrtmp republishing transcodeIIS Media Servicsautomationnimble streamer web server php script pageNimble Streamer APIlivestreamapi accessDeep statsinterleavingweb playerNimble CapacityABR DVR problemnimble streamer vod hls transmuxinglogginglearnerLive SwitcherCross Domaincontent-dispositioninsert logoactionscript 3Live Broadcastnot to stealAVCaptureMovieFileOutputblock downloadNimble ServerRTMP republishPost processingadd_chunk failedfake extensionMPEG DASHUbuntu artful 17.10Transcoder MPEG DASHPIDbroadcasterOSXstatus:errorFFMPEG;RTMP;I/O errortranscodingHotlinking ProtectionStreaming routelarix broadcasterMPEG-Dashnimble on cloudprerollpremium featureThumbnailsserver incorrect timepaymentLiveLIVEstatsHow to do live stream with multiple audio trackreloadProgressivenimble aliasesrmtpno internetdemandprogressiveSecureHLS Streamingraspberryavoid refreshreportsthumbnail dvr-thumbnailLoad-Balancingnimble streamer mpeg-ts multiple inputswmsAuthSignAndroiduser_agentdvr on wmspanelVideo cant be playedS3 AWSlatencyBroadcastLarixadjustlivestream bitratecredentialsdelaympeg4PORTDVR Settingvbv-maxratetranscodeRepublishingtranscoder nimbleFailoverVR-360buildPacketizingABR bitratesabr fallbackNimble connectionscloudflareUsers limitoutputVOD HLS streaming on public IPdomain lockcontentRTMP Republishanalisyssctestorage.movalias routedistributionrtsp push androidartifactscache expiryvideo streamingQuickTimepublish streamtraffichd25AArch64incoming streamno soundInvalid frame headerspeedup my videoiOSDVR Setting limitssaibufferGopHTML5 playergoogle cloud storagepricingissuecpuCSSav1 codecNimbleStreamervideo.jsitworkscdnqatartransocderlivestreaminViewer StatsNDIstorage space availabledisk3.6.1-1dissapointmentpay-per-minuteSO_RCVBUFbuffering videoadvp9soundHLS Meta Tag editing.streamsnimble dvrdurationBandwidthgpudata slicesaliasplayer sldpmp2 audiofastspringwebhookdvr to livePaywallvideo and audio not matchhow-toError when installingrulesDVRStreamsaws amazonhelpFallbackrestartIOSubuntu 18Teradek DecoderMPEG2 Videologo in streamUDP MulticastMax connectiona recordwirecasthttp serverSSL requestserver ip21

This website or its third-party tools use cookies, which are necessary to its functioning and required to achieve the purposes illustrated in the Privacy Policy. If you want to know more or withdraw your consent to all or some of the cookies, please refer to the Privacy Policy.
By closing this banner, scrolling this page, clicking a link or continuing to browse otherwise, you agree to the use of cookies.