Opened 5 years ago

Closed 5 years ago

Last modified 4 years ago

#3956 closed defect (needs_more_info)

capturing with h264 codec with built-in hw c920 produce intermittent pause

Reported by: gtzen Owned by:
Priority: normal Component: undetermined
Version: unspecified Keywords: h264 v4l2
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

While using a logitech c920 build-in hw codec to capture the video from webcam, it produces slight random intermittent pause in the captured video (that makes look like frames jump from one to another)

How to reproduce:

% ffmpeg -report -s 1920x1080 -f v4l2 -vcodec h264 -i /dev/video0 -copyinkf -vcodec copy test_directly_processed_by_c920-another-attempt1.mp4
%cat ffmpeg-20140917-084550.log
ffmpeg started on 2014-09-17 at 08:45:50
Report written to "ffmpeg-20140917-084550.log"
Command line:
ffmpeg -report -s 1920x1080 -f v4l2 -vcodec h264 -i /dev/video0 -vcodec copy test_directly_processed_by_c920-another-attempt1.mp4
ffmpeg version 2.4 Copyright (c) 2000-2014 the FFmpeg developers
  built on Sep 15 2014 01:02:34 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
  configuration: --extra-libs=-ldl --prefix=/opt/ffmpeg --enable-avresample --disable-debug --enable-nonfree --enable-gpl --enable-version3 --enable-x11grab --enable-libpulse --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-decoder=amrwb --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvorbis --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libspeex --enable-libass --enable-avisynth --enable-libsoxr
  libavutil      54.  7.100 / 54.  7.100
  libavcodec     56.  1.100 / 56.  1.100
  libavformat    56.  4.101 / 56.  4.101
  libavdevice    56.  0.100 / 56.  0.100
  libavfilter     5.  1.100 /  5.  1.100
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  0.100 /  3.  0.100
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  0.100 / 53.  0.100
Splitting the commandline.
Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
Reading option '-s' ... matched as option 's' (set frame size (WxH or abbreviation)) with argument '1920x1080'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'v4l2'.
Reading option '-vcodec' ... matched as option 'vcodec' (force video codec ('copy' to copy stream)) with argument 'h264'.
Reading option '-i' ... matched as input file with argument '/dev/video0'.
Reading option '-vcodec' ... matched as option 'vcodec' (force video codec ('copy' to copy stream)) with argument 'copy'.
Reading option 'test_directly_processed_by_c920-another-attempt1.mp4' ... matched as output file.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option report (generate a report) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input file /dev/video0.
Applying option s (set frame size (WxH or abbreviation)) with argument 1920x1080.
Applying option f (force format) with argument v4l2.
Applying option vcodec (force video codec ('copy' to copy stream)) with argument h264.
Successfully parsed a group of options.
Opening an input file: /dev/video0.
[video4linux2,v4l2 @ 0x305a4e0] fd:4 capabilities:84000001
[video4linux2,v4l2 @ 0x305a4e0] Current input_channel: 0, input_name: Camera 1, input_std: 0
[h264 @ 0x305ae00] Current profile doesn't provide more RBSP data in PPS, skipping
[video4linux2,v4l2 @ 0x305a4e0] All info found
Input #0, video4linux2,v4l2, from '/dev/video0':
  Duration: N/A, start: 5317.791377, bitrate: N/A
    Stream #0:0, 8, 1/1000000: Video: h264 (Constrained Baseline), yuvj420p(pc), 1920x1080 [SAR 1:1 DAR 16:9], -4 kb/s, 24 fps, 24 tbr, 1000k tbn, 60 tbc
Successfully opened the file.
Parsing a group of options: output file test_directly_processed_by_c920-another-attempt1.mp4.
Applying option vcodec (force video codec ('copy' to copy stream)) with argument copy.
Successfully parsed a group of options.
Opening an output file: test_directly_processed_by_c920-another-attempt1.mp4.
Successfully opened the file.
Output #0, mp4, to 'test_directly_processed_by_c920-another-attempt1.mp4':
  Metadata:
    encoder         : Lavf56.4.101
    Stream #0:0, 0, 1/1000000: Video: h264 ([33][0][0][0] / 0x0021), yuvj420p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, -4 kb/s, 24 fps, 1000k tbn, 1000k tbc
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
[mp4 @ 0x3115fe0] Non-monotonous DTS in output stream 0:0; previous: 0, current: -214627; changing to 1. This may result in incorrect timestamps in the output file.
[mp4 @ 0x3115fe0] Non-monotonous DTS in output stream 0:0; previous: 1, current: -174633; changing to 2. This may result in incorrect timestamps in the output file.
[mp4 @ 0x3115fe0] Non-monotonous DTS in output stream 0:0; previous: 2, current: -130641; changing to 3. This may result in incorrect timestamps in the output file.
[mp4 @ 0x3115fe0] Non-monotonous DTS in output stream 0:0; previous: 3, current: -90647; changing to 4. This may result in incorrect timestamps in the output file.
[mp4 @ 0x3115fe0] Non-monotonous DTS in output stream 0:0; previous: 4, current: -50653; changing to 5. This may result in incorrect timestamps in the output file.
[mp4 @ 0x3115fe0] Non-monotonous DTS in output stream 0:0; previous: 5, current: -6660; changing to 6. This may result in incorrect timestamps in the output file.
[mp4 @ 0x3115fe0] Non-monotonous DTS in output stream 0:0; previous: 449296, current: 310695; changing to 449297. This may result in incorrect timestamps in the output file.
[mp4 @ 0x3115fe0] Non-monotonous DTS in output stream 0:0; previous: 449297, current: 347879; changing to 449298. This may result in incorrect timestamps in the output file.
frame=   20 fps=0.0 q=-1.0 size=     349kB time=00:00:00.44 bitrate=6370.4kbits/s    
[mp4 @ 0x3115fe0] Non-monotonous DTS in output stream 0:0; previous: 449298, current: 384674; changing to 449299. This may result in incorrect timestamps in the output file.
[mp4 @ 0x3115fe0] Non-monotonous DTS in output stream 0:0; previous: 449299, current: 421670; changing to 449300. This may result in incorrect timestamps in the output file.
frame=   33 fps= 32 q=-1.0 size=     542kB time=00:00:01.07 bitrate=4143.2kbits/s    
frame=   48 fps= 31 q=-1.0 size=     740kB time=00:00:01.48 bitrate=4072.7kbits/s    
frame=   63 fps= 31 q=-1.0 size=     934kB time=00:00:01.94 bitrate=3926.7kbits/s    
frame=   79 fps= 31 q=-1.0 size=    1137kB time=00:00:02.42 bitrate=3847.8kbits/s    
frame=   94 fps= 31 q=-1.0 size=    1323kB time=00:00:03.14 bitrate=3442.6kbits/s    
frame=  109 fps= 31 q=-1.0 size=    1497kB time=00:00:03.55 bitrate=3449.2kbits/s    
frame=  124 fps= 30 q=-1.0 size=    1683kB time=00:00:04.00 bitrate=3443.3kbits/s    
frame=  140 fps= 31 q=-1.0 size=    1878kB time=00:00:04.47 bitrate=3435.2kbits/s    
frame=  155 fps= 30 q=-1.0 size=    2071kB time=00:00:04.92 bitrate=3448.2kbits/s    
frame=  170 fps= 30 q=-1.0 size=    2259kB time=00:00:05.62 bitrate=3287.6kbits/s    
frame=  185 fps= 30 q=-1.0 size=    2440kB time=00:00:06.06 bitrate=3296.8kbits/s    
frame=  201 fps= 30 q=-1.0 size=    2632kB time=00:00:06.53 bitrate=3298.7kbits/s    
frame=  216 fps= 30 q=-1.0 size=    2809kB time=00:00:06.97 bitrate=3297.9kbits/s    
frame=  231 fps= 30 q=-1.0 size=    2993kB time=00:00:07.69 bitrate=3184.7kbits/s    
frame=  246 fps= 30 q=-1.0 size=    3173kB time=00:00:08.10 bitrate=3206.4kbits/s    
frame=  262 fps= 30 q=-1.0 size=    3370kB time=00:00:08.59 bitrate=3213.1kbits/s    
frame=  277 fps= 30 q=-1.0 size=    3549kB time=00:00:09.03 bitrate=3217.4kbits/s    
frame=  292 fps= 30 q=-1.0 size=    3735kB time=00:00:09.47 bitrate=3227.6kbits/s    
[NULL @ 0x305ae00] Current profile doesn't provide more RBSP data in PPS, skipping
frame=  307 fps= 30 q=-1.0 size=    3944kB time=00:00:10.17 bitrate=3174.2kbits/s    
frame=  323 fps= 30 q=-1.0 size=    4140kB time=00:00:10.65 bitrate=3184.8kbits/s    
frame=  338 fps= 30 q=-1.0 size=    4323kB time=00:00:11.09 bitrate=3192.8kbits/s    
frame=  353 fps= 30 q=-1.0 size=    4507kB time=00:00:11.53 bitrate=3200.8kbits/s    
frame=  369 fps= 30 q=-1.0 size=    4701kB time=00:00:12.27 bitrate=3136.5kbits/s    
frame=  384 fps= 30 q=-1.0 size=    4886kB time=00:00:12.70 bitrate=3149.6kbits/s    
frame=  399 fps= 30 q=-1.0 size=    5066kB time=00:00:13.15 bitrate=3156.1kbits/s    
frame=  414 fps= 30 q=-1.0 size=    5250kB time=00:00:13.59 bitrate=3163.7kbits/s    
frame=  430 fps= 30 q=-1.0 size=    5446kB time=00:00:14.06 bitrate=3171.8kbits/s    
frame=  445 fps= 30 q=-1.0 size=    5631kB time=00:00:14.75 bitrate=3125.5kbits/s    
frame=  460 fps= 30 q=-1.0 size=    5813kB time=00:00:15.20 bitrate=3131.0kbits/s    
frame=  475 fps= 30 q=-1.0 size=    5995kB time=00:00:15.65 bitrate=3138.1kbits/s    
frame=  491 fps= 30 q=-1.0 size=    6191kB time=00:00:16.12 bitrate=3145.8kbits/s    
frame=  506 fps= 30 q=-1.0 size=    6376kB time=00:00:16.82 bitrate=3104.0kbits/s    
frame=  521 fps= 30 q=-1.0 size=    6560kB time=00:00:17.26 bitrate=3112.5kbits/s    
frame=  536 fps= 30 q=-1.0 size=    6742kB time=00:00:17.70 bitrate=3118.7kbits/s    
frame=  552 fps= 30 q=-1.0 size=    6939kB time=00:00:18.18 bitrate=3126.6kbits/s    
frame=  567 fps= 30 q=-1.0 size=    7122kB time=00:00:18.90 bitrate=3086.8kbits/s    
frame=  582 fps= 30 q=-1.0 size=    7304kB time=00:00:19.30 bitrate=3098.6kbits/s    
frame=  597 fps= 30 q=-1.0 size=    7487kB time=00:00:19.76 bitrate=3103.0kbits/s    
[NULL @ 0x305ae00] Current profile doesn't provide more RBSP data in PPS, skipping
frame=  613 fps= 30 q=-1.0 size=    7708kB time=00:00:20.23 bitrate=3119.9kbits/s    
frame=  628 fps= 30 q=-1.0 size=    7868kB time=00:00:20.68 bitrate=3116.8kbits/s    
frame=  643 fps= 30 q=-1.0 size=    8052kB time=00:00:21.38 bitrate=3084.9kbits/s    
frame=  659 fps= 30 q=-1.0 size=    8246kB time=00:00:21.85 bitrate=3091.2kbits/s    
frame=  674 fps= 30 q=-1.0 size=    8429kB time=00:00:22.29 bitrate=3097.0kbits/s    
frame=  689 fps= 30 q=-1.0 size=    8612kB time=00:00:22.73 bitrate=3102.7kbits/s    
frame=  704 fps= 30 q=-1.0 size=    8796kB time=00:00:23.45 bitrate=3072.0kbits/s    
frame=  720 fps= 30 q=-1.0 size=    8991kB time=00:00:23.91 bitrate=3080.6kbits/s    
frame=  735 fps= 30 q=-1.0 size=    9174kB time=00:00:24.35 bitrate=3086.1kbits/s    
frame=  750 fps= 30 q=-1.0 size=    9359kB time=00:00:24.79 bitrate=3091.8kbits/s    
frame=  765 fps= 30 q=-1.0 size=    9541kB time=00:00:25.23 bitrate=3096.9kbits/s    
frame=  781 fps= 30 q=-1.0 size=    9737kB time=00:00:25.96 bitrate=3072.4kbits/s    
frame=  796 fps= 30 q=-1.0 size=    9920kB time=00:00:26.41 bitrate=3077.0kbits/s    
frame=  811 fps= 30 q=-1.0 size=   10103kB time=00:00:26.85 bitrate=3082.0kbits/s    
frame=  826 fps= 30 q=-1.0 size=   10286kB time=00:00:27.29 bitrate=3087.0kbits/s    
frame=  842 fps= 30 q=-1.0 size=   10481kB time=00:00:28.03 bitrate=3062.7kbits/s    
frame=  857 fps= 30 q=-1.0 size=   10666kB time=00:00:28.46 bitrate=3069.3kbits/s    
frame=  872 fps= 30 q=-1.0 size=   10848kB time=00:00:28.91 bitrate=3073.8kbits/s    
frame=  887 fps= 30 q=-1.0 size=   11032kB time=00:00:29.35 bitrate=3078.8kbits/s    
[NULL @ 0x305ae00] Current profile doesn't provide more RBSP data in PPS, skipping
frame=  903 fps= 30 q=-1.0 size=   11257kB time=00:00:30.10 bitrate=3062.6kbits/s    
frame=  918 fps= 30 q=-1.0 size=   11432kB time=00:00:30.51 bitrate=3069.1kbits/s    
frame=  933 fps= 30 q=-1.0 size=   11593kB time=00:00:30.96 bitrate=3066.6kbits/s    
frame=  949 fps= 30 q=-1.0 size=   11789kB time=00:00:31.44 bitrate=3071.7kbits/s    
frame=  964 fps= 30 q=-1.0 size=   11972kB time=00:00:31.88 bitrate=3075.8kbits/s    
frame=  967 fps= 30 q=-1.0 Lsize=   12021kB time=00:00:31.97 bitrate=3079.8kbits/s    
video:12008kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.101403%
Input file #0 (/dev/video0):
  Input stream #0:0 (video): 967 packets read (12296531 bytes); 
  Total: 967 packets (12296531 bytes) demuxed
Output file #0 (test_directly_processed_by_c920-another-attempt1.mp4):
  Output stream #0:0 (video): 967 packets muxed (12296531 bytes); 
  Total: 967 packets (12296531 bytes) muxed
0 frames successfully decoded, 0 decoding errors
[AVIOContext @ 0x31153a0] Statistics: 34 seeks, 997 writeouts

Any input to overcome this? Thanks!

Change History (5)

comment:1 Changed 5 years ago by cehoyos

  • Component changed from ffmpeg to undetermined
  • Keywords h264 added; ffmpeg c920 copyinkf removed
  • Priority changed from critical to normal

Please test current FFmpeg git head.
Does removing -copyinkf make a difference? If not, please remove it.

comment:2 Changed 5 years ago by gtzen

Removal of -copyinkf does not make difference. Tried already.

However if I process the same video again in avidemux copying the video codec and save to the same format, the video becomes smooth, fyi!

Version 0, edited 5 years ago by gtzen (next)

comment:3 Changed 5 years ago by holden

  • Keywords v4l2 added

comment:4 Changed 5 years ago by ubitux

  • Resolution set to needs_more_info
  • Status changed from new to closed

According to ribasushi (IRC / #ffmpeg), this might be due to a bug in the kernel: http://sourceforge.net/p/linux-uvc/mailman/message/33164469/

Maybe there is something to improve in our API usage, but it's apparently a regression in the Linux kernel since it's not supposed to break userland, so I'm closing the ticket for now. Feel free to re-open if you don't think it's justified.

comment:5 Changed 4 years ago by ubitux

14:10 <ribasushi> ubitux: in case you want to add more info to https://trac.ffmpeg.org/ticket/3956
14:10 <ribasushi> ubitux: final resolution is this (patch referenced within at [4]): https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=794327
Note: See TracTickets for help on using tickets.