Nicht monotones DTS mit igndts-Flagge

1680
Ngoral

Ich arbeite mit RTMP-Streams, und ich bin mir sicher, Zeitstempel wären nicht eintönig. Also habe ich viele Flaggen hinzugefügt, um sicherzugehen, dass dies kein Problem wäre, aber es ist immer noch.

Der Befehl, den ich verwende, lautet:

ffmpeg -fflags +genpts+igndts+ignidx -rtbufsize 2000M -re -vsync drop -i "rtmp://input" -vsync cfr -async 1 -c copy -f flv "rtmp://output"

Trotz all dieser Flags schickt es mir Tonnen von [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. und auch der Ausgabestrom sieht wirklich beschädigt aus.

Es werden auch die folgenden Fehler verworfen:

[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

Alles, was ich möchte, ist nur, dass ffmpeg Zeitstempel ignoriert und neue für die Ausgabeströme generiert. Ich hatte jedoch noch keinen Erfolg.

Ich benutze die neueste Version von ffmpeg 3.4, die Header sind folgende:

 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 
1
Verwenden Sie anstelle von fflags "-use_wallclock_as_timestamps" und "vsync drop". Die anderen Fehler scheinen Bitstromfehler zu sein. Gyan vor 6 Jahren 0
@ Mulvya OK, ich werde es versuchen, danke. Und was kann ich über diese Bitstream-Fehler lesen / tun? Ich habe bereits in der Quelle von ffmpeg gesucht, um zu verstehen, wie `igndts` funktioniert, und alles, was ich bekomme, ist mehr Missverständnis danach (oder ich verstehe einfach nicht das Wort 'nicht-monoton') (in mathematischen Begriffen) =) Ngoral vor 6 Jahren 0
"Nicht-Monoton" -> jedes neue Mitglied der Sequenz ist größer oder gleich dem letzten. Die "strenge" Variante erlaubt keine gleichen Werte. Gyan vor 6 Jahren 0
@ Mulvya Ich habe immer gedacht, dass das, was Sie sagen, eintönig ist, nicht * non * -monoton =) Jedenfalls scheint mir, dass die `igndts'-Flagge das Einzige ist, was gleiche dts-s erlaubt, aber nicht weniger als das Zuletzt geschah, was ich davon erwarten würde, wenn Sie verstehen, was ich sage Ngoral vor 6 Jahren 0
Entschuldigung, ich habe achtlos kopiert. Ja, es sollte oben "eintönig" sein. Gyan vor 6 Jahren 0
@ Mulvya Das hat schließlich nicht geholfen. Es ersetzt immer noch den zuletzt aufgetretenen Zeitstempel und protokolliert diesen Fehler Ngoral vor 6 Jahren 0
Überprüfen Sie diese beiden Befehle auf DTS-Nachrichten: `ffmpeg -rtbufsize 2000M -re -i" rtmp: // input "-f null -`" und `ffmpeg -use_wallclock_as_timestamps 1 -rtbufsize 2000M -re -i" rtmp: // input "- f null -` Gyan vor 6 Jahren 0

0 Antworten auf die Frage