Bug Report OBS still corrupts MP4 output - deliberate?

outfrost

New Member
Back story: I'm building a ship in Space Engineers, wanted to record a time lapse @ 2 fps and see if it ends up useful for a video.
Well, guess not.

https://gist.github.com/anonymous/639a1e8ab4a85096a48e0c4d49b849d1

Code:
This crash appears to have occured in the 'c:\windows\system32\kernelbase.dll' module.

**** UNHANDLED EXCEPTION: 80000003
Fault address: 000007FEFD103A82 (c:\windows\system32\kernelbase.dll)
OBS version: Open Broadcaster Software v0.659b
Windows version: 6.1 (Build 7601) Service Pack 1
CPU: AMD Phenom(tm) II X4 920 Processor

Crashing thread stack trace:
Stack            EIP              Arg0             Arg1             Arg2             Arg3             Address
00000000002AEED8 000007FEFD103A82 000007FEE76A0C60 0000000000007531 00000000002AEE38 00000000002AEF79 kernelbase.dll!0x7fefd103a82
00000000002AEEE0 000007FEE76714B3 0000000000471600 000000013F2B75A0 0000000000471600 0000000000000002 obsapi.dll!OSTerminateThread+0x33
00000000002AEF10 000000013F1FE9F1 0000000000471600 0000000000471600 000000000000138A 0000000000000000 obs.exe!OBS::Stop+0x1e1
00000000002AEFE0 000000013F1FBB21 00000000002AF110 000000000002046A 0000000000030482 000007FEFA91EEAF obs.exe!OBS::ToggleRecording+0x71
00000000002AF010 000000013F22D110 0000000000000070 FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF 00000000771A9B83 obs.exe!OBS::OBSProc+0xba0
00000000002AF260 00000000771A9C11 0000000000832D10 000000013F22C570 00000000FFFFFED1 000000000002046A user32.dll!0x771a9c11
00000000002AF320 00000000771A6AB8 0000000000030482 0000000000000111 000000000000138A 000007FEFB7B0ADD user32.dll!0x771a6ab8
00000000002AF3B0 00000000771A6BBD 00000000004A6650 0000000000000001 0000000000000000 0000000000000001 user32.dll!0x771a6bbd
00000000002AF400 000007FEFB7B0C73 000000000002046A 0000000000000001 00000000004A6650 0000000000465180 comctl32.dll!0x7fefb7b0c73
00000000002AF440 000007FEFB7B48B2 00000000002AF668 00000000771B8802 000000000000FF00 0000000000030000 comctl32.dll!0x7fefb7b48b2
00000000002AF500 00000000771A9C11 00000000002AF828 000007FEFB7B3BD4 0000000000832D10 000000000084B1D0 user32.dll!0x771a9c11
00000000002AF5C0 00000000771A992A 0000000000000000 00000000004995B0 0000000000000001 000007FEFB7B3BD4 user32.dll!0x771a992a
00000000002AF650 00000000771A67D2 0000000000120447 00000000002AF7E0 0000000000000001 000007FEFD612170 user32.dll!0x771a67d2
00000000002AF6E0 000000013F1ED929 0000000000000000 000000013F1C0000 0000000000000000 0000000000000000 obs.exe!WinMain+0xb79
00000000002AFCA0 000000013F26F2C0 0000000000000000 0000000000000000 0000000000000000 0000000000000000 obs.exe!__tmainCRTStartup+0x148
00000000002AFCE0 00000000770859ED 0000000000000000 0000000000000000 0000000000000000 0000000000000000 kernel32.dll!0x770859ed
00000000002AFD10 00000000772BB371 0000000000000000 0000000000000000 0000000000000000 0000000000000000 ntdll.dll!0x772bb371

Video thread stack trace:
Stack            EIP              Arg0             Arg1             Arg2             Arg3             Address
0000000011AAF5A8 00000000772DD3FA 00000000052115F8 0000000077091A7A 0000000000000002 0000000001BDC583 ntdll.dll!0x772dd3fa
0000000011AAF5B0 000007FEFD0D10AC 000000001DCD6500 00001A91EF08501D 0000000000000000 0000000000000154 kernelbase.dll!0x7fefd0d10ac
0000000011AAF650 000000013F205B9D 0000000000000000 0000000000000000 0000000000000000 0000000000000000 obs.exe!OBS::MainCaptureLoop+0x1c3d
0000000011AAFAE0 000000013F202479 0000000000000000 0000000000000000 0000000000000000 0000000000000000 obs.exe!OBS::MainCaptureThread+0x9
0000000011AAFB10 00000000770859ED 0000000000000000 0000000000000000 0000000000000000 0000000000000000 kernel32.dll!0x770859ed
0000000011AAFB40 00000000772BB371 0000000000000000 0000000000000000 0000000000000000 0000000000000000 ntdll.dll!0x772bb371

Encode thread stack trace:
Stack            EIP              Arg0             Arg1             Arg2             Arg3             Address
000000001193F838 00000000772DD6FA 000000001193F8F8 000007FEE76775A4 00000000028450E0 00000000028450D0 ntdll.dll!0x772dd6fa
000000001193F840 000007FEFD0D1203 0000000000471600 0000000000000000 0000000000000000 0000000000000000 kernelbase.dll!0x7fefd0d1203
000000001193F8E0 000000013F20364A 0000000011AAF9E8 000000001193F9F9 0000000000000000 0000000000000002 obs.exe!OBS::FlushBufferedVideo+0xea
000000001193F920 000000013F203CA3 0000000000000000 0000000000000000 0000000000000AF6 0000000000000000 obs.exe!OBS::EncodeLoop+0x533
000000001193FA60 000000013F202469 0000000000000000 0000000000000000 0000000000000000 0000000000000000 obs.exe!OBS::EncodeThread+0x9
000000001193FA90 00000000770859ED 0000000000000000 0000000000000000 0000000000000000 0000000000000000 kernel32.dll!0x770859ed
000000001193FAC0 00000000772BB371 0000000000000000 0000000000000000 0000000000000000 0000000000000000 ntdll.dll!0x772bb371

A minidump was saved to C:\Users\Outfrost\AppData\Roaming\OBS\crashDumps\OBSCrashDump2016-09-08_1.dmp.
Please include this file when posting a crash report.

List of loaded modules:
Base Address                      Module

When I was done with tonight's building session, I left the game and hit "Stop recording" in OBS. Then I waited patiently for it to process the file - but OBS just crashed. Now that I'm reading the logfile, it appears as if OBS itself terminated its thread that was closing the output file at the time. However, I might be jumping to conclusions here, so I'll leave it for you to analyse.

What I am sure about though, is that you have known about issues with closing MP4 containers for a very, very long time and still there isn't even a warning about what might happen when saving as MP4. Such warning could avert many crises where users lose their footage and takes no effort to implement...

Ultimately, my attempted time lapse video is of null importance. But someone else's recording might be of some.
 

Harold

Active Member
Not deliberate and part of the reasons that
1> Classic is basically discontinued
2> That we don't recommend saving directly to MP4 under ANY circumstances.

If you want to do timelapse, do it in post processing.
 

c3r1c3

Member
Record to FLV or MKV. If you record to MP4 and OBS crashes or is otherwise interrupted, the file will be corrupted and unrecoverable. If you require MP4 files for some other purpose like editing, remux them afterwards. OBS Studio users select File > Remux Recordings. OBS Classic users read http://obsproject.com/forum/resources/how-to-convert-flvs-to-mp4-fast-without-re-encoding.78/

It was set to flv as the default, but morons gonna be morons and they complained enough that MP4 is now the default.

Some type of warning in the interface in Studio would be nice though... and Classic is dead, so don't get your hopes up about any such changes happening in there.
 

outfrost

New Member
1> Classic is basically discontinued
Okay, I'll admit, I haven't been paying attention to updates.
2> That we don't recommend saving directly to MP4 under ANY circumstances.
Then why is there even such an option?
If you want to do timelapse, do it in post processing.
That was precisely the intent. However, I wanted to avoid straining my not-so-powerful machine, hence the low framerate and lowered video bitrate. And of what use is a multi-gigabyte 1080p30 recording sitting on the HDD, if only less than 1/10 of it is going to be used at all?
 

outfrost

New Member
Sorry, I was half-asleep when writing that reply. It is obvious to me that it's better if an option is there (however sloppy it may appear), than if it isn't there at all. However, I stand by my point, that the user should be given a warning about the MP4 container when setting up a recording.

Now then, I will make sure to give OBS Studio a try ;) Hoping for the best, because I really like the ideas behind OBS :)
 

c3r1c3

Member
Just to answer the Question "Why is MP4 an option?", it's because recording in the format can be useful. For example if you're doing a bunch of short records w/ post recording QC, then recording in MP4 can save you time and the remux step.

But other then that it's not a good idea.
 
Top