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 streamerABRwmsauthcacheNimbleffmpegAPIapitranscoderdvrVODstreamingfailoverDASHwmspanelrtmpvodudprtsppaywallsubtitlesRTSPDispersayoutubelivelivestreamingmp4MPEG-DASHWMSAuthgeopay-per-viewdashstreamerabrWindowsencryptionUDPwhite labelconfiguser agentsmilvideoFFMPEGmulticastMPEG-TSaudioedgere-streamingCORSraspberry pichunksandroidsldpbandwidthmpeg-dashadvertizerDRMvlcrules.confadvertisingipv6FastSpringRAMwms panelthumbnailFMLEVATcrossdomainupdatehttpsmpegtsRecordingSMILplaylistpushaesakamaiserverssslSRTwowzam3u8TranscodeerrorSSLbalanceplaylist_dvrWowzachromecastconfigurationreportingsrtbugIDdownloadS3corsnimblestreamerdomainperformanceIPmpeg-tschunkraspianawspublish controlcodecmobileWMSPanelrepublishingloopVidillionHttpsnimble webcam html5UIRegistration Issuedirect link32-bit Windowstwitchanalysecache_controlitworkmelive abr support mpeg-dashrtmp abrbeirutWWDCdubaideep statshls to multicast udplogIIS Smooth StreamingcloudmediaCDNHTTPSAbrHot-linking protectionHDSvaddioMPEGTSalertsNDIViewer Statsjwplayer websitewhmcsbaselineAuthentication in HLSnginx rtmp nimbleCentOS v6.4durationAV BridgepricelimitOld logsVaddioscreencastPI3 Ubuntuview timewmspanelapiattaching domainsinterfacesDVRRecordingWMSCONFIG_HOMEmessageloadbalancingrestreamcostmetadatamod_rewriteoriginprofileAxisgbpsID3 tagsanalisyswmsauthsignhighhds streamhls restreamingciscolocalVLCresumenibler.net hotlinkVideo Playertransocding republishingdecodergentoo install server nimbleAliastranscoding using NvidiaPublic IpPaywall Authlost trafficdocumentationofflineconcurrent-connectionsTrancoderfilelebanonlocationmanifestipMP4 not playedspaceicecast urlruleServer-sidetasks-controlhot linkingseekingchangestoppedamfmainplayoutPlayReadylimuxamazon web servicedvr streamconnectivityunique visitordvr stream twiceonAXVVGhot-linkpay per viewaliasdata slicesblockHLS vodmpeg dash7TCOanalyticsapplicationpaywalbrandingopenssltrialMP4microsoft streamerrorsrocksoftlog traffic statsExpression EncoderdebianABR DASHprogressive downloadHLS Playermultiple originsFFmpegnimblesessionidDASH Playerlive video on demandbandwithCSSserverlog nimble analysertmp playbackvideojsbitrateadaptiveAV1 codecprivate networkJWPLAYERNGINX-RTMPSnapshotsno WMSPanellive videoPullmac osx installsourcecrossdomain more then 1 domain4KwotermarksoundHLS Meta Tag editing.streamsattachmenthelp errorvimeoload balanceconcurrent connectionvod no soundbuttcdnvsomFairplayfallbackamazonControl APIlive streamTranscoderLive streamingWidevineRemote StorageWowza Agentsecuritynot foundpullmpeg2tsServer-Side-Task-ControlAS3disk migrationstereo to monoscreen captureinstall players setup ready to goDVRSettingstwitch larix broadcaster androidAppleDelete recordsicecastdrmresourceaes encryptionsubscriptionlive pull settingsABR HLS Bitratesvideo looprtmp for YouTubestarttime duration seekpointrebootdvr streamsmonitornimble streamer web server php script pageautomationNimble Streamer APIlivestreamoutrateIIS Media Servicsrtmp republishing transcodenimble.confDeep statsapi accessNimble CapacityABR DVR probleminterleavingweb playernimble streamer vod hls transmuxingloggingLive SwitcherlearnerCross Domainscreen freezecan't registercontent-dispositionnot to stealLive Broadcastinsert logoheaderactionscript 3block downloadAVCaptureMovieFileOutputNimble ServerbroadcasterUbuntu artful 17.10Transcoder MPEG DASHMPEG DASHadd_chunk failedPost processingfake extensiontranscodingFFMPEG;RTMP;I/O errorstatus:errorHotlinking ProtectionStreaming routeMPEG-Dashlarix broadcasternimble on cloudroutesprerollThumbnailsserver incorrect timepremium featureLIVELivepaymentincoming streamno soundstatsHow to do live stream with multiple audio tracknimble aliasesProgressivereloadRTMP republishrmtpno internetvp9addemandSecurelivestreamintransocderraspberryavoid refreshreportsAndroiduser_agentdvr on wmspanelS3 AWScloudfrontIOSrestartPIDHLS Streamingthumbnail dvr-thumbnailwmsAuthSignnimble streamer mpeg-ts multiple inputsLoad-BalancingcredentialslatencytranscodeRepublishingadjustDVR SettingPORTHTML5 playerdelaympeg4issuepricingtranscoder nimbleBroadcastLarixABR bitratesPacketizingbuildTeradek Decoderubuntu 18SLDPav1 codec21server iphttp servera recordVR-360Failoverstorage space availablediskNimble connectionsabr fallbackDVRStreamsrulesError when installingdissapointmentpay-per-minuteAWSSO_RCVBUFbuffering videolivestream bitrateUDP Multicastlogo in streamMPEG2 VideossaiDVR Setting limitbufferprogressivewebhookdvr to livefastspringmp2 audiocache expiryQuickTimevideo streamingrtsp push androidartifactstraffichd25publish streamAArch64storagealias route.movdistributionoutputVOD HLS streaming on public IPdomain lockRTMP Republishcontentspeedup my videoiOSqataritworkscdnvideo.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.