Opened 12 years ago
Last modified 12 years ago
#1979 new enhancement
Automatically set -fflags +genpts
Reported by: | Carl Eugen Hoyos | Owned by: | |
---|---|---|---|
Priority: | wish | Component: | ffmpeg |
Version: | git-master | Keywords: | av_interleaved_write_frame |
Cc: | ramitbhalla@gmail.com | Blocked By: | |
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description
Several tickets were opened by users who saw one of the following error messages when trying to remux: "first pts value must set" or "Can't write packet with unknown timestamp"
With the sample from ticket #1553:
$ ffmpeg -i Ts\ cannot\ be\ muxed\ to\ mkv.ts -vcodec copy -an out.mkv ffmpeg version N-47291-g0b14c19 Copyright (c) 2000-2012 the FFmpeg developers built on Nov 29 2012 21:54:38 with gcc 4.7 (SUSE Linux) configuration: --enable-gpl --disable-indev=jack libavutil 52. 9.102 / 52. 9.102 libavcodec 54. 77.100 / 54. 77.100 libavformat 54. 40.100 / 54. 40.100 libavdevice 54. 3.100 / 54. 3.100 libavfilter 3. 23.104 / 3. 23.104 libswscale 2. 1.103 / 2. 1.103 libswresample 0. 17.101 / 0. 17.101 libpostproc 52. 2.100 / 52. 2.100 [mpegts @ 0x326b240] PES packet size mismatch [mpegts @ 0x326b240] Could not find codec parameters for stream 2 (Audio: ac3 ([129][0][0][0] / 0x0081), 0 channels, s16): unspecified sample rate Consider increasing the value for the 'analyzeduration' and 'probesize' options [NULL @ 0x3270380] start time is not set in estimate_timings_from_pts [mpegts @ 0x326b240] PES packet size mismatch Input #0, mpegts, from 'Ts cannot be muxed to mkv.ts': Duration: 00:00:01.79, start: 58016.615744, bitrate: 9158 kb/s Program 1 Stream #0:0[0x31]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc Stream #0:1[0x34]: Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, stereo, s16, 384 kb/s Stream #0:2[0x35]: Audio: ac3 ([129][0][0][0] / 0x0081), 0 channels, s16 Output #0, matroska, to 'out.mkv': Metadata: encoder : Lavf54.40.100 Stream #0:0: Video: mpeg2video ([2][0][0][0] / 0x0002), yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], q=2-31, 29.97 fps, 1k tbn, 90k tbc Stream mapping: Stream #0:0 -> #0:0 (copy) Press [q] to stop, [?] for help [matroska @ 0x3272ec0] Can't write packet with unknown timestamp av_interleaved_write_frame(): Invalid argument
Adding -fflags +genpts fixes the problem, maybe this should be added automatically if necessary:
$ ffmpeg -fflags +genpts -i Ts\ cannot\ be\ muxed\ to\ mkv.ts -vcodec copy -an out.mkv ffmpeg version N-47291-g0b14c19 Copyright (c) 2000-2012 the FFmpeg developers built on Nov 29 2012 21:54:38 with gcc 4.7 (SUSE Linux) configuration: --enable-gpl --disable-indev=jack libavutil 52. 9.102 / 52. 9.102 libavcodec 54. 77.100 / 54. 77.100 libavformat 54. 40.100 / 54. 40.100 libavdevice 54. 3.100 / 54. 3.100 libavfilter 3. 23.104 / 3. 23.104 libswscale 2. 1.103 / 2. 1.103 libswresample 0. 17.101 / 0. 17.101 libpostproc 52. 2.100 / 52. 2.100 [mpegts @ 0x195b340] PES packet size mismatch [mpegts @ 0x195b340] Could not find codec parameters for stream 2 (Audio: ac3 ([129][0][0][0] / 0x0081), 0 channels, s16): unspecified sample rate Consider increasing the value for the 'analyzeduration' and 'probesize' options [NULL @ 0x1960540] start time is not set in estimate_timings_from_pts [mpegts @ 0x195b340] PES packet size mismatch Input #0, mpegts, from 'Ts cannot be muxed to mkv.ts': Duration: 00:00:01.79, start: 58016.615744, bitrate: 9158 kb/s Program 1 Stream #0:0[0x31]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc Stream #0:1[0x34]: Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, stereo, s16, 384 kb/s Stream #0:2[0x35]: Audio: ac3 ([129][0][0][0] / 0x0081), 0 channels, s16 Output #0, matroska, to 'out.mkv': Metadata: encoder : Lavf54.40.100 Stream #0:0: Video: mpeg2video ([2][0][0][0] / 0x0002), yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], q=2-31, 29.97 fps, 1k tbn, 90k tbc Stream mapping: Stream #0:0 -> #0:0 (copy) Press [q] to stop, [?] for help frame= 33 fps=0.0 q=-1.0 Lsize= 1440kB time=00:00:00.96 bitrate=12189.4kbits/s video:1439kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.068458%
Change History (7)
comment:1 by , 12 years ago
comment:2 by , 12 years ago
Cc: | added |
---|
comment:3 by , 12 years ago
Any update on this, I'm coming a LOT of HD videos that are running into this issue, I need to manually set the genpts flags to get the conversion work.
comment:5 by , 12 years ago
:) - now I'm out of my league, I wouldn't know where to start. I hope I'm helping improve ffmpeg by submitting bugs. I can only request someone familiar with teh architecture/code to look at and fix this.
I will however be glad to test it and provide feedback on it.
comment:6 by , 12 years ago
Maybe an easy first step would be to extend the error message to suggest using that flag?
I don't know how detecting whether genpts is necessary should be possible beforehand.
comment:7 by , 12 years ago
I can't confirm that adding -fflags +genpts helps in every case:
ffmpeg -fflags +genpts -i Sport_HD_CUT_ntsc.264 -i Sport_HD_CUT_ntsc.ac3 -codec copy -map 0:0 -map 1:0 -f matroska Sport_HD_CUT_ntsc.mkv ffmpeg version 1.1.git Copyright (c) 2000-2013 the FFmpeg developers built on May 4 2013 13:30:41 with gcc 4.6.3 (Gentoo Hardened 4.6.3 p1.3, pie-0.5.2) configuration: --enable-avresample --enable-gpl --enable-libx264 --enable-nonfree --enable-libmp3lame --enable-libfaac --enable-frei0r --enable-libsoxr --cpu=amd64 --arch=x86_64 --enable-version3 libavutil 52. 28.100 / 52. 28.100 libavcodec 55. 7.100 / 55. 7.100 libavformat 55. 4.101 / 55. 4.101 libavdevice 55. 0.100 / 55. 0.100 libavfilter 3. 63.101 / 3. 63.101 libavresample 1. 1. 0 / 1. 1. 0 libswscale 2. 2.100 / 2. 2.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 3.100 / 52. 3.100 [h264 @ 0x7fad8bf7f1c0] Stream #0: not enough frames to estimate rate; consider increasing probesize Input #0, h264, from 'Sport_HD_CUT_ntsc.264': Duration: N/A, bitrate: N/A Stream #0:0: Video: h264 (High), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1200k tbn, 47.95 tbc [ac3 @ 0x7fad8bf81480] max_analyze_duration 5000000 reached at 5024000 microseconds [ac3 @ 0x7fad8bf81480] Estimating duration from bitrate, this may be inaccurate Input #1, ac3, from 'Sport_HD_CUT_ntsc.ac3': Duration: 00:01:00.58, start: 0.000000, bitrate: 448 kb/s Stream #1:0: Audio: ac3, 48000 Hz, stereo, fltp, 448 kb/s File 'Sport_HD_CUT_ntsc.mkv' already exists. Overwrite ? [y/N] y Output #0, matroska, to 'Sport_HD_CUT_ntsc.mkv': Metadata: encoder : Lavf55.4.101 Stream #0:0: Video: h264 (H264 / 0x34363248), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 23.98 fps, 1k tbn, 1200k tbc Stream #0:1: Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, 448 kb/s Stream mapping: Stream #0:0 -> #0:0 (copy) Stream #1:0 -> #0:1 (copy) Press [q] to stop, [?] for help [matroska @ 0x7fad8bf82240] Can't write packet with unknown timestamp av_interleaved_write_frame(): Invalid argument
If it is of help, I can upload the example files I used. The .264 stream is a reencode done by ffmpeg itself.
This may also be connected with Ticket #2054