Hello,

I've came across to the same problem.
My RTSP camera is sending it's H264 stream as 420029.
Also using Janus as RTSP->WebRTC.

However if I rewrite the profile-level-id to 42e01f, FF is receiving the 
stream, however it can not decode it.
I've tried everything so far.
However, for example: https://youtube.com/html5 shows me that this browser is 
capable of H264.

I would need a deeper debug level to this problem.
How can I make the stream visible?

I'm using FF v59.0.2 on Ubuntu 16.04LTS.

Any help is greatly appreciated.
Thanks Folks!

On Tuesday, January 31, 2017 at 7:26:14 PM UTC+1, Randell Jesup wrote:
> On 1/31/2017 12:56 PM, an...@huge.geek.nz wrote:
> > On Monday, January 30, 2017 at 2:35:54 AM UTC+1, Randell Jesup wrote:
> >> The WG requirement is for Constrained Baseline, not Baseline, which is
> >> what we offer/accept.  It's the 'e0' portion that causes the problem;
> >> see RFC 6184 for details on what's compatible for offer/answer.  Yes,
> >> the rules are annoying if you want to support talking to a client that
> >> doesn't support the same profile you prefer.   Officially, to support
> >> ConstrainedBaseline and Baseline you need to offer both as separate
> >> payload types (with independent FMTPs).
> >>
> >> This is this same thing
> >> (https://groups.google.com/forum/#!searchin/mozilla.dev.media/4200xx%7Csort:relevance/mozilla.dev.media/9_zkibr_Bus/8LioRaUODAAJ)
> >> that was noted in the Janus list you referenced.  And as you mention,
> >> you can 'cheat' and claim it's constrained baseline even though it's
> >> not, and in this case it will work.  (Not every such edit will --- if
> >> you tell it the profile is baseline when it's high, it will likely
> >> fail.)  And how well these edits work depend on details of
> >> implementation of the decoders.
> >>
> >> -- 
> >> Randell Jesup, mozilla
> > Thank you Randell,
> >
> > If I understand you correctly, then FF checks the profile-level-id and 
> > checks the constraint bits. If it doesn't find constrained baseline then it 
> > simply rejects it (according to the RFC), even though the underlying 
> > decoder would be able to play it.
> >
> > In my scenario, it's an RTSP camera with no options for altering the 
> > encoding options. And then Janus doesn't want to "know" about media or 
> > codecs, it just maps it from RTSP to RTP.
> >
> > There's only two ways to be "compliant" then:
> > 1) To transcode the stream to constrained baseline (a heavy option ..)
> > 2) During SDP signalling to offer both CBP and BP (not sure how that is 
> > done, do you offer two SDPs?)
> >
> > For 2), how would Firefox behave? Would it decide it could in fact accept 
> > the BP content, and because standards were followed (two offers), it would 
> > work rather than reject it?
> 
> You offer two payload types: one with profile-level-id=42e0XX, one with 
> profile-level-id=4200xx.  Firefox will only accept the 42e0xx. However, 
> in this case, I really doubt there's any bitstream difference at the 
> sender - it's just going to send a stream, and in reality it likely 
> conforms to Constrained baseline:
> 
>     "Baseline Profile: This profile includes all features that are
>     supported in the Constrained Baseline Profile, plus three additional
>     features that can be used for loss robustness (or for other purposes
>     such as low-delay multi-point video stream compositing). The
>     importance of this profile has faded somewhat since the definition
>     of the Constrained Baseline Profile in 2009. All Constrained
>     Baseline Profile bitstreams are also considered to be Baseline
>     Profile bitstreams, as these two profiles share the same profile
>     identifier code value."
> 
> So if it doesn't use those features, it's compatible with Constrained 
> Baseline.  And the OpenH264 decoder may well accept those features even 
> if configured for Constrained Baseline.
> 
> Note that IDRs will likely be preceded by SPS/PPS NAL units, and those 
> will specify 4200xx instead of 40e0xx, but likely that doesn't matter 
> either.
> 
> So, if you *always* convert from 4200xx to 42e0xx it will likely work 
> with both chrome and firefox (and edge).
> 
> You can also offer 4200xx, and if it's rejected renegotiate, offering 
> 42e0xx.  That will slightly slow connect time.
> 
> > I guess that, the "proper" solution is to encode in the right format in the 
> > first place if you intend to use webrtc/rtp transport.
> 
> Sure!
> 
> -- 
> Randell Jesup, Mozilla

_______________________________________________
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media

Reply via email to