[Ffmpeg-devel] PTS calculation revisited
Colin Ward
lists
Sun Feb 19 12:49:50 CET 2006
Hi all.
I have a PTS calculation system in place whereby it seems to work well
for *most* file formats. It is based on scanning through various example
code such as ffplay.c. However, for some files the results are incorrect.
Take a look at:
http://www.codehq.org/NewMouse.wmv
The output from my media player when playing this is as follows:
AMC Info: CFFMPEG::Open() => File recognised as asf
AMC Info: CFFMPEG::Open() => Audio: wmav2, 32000 Hz, stereo, 32 kb/s
AMC Info: CFFMPEG::Open() => Video: wmv2, yuv420p, 320x240
Input #0, asf, from 'Lah':
Duration: 00:00:16.4, start: 3.100000, bitrate: 355 kb/s
Stream #0.0: Audio: wmav2, 32000 Hz, stereo, 32 kb/s
Stream #0.1, 30.00 fps(r): Video: wmv2, yuv420p, 320x240
As you can see it is wmv2 video and is 30 FPS. When I allocate a video
frame and decode it with avcodec_decode_video() the AVFrame->pts value that
is returned is always zero. So I manually calculate the delta between
frames by using the following code:
double frame_delay =
av_q2d(format_context->streams[video_stream]->codec->time_base);
frame_delay *= 1000; // Convert to milliseconds
However, this always results in frame_delay being 1 (millisecond!) rather
than 33.3333 which it should be in order to be played at 30 FPS.
What am I doing wrong?
--
/-------------------------------------------------------------------\
[Hitman/Code HQ - 6502/z80/68000/604e/80x86/ARM coder - Amiga rulez!]
[VZ-200/VIC-20/MZ-700/c16/c64*10/c128*8/Plus-4/CPC464/CD32/500*2 ]
[600/1000/1200*2/A4000/SNES/N64/Dreamcast/Athlon 1100/AmigaOne ]
[Assembly Language: The most fun you can have with your clothes on! ]
\-------------------------------------------------------------------/
More information about the ffmpeg-devel
mailing list