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-TSedgeCORSchunksraspberry pire-streamingandroidsldpbandwidthmpeg-dashadvertizervlcDRMrules.confadvertisingipv6FastSpringRAMwms panelthumbnailFMLEVATcrossdomainupdatempegtsRecordingplaylistSMILakamaiaespushserversSRTwowzaSSLerrorm3u8Transcodebalanceplaylist_dvrchromecastWowzareportingconfigurationsrtbugdownloadIDS3nimblestreamerdomainperformancecorschunkmpeg-tsraspianpublish controlcodecWMSPanelmobilerepublishingVidillionHttpsIPloopawsnimble 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 urlrulelebanonlocationmanifesthot linkingMP4 not playedspaceServer-sidechangetasks-controlamfstoppedplayoutseekingmaindvr streamconnectivityunique visitoronPlayReadylimuxamazon web servicealiasdata slicesdvr stream twicepay per viewHLS vodAXVVGhot-linkanalyticsapplicationpaywalblockmpeg dashTCOopenssl7brandingtrialMP4microsoft streamerrorsExpression Encoderrocksoftlog traffic statsdebianHLS Playerlive video on demandDASH PlayerbandwithABR DASHprogressive downloadmultiple originsFFmpegnimblesessionidserverlog nimble analysertmp playbackvideojsSnapshotsbitrateprivate networkadaptiveAV1 codecPullJWPLAYERNGINX-RTMPno WMSPanellive videomac osx installsoundHLS Meta Tag editing.streamsattachmentwotermarksourcecrossdomain more then 1 domain4Khelp errorvimeoconcurrent connectionvod no soundload balanceFairplaybuttcdnvsomRemote StorageWowza Agentlive streamnot foundWidevinepullfallbackamazonControl APIAS3TranscoderLive streamingsecuritympeg2tsServer-Side-Task-Controldisk migrationinstall players setup ready to goDVRSettingstwitch larix broadcaster androidAppleDelete recordsstereo to monoscreen capturedrmresourceaes encryptionicecastsubscriptionvideo looplive pull settingsABR HLS Bitratesstarttime duration seekpointrebootrtmp for YouTubemonitorIIS Media Servicsrtmp republishing transcodenimble.confDeep statsapi accessoutrateinterleavingweb playerdvr streamsnimble streamer web server php script pageautomationNimble Streamer APIlivestreamnimble streamer vod hls transmuxingloggingscreen freezecan't registercontent-dispositionNimble CapacityABR DVR problemlearnerheaderactionscript 3Cross DomainLive Switcherinsert logoDVRStreamsNimble Servernot to stealLive Broadcastblock 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 aliasesProgressivestatsincoming streamno soundreloadvp9adSecureRTMP republishrmtpno internetdemandlivestreamintransocderAndroiduser_agentdvr on wmspanelS3 AWSIOSrestartPIDHLS Streamingreportsraspberryavoid refreshthumbnail dvr-thumbnailwmsAuthSignnimble streamer mpeg-ts multiple inputsLoad-BalancingDVR SettingPORTlatencyadjustissuepricingcredentialstranscodeRepublishingdelaympeg4HTML5 playertranscoder nimbleVR-360Failoverhttp servera record21server ipav1 codecNimble connectionsabr fallbackBroadcastLarixABR bitratesPacketizingbuildTeradek Decoderubuntu 18SLDPssaiDVR Setting limitbufferartifactsrtsp push androidcache expiryQuickTimevideo streamingtraffichd25publish streamAArch64buffering videoSO_RCVBUFdissapointmentpay-per-minuteAWSspeedup my videoiOSnimble dvrlivestream bitrateUDP Multicastlogo in streamMPEG2 VideoCSSfastspringmp2 audioprogressivewebhookdvr to liveoutputcloudflareVOD HLS streaming on public IPdomain lockRTMP Republishcontentvideo and audio not matchcloudfrontrulesError when installingdistributionstoragealias route.movanalisyssctestorage space availabledisk3.6.1-1qataritworkscdnvideo.js

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.