Log in

View Full Version : Any way to fix this easily? x264 thru HDMI = Delay


homerpez
12th December 2007, 18:01
I am trying to play back some HD movies which are encoded with x264, and in MKV containers, on my HDTV. This is going DVI to HDMI from my Nvidia 8600 GT card. Audio is doing via optical SPDIF.

The problem I'm having is, there is a palpable delay between the audio and the video on the screen, mostly noticable when watching animated video (where they synch the voice to the picture perfectly, and you notice it's off).

When I encoded my own movies, I found I had to add a delay to the audio stream of about 150ms to make it "look right". For some clips, this seems to work just fine.

What I'm finding now is a problem with clips encoded by others. I find that the audio actually has too MUCH delay... so I need to apply a negative figure to the audio, or, delay the VIDEO to match.

There's two ways I can do this. One is ugly - keep re-muxing EVERY mkv clip I have, until it works right on my machine (we're talking dozens and dozens of movies here)... OR, I can adjust something on my system to have it match the clips.

Trying to apply a negative number to audio delay in ffdshow doesn't work - I've tried. What I'm wondering is, is there a comparable setting for VIDEO delay? Or some other way someone's fixed this problem, short of re-muxing every single clip they have?

One more wrinkle... looks like I'm actually using the Cyberlink H.264 filter for x264 playback... not even FFDSHOW. I have found tons of problems with FFDSHOW and x264 (corruption, hanging) that Cyberlink's filter doesn't have. Does this make things even more impossible? :thanks:

nm
12th December 2007, 19:45
If you have a fast CPU, try playing the video with VLC or MPlayer (the H.264 decoder in them is the same as in ffdshow, and it isn't fully multi-threaded, so HD decoding may be difficult). If VLC or MPlayer plays the video in sync, the problem is probably somewhere in your DirectShow decoding graph.

homerpez
12th December 2007, 20:32
This problem seems to be with this system specifically... on my work machine (right next door), things seem to play fine. Both with Nvidia cards, and both with FFDshow installed.

A movie with perfect sync on the work machine, will have this slight delay on the movie player PC... I guess I'm working off the assumption from something I heard once, that HDMI connections can introduce a slight de-sync to the video... it takes some time for some TV's to process the signal I guess.

Just wondering if there was any way to play with this delay system-wide? Again, the audio delay in ffdshow would be enough, if it would allow me to go backwards (less than 0)... but it doesn't.

MKVmerge DOES let you mux with that applied, but... I don't want to do it dozens and dozens of times... I guess if I must, I must...

moviefan
12th December 2007, 22:20
Have you tried MediaPlayerClassic? I think this player might help you as you can set negative delays for the audio tracks.

nm
12th December 2007, 22:26
A movie with perfect sync on the work machine, will have this slight delay on the movie player PC... I guess I'm working off the assumption from something I heard once, that HDMI connections can introduce a slight de-sync to the video... it takes some time for some TV's to process the signal I guess.
I doubt that such delay would be noticeable, but it is easy to test if there is any. Just move your mouse quickly and see if the cursor is responsive or not.

Just wondering if there was any way to play with this delay system-wide? Again, the audio delay in ffdshow would be enough, if it would allow me to go backwards (less than 0)... but it doesn't.
Any decent video player app should have a way to adjust audio-video sync. Some players (command-line controllable ones) are even scriptable so that the delay can be pre-set to depend on input file format or other properties.