Opened 12 years ago
Closed 11 years ago
#2211 closed defect (fixed)
Not possible to override bogus FPS in raw h264 streams
Reported by: | jaanusk | Owned by: | |
---|---|---|---|
Priority: | important | Component: | ffmpeg |
Version: | git-master | Keywords: | h264 regression |
Cc: | zagser168@yandex.ru | Blocked By: | |
Blocking: | Reproduced by developer: | yes | |
Analyzed by developer: | no |
Description
It's not possible to override fps on raw h264 streams.
For example, I have a stream produced by Raspberry PI HW encoder which plays fine when fps
is forced. The actual fps is 15, but recent ffmpeg versions default somehow to 25fps.
How to reproduce:
% ffmpeg -r 15 -i stream_00 -vcodec copy stream.mp4 ffmpeg version N-49440-gebe368d Copyright (c) 2000-2013 the FFmpeg developers built on Jan 29 2013 16:08:08 with gcc 4.7 (Debian 4.7.2-5) configuration: libavutil 52. 17.100 / 52. 17.100 libavcodec 54. 91.100 / 54. 91.100 libavformat 54. 61.104 / 54. 61.104 libavdevice 54. 3.102 / 54. 3.102 libavfilter 3. 34.101 / 3. 34.101 libswscale 2. 2.100 / 2. 2.100 libswresample 0. 17.102 / 0. 17.102 [h264 @ 0x1bcf000] max_analyze_duration 5000000 reached at 5000000 microseconds [h264 @ 0x1bcf000] Estimating duration from bitrate, this may be inaccurate Input #0, h264, from 'stream_00': Duration: N/A, bitrate: N/A Stream #0:0: Video: h264 (High), yuv420p, 960x720, 25 fps, 25 tbr, 1200k tbn, 50 tbc Output #0, mp4, to 'stream.mp4': Metadata: encoder : Lavf54.61.104 Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 960x720, q=2-31, 25 fps, 1200k tbn, 1200k tbc Stream mapping: Stream #0:0 -> #0:0 (copy) Press [q] to stop, [?] for help frame=224753 fps=173017 q=-1.0 Lsize= 103295kB time=02:29:50.08 bitrate= 94.1kbits/s video:102400kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.873958%
Output file plays faster then normal because the actual source is 15fps and ffmpeg does not allow to override this.
Last version that works as expected is 0.11.2.
Attachments (1)
Change History (12)
comment:1 by , 12 years ago
Keywords: | h264 added |
---|
comment:2 by , 12 years ago
Working example:
$ ffmpeg -r 15 -i sample.h264 -vcodec copy out.mp4 ffmpeg version 0.11.2 Copyright (c) 2000-2012 the FFmpeg developers built on Jan 23 2013 11:04:28 with gcc 4.4.5 configuration: libavutil 51. 54.100 / 51. 54.100 libavcodec 54. 23.100 / 54. 23.100 libavformat 54. 6.100 / 54. 6.100 libavdevice 54. 0.100 / 54. 0.100 libavfilter 2. 77.100 / 2. 77.100 libswscale 2. 1.100 / 2. 1.100 libswresample 0. 15.100 / 0. 15.100 [h264 @ 0x1e459160] max_analyze_duration 5000000 reached at 5000000 [h264 @ 0x1e459160] Estimating duration from bitrate, this may be inaccurate Input #0, h264, from 'sample.h264': Duration: N/A, bitrate: N/A Stream #0:0: Video: h264 (High), yuv420p, 960x720, 15 fps, 15 tbr, 1200k tbn, 30 tbc Output #0, mp4, to 'out.mp4': Metadata: encoder : Lavf54.6.100 Stream #0:0: Video: h264 (![0][0][0] / 0x0021), yuv420p, 960x720, q=2-31, 15 fps, 1200k tbn, 1200k tbc Stream mapping: Stream #0:0 -> #0:0 (copy) Press [q] to stop, [?] for help frame= 140 fps=0.0 q=-1.0 Lsize= 202kB time=00:00:09.26 bitrate= 178.8kbits/s video:200kB audio:0kB global headers:0kB muxing overhead 1.108398%
comment:4 by , 12 years ago
Reproduced by developer: | set |
---|---|
Resolution: | → fixed |
Status: | new → closed |
comment:5 by , 11 years ago
Resolution: | fixed |
---|---|
Status: | closed → reopened |
Broken in 1.2.3 and 2.0.1:
$ ffmpeg -r 15 -i sample.h264 -vcodec copy out.mp4 ffmpeg version 2.0.1 Copyright (c) 2000-2013 the FFmpeg developers built on Sep 26 2013 12:24:48 with gcc 4.4.5 (Debian 4.4.5-8) configuration: --enable-libx264 --enable-gpl libavutil 52. 38.100 / 52. 38.100 libavcodec 55. 18.102 / 55. 18.102 libavformat 55. 12.100 / 55. 12.100 libavdevice 55. 3.100 / 55. 3.100 libavfilter 3. 79.101 / 3. 79.101 libswscale 2. 3.100 / 2. 3.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 3.100 / 52. 3.100 Input #0, h264, from 'sample.h264': Duration: N/A, bitrate: N/A Stream #0:0: Video: h264 (High), yuv420p, 960x720, 25 fps, 25 tbr, 1200k tbn, 50 tbc Output #0, mp4, to 'out.mp4': Metadata: encoder : Lavf55.12.100 Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 960x720, q=2-31, 25 fps, 15360 tbn, 15 tbc Stream mapping: Stream #0:0 -> #0:0 (copy) Press [q] to stop, [?] for help frame= 140 fps=0.0 q=-1.0 Lsize= 201kB time=00:00:09.33 bitrate= 176.7kbits/s video:200kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.675293%
comment:7 by , 11 years ago
git head also broken:
$ /usr/local/bin/ffmpeg -r 15 -i sample.h264 -vcodec copy out.mp4 ffmpeg version N-56677-g689a1bd Copyright (c) 2000-2013 the FFmpeg developers built on Sep 27 2013 07:16:18 with gcc 4.8.1 (GCC) 20130603 (Red Hat 4.8.1-1) configuration: --enable-libx264 --enable-gpl libavutil 52. 46.100 / 52. 46.100 libavcodec 55. 33.100 / 55. 33.100 libavformat 55. 18.103 / 55. 18.103 libavdevice 55. 3.100 / 55. 3.100 libavfilter 3. 87.100 / 3. 87.100 libswscale 2. 5.100 / 2. 5.100 libswresample 0. 17.103 / 0. 17.103 libpostproc 52. 3.100 / 52. 3.100 Input #0, h264, from 'sample.h264': Duration: N/A, bitrate: N/A Stream #0:0: Video: h264 (High), yuv420p, 960x720, 25 fps, 25 tbr, 1200k tbn, 50 tbc Output #0, mp4, to 'out.mp4': Metadata: encoder : Lavf55.18.103 Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 960x720, q=2-31, 25 fps, 15360 tbn, 15 tbc Stream mapping: Stream #0:0 -> #0:0 (copy) Press [q] to stop, [?] for help frame= 140 fps=0.0 q=-1.0 Lsize= 201kB time=00:00:09.33 bitrate= 176.7kbits/s video:200kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.675293%
follow-up: 9 comment:8 by , 11 years ago
I tested your sample and command line the other day and it appeared to me that out.mp4 is created with the the intended 15fps. Which application do you use for testing / how does ffplay play the output file for you?
comment:9 by , 11 years ago
Replying to cehoyos:
I tested your sample and command line the other day and it appeared to me that out.mp4 is created with the the intended 15fps. Which application do you use for testing / how does ffplay play the output file for you?
Indeed, mplayer shows the actual produced file to be 15fps.
Text output is still misleading "25 fps" though.
comment:10 by , 11 years ago
Cc: | added |
---|
comment:11 by , 11 years ago
Component: | undetermined → FFmpeg |
---|---|
Keywords: | regression added |
Priority: | normal → important |
Resolution: | → fixed |
Status: | reopened → closed |
Afaict, this was a regression which was fixed by Michael. If you believe that the console output is misleading, please open a new ticket.
Replying to jaanusk:
This is unexpected: Please provide command line including complete, uncut console output for a working revision and provide an input sample.