View Full Version : directshowsource shows grey image after 9min. of quicktime DV
theReal
8th August 2008, 22:46
I have this Quicktime DV File which is 13:41 minutes long. It is a short feature I edited on Final Cut Pro 4.5 on a Mac (therefore Quicktime DV).
Quicktime Player or Media Player Classic show the file in reduced quality (looks like 1/2 resolution), that's why I use avisynth directshowsource() to display it in full quality. However after about 9 minutes and 25 seconds the frame freezes for a moment and then goes grey, the audio stops playing as well.
I just installed the new avisynth 2.58 - now I have been able to view the whole file once, but the audio was out of sync. When I opened it again, it became grey again at ~9:25.
Premiere CS3 can open the file and play it in full quality, so it's not crucial for me to use avisynth - it's just that I never experienced such a problem with avisynth and I can't imagine any reason why it would happen.
setarip_old
8th August 2008, 23:14
Hi!Quicktime Player or Media Player Classic show the file in reduced quality (looks like 1/2 resolution)In Quicktime Player, would you please select "Show Movie Inspector" (from the "Window" dropdown menu) and post a screen capture back here...
IanB
8th August 2008, 23:38
Grey frames are the result of a Direct Show filter graph time out, usually after trying to do a seek.DirectShowSource(... , LogFile="Blah.log", LogMask=-1)
...Play the script, stop it when you get grey frames. It will be hugh for a 9 minute session, could be 10's Mb.
I only need the start and end of the log. So you can edit the logfile, save out the first 2000 lines and the last 2000 lines. The 100000's of lines in the middle should be the same pattern over and over.
Make sure you include the first time the "GetCurrentFrame() Returning ** BLANK ** frame" message occurs and a few hundred lines before that in the tail segment.
Zip up the head2000 and tail2000 saved files then submit them here for analysis.
You could try the seekzero=true or seek=false options to avoid problems if your script only need limited random access. The EnsureVBRMP3Sync() and ChangeFPS(Last, Last, True) filters can be used to linearize access to source filters through the cache. EnsureVBRMP3Sync provides a 2Mb audio buffer and ChangeFPS provides a 10 frame window.
JohnnyMalaria
9th August 2008, 00:48
Might be a 2GB limit issue somewhere along the way. 2GB of DV (PAL or NTSC) is 9 mins 56 seconds.
theReal
9th August 2008, 00:59
setarip_old, I added a screenshot of how Quicktime Player displays the file (looks more like 1/4 resolution, I think). However the Movie Inspector window shows everything fine - but this is definitely not what it looks like in full resolution...
IanB, I attached the start and end of log in a rar file.
Thank you both for looking into this!
setarip_old
9th August 2008, 03:16
Did you actually capture this video at 720x576 - or at a lower resolution that you subsequently increased and then converted?
Blue_MiSfit
9th August 2008, 03:50
QuickTime brutalizes DV by default on Windows :)
Here's the fix:
Edit -> Preferences -> Player Preferences
Enable "use high quality video setting when available"
Close and re-open QuickTime player, and your DV should decode properly. I think this nightmare is a leftover from the days when PCs werent powerful to handle decoding multiple streams of full resolution DV in real-time. So, Apple helpfully decided to gimp playback to make things smoother. Of course, being the delightful company they are, Apple has sort of neglected QuickTime on Windows. This is just one of the many horrible reasons NOT to use QuickTime in any way shape or fashion (on Windows anyway)
I will say, it's great on the Mac - no doubt about it. ProRes FTW
Now, if you need to get DV MOVs into AviSynth there are two options that are IMO better than DirectShow:
1) QTSource's QTInput() filter (awesome)
2) MPEG Streamclip - remux to AVI by opening the MOV and doing file -> save as, and changing the file type to AVI. Then you can use Cedocida or any other VFW DV decoder via AVISource()
~MiSfit
IanB
9th August 2008, 06:21
@theReal,
When I ask for the first 2000 lines of a log file I mean 2000 lines starting from the very beginning, not 1695 lines starting a few hundred lines in.
Might be a 2GB limit issue somewhere along the way. 2GB of DV is 9 mins ...The quicktime direct show filters returned End of Stream for both audio and video at 9:27 which is about the 2GB mark for DV in MOV. And I would guess your file is about 2.9GB long.
The grey frames in this case are a minor bug. The internal current frame counter is not updated when the End of Stream condition is true. Seeking forwards instead of reading forwards happens when the requested frame is more than 30 frames after the current frame. Seeking invalidates the last good frame buffer. So after End of Stream you get 30 copies of the last good frame, then grey frames after this.
The intent is to return the last good frame forever. However this is of little consolation to you, as you still would not be able to access beyond the 9:27 point in your clip.
Use QTInput to read MOV files bigger than 2GB. And/or get Apple to fix their Direct Show splitter.
theReal
9th August 2008, 12:36
When I ask for the first 2000 lines of a log file I mean 2000 lines starting from the very beginning, not 1695 lines starting a few hundred lines in.
Ooops, sorry. I was sure I had it from the very beginning - I wasn't exactly sure about the 2000 lines, but they seemed to repeatedly say the same at that point (like you also said). But it wasn't from the beginning? Shame on me...
I didn't know about QTinput() - that sounds like a good idea.
Did you actually capture this video at 720x576 - or at a lower resolution that you subsequently increased and then converted? I was absolutely sure because it was a Firewire-in and Firewire-out edit, I do that almost every day and I had also seen the final output to DVCAM tape. Everything was fine. The file is an export-as-is from FCP - so no changes there either.
I knew Quicktime player must somehow be crippeling DV in the Windows version - just like the MS DV filter is also set to something like 1/2 resolution by default. Only I have been too blind to find the "use high quality if possible" option. Works perfectly as well.
Okay, the problem is more than solved - qtinput() is working fine with avisynth, Quicktime player is showing full quality, and we know again that Apple doesn't care too much about Windows support (duh!) ;)
Thank you everyone!
setarip_old
10th August 2008, 03:55
@theReal
Glad to hear you're problem has been resolved.
Rather than your statement that:we know again that Apple doesn't care too much about Windows support (duh!)I'd suggest that Apple has gone out of the way to make certain that lower capability and/or older PCs can display videos via QuickTime Player without hitches/hangups/delays...
Blue_MiSfit
10th August 2008, 06:28
I might disagree setarip_old.
Show me a PC that can't decode DV without any problems!
As far as I know, DV is the only QuickTIme codec affected by this option.
~MiSfit
setarip_old
10th August 2008, 07:52
@Blue_MiSfit
Hi!
Not that it's really a contentious/significant point but, if I remember correctly, that setting also affects playback of 3ivx encoded videos...
Blue_MiSfit
10th August 2008, 08:49
I'll take your word for it. I've never touched 3ivx :)
At any rate, I think we can safely agree that this setting should be disabled by default. Retaining it for legacy is fine with me, but come ON Apple!
~MiSfit
setarip_old
10th August 2008, 17:47
I think we can safely agree that this setting should be disabled by defaultAbsolutely - that was never in question ;>}
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.