[FFmpeg-user] Let ffmpeg pick correct fps from stdin

Jean-Marie Baran jean-marie.baran at ama.bzh
Fri Jan 15 16:33:51 CET 2016



On 15/01/2016 10:52, Moritz Barsnick wrote:
> On Fri, Jan 15, 2016 at 10:11:09 +0100, Moritz Barsnick wrote:
>> Would it be worth an attempt to add an option to ffmpeg to take the
>> timestamps from "arrival time" (time of day)? I'll have a look at this
>> - sometime.
> Oh, sorry, that option does exist: "-use_wallclock_as_timestamps".
>
> If I record my incoming MJPEG multipart/alternative HTTP stream with
> "-re -use_wallclock_as_timestamps 1", the timestamps look okay, though
> astonishingly quite strictly aligned to full seconds. (My stream can
> vary between 1 fps and 5 fps.)
>
>
Using "-re -use_wallclock_as_timestamps 1" seems right, but sadly it 
trigger some «Non-monotonous DTS» warning message, and the resulting 
video now plays too slowly. But this time the fps recorded is 16.52 fps 
which is better than the 25 of before :

ffmpeg -y -thread_queue_size 1024 -f s16le -ar -i 
tcp://localhost:5419?listen=1 -re -use_wallclock_as_timestamps 1 -f 
mjpeg -thread_queue_size 1024 -i -c:v libx264 -preset veryfast -crf 28 
-vsync 0 -strict -2 -acodec aac -threads 0 -ar 44100 file.mp4

WARNING: linker: libx264.so has text relocations. This is wasting memory 
and prevents security hardening. Please fix.
ffmpeg version 2.8.3 Copyright (c) 2000-2015 the FFmpeg developers
   built with gcc 4.8 (GCC)
   configuration: --arch=arm --target-os=android --enable-cross-compile
   libavutil      54. 31.100 / 54. 31.100
   libavcodec     56. 60.100 / 56. 60.100
   libavformat    56. 40.101 / 56. 40.101
   libavfilter     5. 40.101 /  5. 40.101
   libavresample   2.  1.  0 /  2.  1.  0
   libswscale      3.  1.101 /  3.  1.101
   libswresample   1.  2.101 /  1.  2.101
   libpostproc    53.  3.100 / 53.  3.100
Guessed Channel Layout for  Input Stream #0.0 : mono
Input #0, s16le, from 'tcp://localhost:32112?listen=1':
   Duration: N/A, bitrate: 705 kb/s
     Stream #0:0: Audio: pcm_s16le, 44100 Hz, 1 channels, s16, 705 kb/s
[mjpeg @ 0xb6427c00] Changeing bps to 8
Input #1, mjpeg, from 'pipe:':
   Duration: N/A, start: 1452870978.041862, bitrate: N/A
     Stream #1:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 
720x480 [SAR 1:1 DAR 3:2], 25 tbr, 1200k tbn, 25 tbc
No pixel format specified, yuvj420p for H.264 encoding chosen.
Use -pix_fmt yuv420p for compatibility with outdated media players.
[libx264 @ 0xb6428800] using SAR=1/1
[libx264 @ 0xb6428800] using cpu capabilities: ARMv6 NEON
[libx264 @ 0xb6428800] profile High, level 3.0
[libx264 @ 0xb6428800] 264 - core 148 - H.264/MPEG-4 AVC codec - 
Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: 
cabac=1 ref=1 deblock=1:-1:-1 analyse=0x3:0x113 me=hex subme=2 psy=1 
psy_rd=1.00:0.15 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=1 
cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=6 
lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 
bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 
b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=250 
keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=10 rc=crf 
mbtree=1 crf=28.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 
aq=1:1.00
Output #0, mp4, to '/storage/emulated/0/DCIM/AMA/NP/record/./test.mp4':
   Metadata:
     encoder         : Lavf56.40.101
     Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), 
yuvj420p(pc), 720x480 [SAR 1:1 DAR 3:2], q=-1--1, 25 fps, 12800 tbn, 25 tbc
     Metadata:
       encoder         : Lavc56.60.100 libx264
     Stream #0:1: Audio: aac ([64][0][0][0] / 0x0040), 44100 Hz, mono, 
fltp, 128 kb/s
     Metadata:
       encoder         : Lavc56.60.100 aac
Stream mapping:
   Stream #1:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
   Stream #0:0 -> #0:1 (pcm_s16le (native) -> aac (native))
[libx264 @ 0xb6428800] non-strictly-monotonic PTS
     Last message repeated 1 times
frame=    8 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A
[libx264 @ 0xb6428800] non-strictly-monotonic PTS
     Last message repeated 1 times
frame=   16 fps= 15 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A
[libx264 @ 0xb6428800] non-strictly-monotonic PTS
frame=   24 fps= 15 q=32.0 size=       0kB time=00:00:00.12 bitrate=   
3.2kbits/s
[mp4 @ 0xb643d600] Non-monotonous DTS in output stream 0:0; previous: 
2560, current: 2560; changing to 2561. This may result in incorrect 
timestamps in the output file.
[libx264 @ 0xb6428800] non-strictly-monotonic PTS
     Last message repeated 1 times
[mp4 @ 0xb643d600] Non-monotonous DTS in output stream 0:0; previous: 
6656, current: 6656; changing to 6657. This may result in incorrect 
timestamps in the output file.
[libx264 @ 0xb6428800] non-strictly-monotonic PTS q=30.0 size= 43kB 
time=00:00:00.68 bitrate= 521.5kbits/s
     Last message repeated 1 times
[mp4 @ 0xb643d600] Non-monotonous DTS in output stream 0:0; previous: 
11776, current: 11776; changing to 11777. This may result in incorrect 
timestamps in the output file.
[libx264 @ 0xb6428800] non-strictly-monotonic PTS
[mp4 @ 0xb643d600] Non-monotonous DTS in output stream 0:0; previous: 
13824, current: 13824; changing to 13825. This may result in incorrect 
timestamps in the output file.
frame=   38 fps= 15 q=38.0 size=      71kB time=00:00:01.12 bitrate= 
521.6kbits/s
[libx264 @ 0xb6428800] non-strictly-monotonic PTS
[mp4 @ 0xb643d600] Non-monotonous DTS in output stream 0:0; previous: 
18944, current: 18944; changing to 18945. This may result in incorrect 
timestamps in the output file.
frame=   45 fps= 14 q=33.0 size=      88kB time=00:00:01.60 bitrate= 
451.9kbits/s
[mp4 @ 0xb643d600] Non-monotonous DTS in output stream 0:0; previous: 
24064, current: 24064; changing to 24065. This may result in incorrect 
timestamps in the output file.
[libx264 @ 0xb6428800] non-strictly-monotonic PTS
     Last message repeated 1 times
[mp4 @ 0xb643d600] Non-monotonous DTS in output stream 0:0; previous: 
26112, current: 26112; changing to 26113. This may result in incorrect 
timestamps in the output file.
[libx264 @ 0xb6428800] non-strictly-monotonic PTS q=30.0 size= 114kB 
time=00:00:02.16 bitrate= 433.7kbits/s
[mp4 @ 0xb643d600] Non-monotonous DTS in output stream 0:0; previous: 
28672, current: 28672; changing to 28673. This may result in incorrect 
timestamps in the output file.
[libx264 @ 0xb6428800] non-strictly-monotonic PTS
[mp4 @ 0xb643d600] Non-monotonous DTS in output stream 0:0; previous: 
28673, current: 28672; changing to 28674. This may result in incorrect 
timestamps in the output file.
[libx264 @ 0xb6428800] non-strictly-monotonic PTS
[mp4 @ 0xb643d600] Non-monotonous DTS in output stream 0:0; previous: 
33792, current: 33792; changing to 33793. This may result in incorrect 
timestamps in the output file.
...

Any ideas what could cause this ? I'm not familiar with DTS/PTS or what 
«Non-monotonous DTS» may mean.

Also, what is

-- 
*Jean-Marie Baran*



More information about the ffmpeg-user mailing list