-
Notifications
You must be signed in to change notification settings - Fork 148
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Video Encode API: Output File has 1000 fps? #15
Comments
The file looks correct to me. I checked all properties by MediaInfo app - advanced mode. The seeking works in VLC and both MSFT players. In general, all skipping or seeking relays solely on I-frames and on PTS which is not part of encoder but belong to container. |
You can see the 1000 FPS being listed if you right-click on the file in Windows Explorer and select Properties, it should be in the Details tab. A properly encoded file (Media SDK) shows 60 frames/second here for a 60/1 setting, not 1000 frames/second. Additionally the output packet stream is near impossible to correctly stream or use: MPC-HC, Windows Media Player, Movies & TV app, DirectShow assisted playback, Intel HW Decoder and NVidia HW Decoder will all fail to play it back correctly if they weren't present at the start of playback. VLC will take a bit to skip to any point, but will play it back "fine" due to it's automatic correction. Twitch and Beam will occasionally refuse the stream, while YouTube and HitBox will accept it just fine - with some additional delay. Uploading the raw mkv file to YouTube will have it be in processing for much longer than it normally should be. It's really hit and miss with what software accepts it and what software flips out. |
Hey, |
Did that now, exactly the same issue. The file is unwatchable in Windows Media Player and Movies & TV, seeking is broken in MPC-HC (flickering) - only VLC and ffmpeg have no issues, probably because these two apply an automatic correction to the stream. Here is an archive with two high quality 1920x1080p60 recordings using settings very similar to the ones listed in the initial issue: AMFIssue15.7z (1.19 GB, contains mkv and mp4 file). I can provide the trace output of a recording if it is needed to track the issue down. Like I said before, in Media SDK 1.1 with the updated binaries it worked fine. |
the link doesn't work |
This one should work, forgot the http:// part: http://cdn.xaymar.com/private/2016/08/AMFIssue15.7z |
OK, these clips fail to play in WMP on Win7 (plays but show black screen) but play with wrong frame order on WMP Win10. The elementary H.264 stream is correct (Vega analyzer). I believe that container (MP4, MKV) must have DTS set to decode order and PTS to present order. Currently AMF encoder returns PTS (->GetPts()) in decode order. The plug-ins sets it to PTS and DTS. The plug-in has code that set present time PTS on surface as a private property L"Frame". You should use it to set DTS in the output packet. please try, |
Applied the changes, no differences in the result: http://cdn.xaymar.com/private/2016/09/2016-09-01%2010-14-34.mp4 Edit: File can't even be fixed using ffmpeg. |
I fixed the file you sent me with FFMPEG just by extracting elementary stream and putting back to the container. The BAT file would look like: |
My command line is this (didn't help much, obviously):
And your command line actually fixes it. The question is now why is it broken in the first place.
Yes, that new file is without B-Frames and with the changes you mentioned. |
This is the code that creates the surface being submitted:
And the code that does the reverse operation, converting from real time back to frames:
|
Yes, I saw this code. I don't see any problem here. I am guessing but there is something between plug-in and libav. When we released AMF 1.3 the hope was that applications will switch the existing code, make it working and then continue development. Now we have two moving targets: AMF and the plug-in. |
That could be because the server is located in Germany and will only serve users in Europa and USA with really high speeds. Can't really fix this for a while, contract runs until the end of the next year. :/
I will. Hopefully I can track down where things go wrong after understanding it. |
Alright, so some change i did seems to have fixed it. I'm not sure what I did, but it works now - so I'm not complaining. mkv still shows 1000 fps in VLC and Properties, but I think that is actually an issue in VLC and windows. If only I knew what fixed it. |
… ::SetFrameRate to only increase timer precision while encoding and apparently fix the wrong order of frames in streams and recorded files. (GPUOpen-LibrariesAndSDKs/AMF#15)
Yes, sounds weird. Shell we close issues: this one and about CPU usage? Mikhail From: Michael Fabian Dirks [mailto:notifications@github.com] Alright, I'm confused now. I changed absolutely nothing, still on driver 16.8.2 and it suddenly works? Huh?! — |
I figured out what happened. I was using the Advanced Interface which was still using the Media SDK order - which didn't work with AMF SDK. I'll close this one now. |
Cool, thanks, Mikhail From: Michael Fabian Dirks [mailto:notifications@github.com] I figured out what happened. I was using the Advanced Interface which was still using the Media SDK order - which didn't work with AMF SDK. I'll close this one now. — |
I am unsure as to why this happens. I know that with Media SDK it did not happen, am I forgetting to set something per frame?
Encoder Parameters (in the order they were assigned):
Submission Parameters (in the order they were assigned):
Here is a file which won't support skipping in decoders that don't automatically fix this: 2016-08-30 08-40-44.zip
The text was updated successfully, but these errors were encountered: