Copy link to clipboard
Copied
Hi,
Following are the details of the Stream:
Stream: Video, encoded in H.264, H264Profile.BASELINE, H264Level.LEVEL_3, recording the f4v.
I try to upgrade/degrade the bitrate(only) of the stream, using setQuality(br, q) method with respect to the change in bandwidth of the publisher.
Issue: With use of setQuality, after a few bitrate changes, it gives Stream.Record.NoAccess error and stops the recording of the stream at that point. Noticably the live stream keeps on running well but the part after Stream.Record.NoAccess does not get recorded.
Normally the stream records fine and completely, there are no issues of readOnly folder/file in my case. I have tried the issue on all FMS 3.5 to 5.0 and it occurs.
Can anybody provide a fix as i have not been able to find help on the web other than these:
1) help docs
NetStream.Record.NoAccess | error | The client tried to record a stream that is still playing. Or the client tried to record (overwrite) a stream that exists on the server with read-only status. |
2) http://forums.adobe.com/message/3928900
Thanks.
Sahil.
Copy link to clipboard
Copied
Are you solved the problem? Can anyone help, we have the same issue.
Copy link to clipboard
Copied
Acknowledged...I think we will try to see if we can reproduce this in-house/
Copy link to clipboard
Copied
I guess we know what the problem is.
AMS allows max 10 stsd entries in an MP4 while recording which means you cannot change properties such as bitrate/ frame rate more than that count.
This is what is happening when using the setQuality() call on publisher.
My suggestion would be to create separate MP4 files since we know that it cannot record more than 10 entries.
Another and better alternative is to use the bandwidth detection feature of AMS and stick to one quality settings rather than changing it on the fly n number of times.
bandwidth detection is documented here Adobe Flash Media Server 4.5 * Detecting bandwidth
Copy link to clipboard
Copied
Where does that limitation comes from? First time I hear about it! So you are saying that when we are publishing / recording a mp4 (f4v as well?) file, we mustn't use setQuality more that 10 times? By the way, what does "stsd" stands for?
Also, is there other manipulations like this that can have the same effect? For instance, attaching or detaching a microphone from the stream while the video is still publishing? Because we had random problems with the recording of h264 streams and we still are unable to find what is the source of the problem...
Thanks!
Copy link to clipboard
Copied
stsd stands for sample descriptor entries in an MP4 file. The limitation is on AMS end. thing is you need to allocate certain memory for these entries at start of recording and hence you need to be aware of the total entries you want to support.
10 seems like a good number and had worked well for customers. Ideally people setup MBR streams rather than changing the quality parameters.
bitrate, frames, video size are few parameters that i am aware can lead to multiple stsd entries.
Copy link to clipboard
Copied
Thanks for quick reply! Do you have any documentation on this? Say I would like to allocate more memory in order to be able to support more stsd, how do I proceed and how many more entries will I be able to make? Our problem is that we use this feature in a meeting that can last up to many hours. If the stream is published during that period, it is possible that the publisher stops the audio or video at times so it's a bit unpredictable. We would like to know more about those concerns and thus be able to come up with a solution.
So just to be sure, if I ran pasted in the max stsd, I would get an NetStream.Record.NoAccess, the record would stop and I have no more info on that?
Copy link to clipboard
Copied
In case the stsd entries are full you will see something like "no Space left in the stsd box" in the error logs. I would suggest to avoid this error by determining the bandwidth and then sticking to that for rest of the meeting rather than changing the quality throughout the duration of the meeting.
And for the problem where the publisher stops the audio or video, i dont think that would lead to the above error. I guess you are mixing two different problems here.
Copy link to clipboard
Copied
Ok but then, why could that be your answer? The problem is stated as "Stream records for sometime and then gives Stream.Record.NoAccess"?! So basically, you're saying that the stsd has nothing to do with that error? Don't mean to be rude, just to get an answer to this problem!! Thanks!
Copy link to clipboard
Copied
There could be multiple reasons for the record no access error and stsd entries full is one of them as reported and referenced in the original question.
From the referenced thread,
2011-09-21 | 11:27:59 | 726 | (e)2611178 | Error from libmp4.so: No Space left in the stsd box. - | |
2011-09-21 | 11:27:59 | 726 | (e)2611423 | Failed to record vc_live/upload/recorded/ab91a04be0d3669bdf80d645b6413362db69a09f.mp4 (Unknown Error). | - |
Copy link to clipboard
Copied
stsd entries in mp4 file in AMS can be modified by chaning config in server.xml vide <Mp4><Recording><MaxDataSampleDescriptions>...the current default is 10 and can be changed to any suitable value.