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 StreamerFAQHLSDVRRTMPhlsnimble streamerABRwmsauthcacheNimbleffmpegdvrAPIapitranscoderVODstreamingfailoverDASHwmspanelrtmpvodudprtsppaywallsubtitlesRTSPDispersayoutubelivelivestreamingmp4MPEG-DASHWMSAuthpay-per-viewgeodashvideostreamerabrWindowsencryptionUDPhttpswhite labeluser agentconfigsmilFFMPEGmulticastsslaudioMPEG-TSedgeCORSre-streamingchunksraspberry piandroidsldpbandwidthmpeg-dashadvertizercorsvlcDRMrules.confadvertisingipv6FastSpringRAMwms panelthumbnailFMLEVATcrossdomainupdatempegtsRecordingplaylistSMILakamaiaespushserversSRTwowzaSSLerrorm3u8Transcodebalanceplaylist_dvrWowzachromecastconfigurationreportingsrtbugdownloadIDS3nimblestreamerdomainperformancempeg-tsraspianpublish controlcodecWMSPanelmobilerepublishingVidillionHttpsIPloopawschunknimble webcam html5UIRegistration Issuedirect link32-bit Windowstwitchanalysecache_controlitworkmelive abr support mpeg-dashrtmp abrbeirutWWDCdubaideep statshls to multicast udplogIIS Smooth StreamingcloudmediaCDNHTTPSAbrHot-linking protectionHDSvaddioMPEGTSalertsNDIViewer Statsjwplayer websitewhmcsbaselineAuthentication in HLSCentOS v6.4nginx rtmp nimblepricedurationAV BridgelimitOld logsscreencastVaddioPI3 Ubuntuview timeattaching domainswmspanelapiinterfacesWMSCONFIG_HOMEmessageDVRRecordingrestreamcostloadbalancingoriginmetadatamod_rewriteprofileAxisgbpsID3 tagswmsauthsignhighhls restreaminghds streamVLCciscolocalresumenibler.net hotlinkVideo Playertransocding republishingdecodergentoo install server nimbleAliaslost traffictranscoding using NvidiaPublic IpPaywall Authdocumentationofflineconcurrent-connectionsTrancoderfileipicecast urllebanonlocationmanifestruleMP4 not playedspacehot linkingServer-sidechangetasks-controlamfseekingstoppedplayoutmainPlayReadylimuxamazon web servicedvr streamconnectivityunique visitorondvr stream twicealiasdata slicespay per viewHLS vodAXVVGhot-linkblockanalyticsapplicationpaywalmpeg dashTCO7opensslbrandingtrialMP4microsoft streamerrorsrocksoftlog traffic statsExpression EncoderdebianHLS Playerlive video on demandABR DASHprogressive downloadDASH Playerbandwithmultiple originsFFmpegnimblesessionidserverlog nimble analysertmp playbackvideojsbitrateSnapshotsprivate networkadaptiveAV1 codecJWPLAYERNGINX-RTMPPullno WMSPanellive videomac osx installsoundHLS Meta Tag editing.streamsattachmentsourcecrossdomain more then 1 domain4Kwotermarkhelp errorvimeoconcurrent connectionvod no soundload balancebuttFairplaycdnvsomRemote StorageWowza Agentlive streamnot foundfallbackamazonControl APIWidevinepullTranscoderLive streamingAS3securitympeg2tsServer-Side-Task-Controldisk migrationinstall players setup ready to goDVRSettingstwitch larix broadcaster androidAppleDelete recordsstereo to monoscreen capturedrmicecastresourceaes encryptionsubscriptionvideo looplive pull settingsABR HLS Bitratesstarttime duration seekpointrebootrtmp for YouTubemonitorIIS Media Servicsrtmp republishing transcodenimble.confDeep statsapi accessdvr streamsoutrateinterleavingweb playernimble streamer web server php script pageautomationNimble Streamer APIlivestreamNimble CapacityABR DVR problemnimble streamer vod hls transmuxingloggingscreen freezecan't registercontent-dispositionlearnerheaderactionscript 3Live SwitcherCross Domaininsert logonot to stealLive BroadcastDVRStreamsNimble Serverblock downloadAVCaptureMovieFileOutputUbuntu artful 17.10Transcoder MPEG DASHMPEG DASHadd_chunk failedPost processingfake extensionbroadcastertranscodingFFMPEG;RTMP;I/O errorstatus:errorHotlinking ProtectionStreaming routeMPEG-Dashlarix broadcasterThumbnailsserver incorrect timepremium featureLIVELivenimble on cloudroutesprerollpaymentHow to do live stream with multiple audio tracknimble aliasesProgressiveincoming streamno soundstatsreloadvp9adRTMP republishrmtpno internetSecuredemandlivestreamintransocderAndroiduser_agentdvr on wmspanelS3 AWSreportsraspberryavoid refreshIOSrestartPIDHLS Streamingthumbnail dvr-thumbnailwmsAuthSignnimble streamer mpeg-ts multiple inputsLoad-BalancingDVR SettingPORTlatencycredentialsadjusttranscodeRepublishingHTML5 playerdelaympeg4transcoder nimbleVR-360Failoverhttp servera record21server ipBroadcastLarixbuildABR bitratesPacketizingav1 codecNimble connectionsabr fallbackTeradek Decoderubuntu 18SLDPssaiDVR Setting limitbufferartifactsrtsp push androidcache expiryQuickTimevideo streamingtraffichd25publish streamAArch64buffering videoSO_RCVBUFdissapointmentpay-per-minuteAWSiOSspeedup my videolivestream bitrateUDP Multicastlogo in streamMPEG2 Videonimble dvrfastspringmp2 audioprogressivewebhookdvr to liveCSSdistributionstoragealias route.movoutputcloudflareVOD HLS streaming on public IPdomain lockRTMP RepublishcontentrulesError when installingvideo and audio not matchcloudfrontanalisyssctestorage space availabledisk3.6.1-1qataritworkscdnvideo.jsgoogle cloud storageissuepricing

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.