#11268 closed defect (fixed)
[Regression] "-use_wallclock_as_timestamps" ineffective
| Reported by: | Wes Castro | Owned by: | |
|---|---|---|---|
| Priority: | important | Component: | ffmpeg |
| Version: | git-master | Keywords: | |
| Cc: | Wes Castro, MasterQuestionable | Blocked By: | |
| Blocking: | Reproduced by developer: | yes | |
| Analyzed by developer: | yes |
Description
Summary of the bug:
When piping a raw H264 stream to FFmpeg with -use_wallclock_as_timestamps 1, wallclock times are not used. If the pipe is opened for say 10 seconds, it's expected that the output's duration will be ~10 seconds. Instead it seems to use timing info from the input stream. I didn't test with other types of piped inputs
The issue was introduced in FFmpeg 6.1 and repros on the master branch.
How to reproduce:
ffmpeg -y -f lavfi -i testsrc=duration=1:size=1280x720:rate=30 -f h264 ~/1second.h264 (cat ~/1second.h264; sleep 10; cat ~/1second.h264) | ffmpeg -use_wallclock_as_timestamps 1 -i pipe: -f mp4 ~/test.mp4 -y
Here are the durations reported by FFprobe when using various FFmpeg versions for the second line:
- FFmpeg 6.0: 11.5s
- FFmpeg 6.1: 2.0s
- FFmpeg 7.1: 2.0s
- master branch (08b1bffa49715a9615acc025dfbea252d8409e1f): 2.0s
Change History (3)
comment:1 by , 21 months ago
| Cc: | added |
|---|---|
| Component: | undetermined → ffmpeg |
| Summary: | -use_wallclock_as_timestamps 1 not working with piped input → [Regression] "-use_wallclock_as_timestamps" ineffective |
comment:2 by , 12 months ago
| Analyzed by developer: | set |
|---|---|
| Priority: | normal → important |
| Reproduced by developer: | set |
| Resolution: | → fixed |
| Status: | new → closed |
| Version: | unspecified → git-master |
Should be fixed in 1787fade209b1ecbd4b911c9d77a52bcdec13fa6 for master, and backported to release/7.1, release/7.0 and release/6.1 branches.
comment:3 by , 12 months ago
͏ The peculiar writing for boolean interpretation coercion:
͏ !!(d->f.ctx->iformat->flags & AVFMT_NOTIMESTAMPS)
͏ etc.
͏ .
͏ Probably would be better rewritten as:
͏ [ ↓ Needs "#include <stdbool.h>". ]
͏ (bool) ( d->f.ctx->iformat->flags & AVFMT_NOTIMESTAMPS )
͏ Also "!!" on already boolean ("is_unreliable") would be meaningless.
͏ (even somewhat code obfuscation)
͏ Code style recommendation:
͏ !!is_unreliable
͏ !!( ist->fix_sub_duration )
͏ (bool) is_unreliable
͏ (bool) ( ... )



͏ See also:
͏ https://ffmpeg.org/ffmpeg-formats.html#Format-Options
͏ https://www.google.com/search?hl=en&gl=ca&num=10&q=wallclock+time&nfpr=1
͏ "-use_wallclock_as_timestamps" mostly undocumented...
͏ And search for "wallclock" may give funny results.
͏ I guess it may apply to random formats.
͏ And probably without Pipe.