Estoy trabajando con rtmp streams, y estoy seguro de que las marcas de tiempo no serían monótonas. Entonces, agregué muchas banderas para asegurarme que eso sería un problema, pero aún lo es.
El comando que uso es:
ffmpeg -fflags +genpts+igndts+ignidx -rtbufsize 2000M -re -vsync drop -i "rtmp://input" -vsync cfr -async 1 -c copy -f flv "rtmp://output"
Sin embargo, a pesar de todas estas banderas, me envía toneladas de [flv @ 0x563303498580] Non-monotonous DTS in output stream 0:1; previous: 52544, current: 26606; changing to 52544. This may result in incorrect timestamps in the output file.
Y también el flujo de salida realmente se ve dañado.
También cae los siguientes errores:
[NULL @ 0x56330347c380] illegal reordering_of_pic_nums_idc 26
[NULL @ 0x56330347c380] reference overflow 1275 > 15 or 0 > 15
[NULL @ 0x56330347c380] reference count 1 overflow
[NULL @ 0x56330347c380] illegal memory management control operation 32
Todo lo que quiero es que ffmpeg ignore las marcas de tiempo y genere nuevas para las secuencias de salida. Pero, sin embargo, todavía no alcanzo ningún éxito.
Yo uso el último ffmpeg 3.4, los encabezados son los siguientes:
ffmpeg version 3.4-1~16.04.york0 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.5) 20160609
configuration: --prefix=/usr --extra-version='1~16.04.york0' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
igndts
funciona, y todo lo que tengo es más malentendido después de eso (o simplemente no entiendo la palabra 'no monótono' correcto (en términos matemáticos)) =)
'non-monotonous
- & gt; cada nuevo miembro de la secuencia es mayor o igual que el último. los strict
La variedad no permite valores iguales.
igndts
La bandera que está haciendo es permitir que dts-s sean iguales, pero no menos de lo que ocurrió la última vez, lo que esperaría de ello si comprendiera lo que estoy diciendo
monotonous
encima.
-use_wallclock_as_timestamps
Y caevsync drop
. Los otros errores parecen ser errores de flujo de bits.