News:

--

Main Menu

bug zero/current frame time

Started by scscorpin, May 20, 2024, 12:39:01 PM

Previous topic - Next topic

scscorpin

Just in case, I provided it in Russian, due to the fact that I don't speak English

на всякий случай привёл на русском языке, в связи с тем, что не владею английским языком


ошибка длительности нулевого кадра происходит при создании слайдшоу при помощи ffmpeg используя метод setpts для точной установки длительности кадра

то есть при fps 50 Я установил длительность 6 секунд для всех кадров

0 кадр обязан длится 6 секунд, но он длится 20 миллисекунд, а все остальные 6 секунд

так происходит в avidemux и в mpc(media player classic K-Lite Mega Codec), но на YouTube всё нормально воспроизводится

если Я в avidemux редактирую слайдшоу и нажимаю кнопу воспроизвести на произвольном кадре, то сразу переключается на следующий кадр, то есть не показывает текущий кадр на 6 секунд, а перескакивает на следующий кадр

если Я в avidemux редактирую слайдшоу и копирую из произвольной области два кадра из слайдшоу куда-нибудь в добавленное видео с таким же fps, то потом при воспроизведении показывается второй кадр из слайдшоу на 6 секунд, далее показывается кадр из видео на 6 секунд, далее воспроизводится видео
    а если после редактирования это сохранить методом copy, то на кадрах могут появится артефакты при воспроизведении в mpc


(google translate)
zero frame duration error occurs when creating a slideshow using ffmpeg using the setpts method to precisely set the frame duration

that is at fps 50 I set the duration to 6 seconds for all frames

Frame 0 is supposed to last 6 seconds, but it lasts 20 milliseconds, and all the rest are 6 seconds

this happens in avidemux and mpc (media player classic K-Lite Mega Codec), but on YouTube everything plays fine

if I edit a slideshow in avidemux and press the play button on an arbitrary frame, it immediately switches to the next frame, that is, it does not show the current frame for 6 seconds, but jumps to the next frame

if I edit a slideshow in avidemux and copy two frames from the slideshow from an arbitrary area somewhere into an added video with the same fps, then during playback the second frame from the slideshow is shown for 6 seconds, then a frame from the video is shown for 6 seconds, then played video
    and if after editing it is saved using the copy method, then artifacts may appear on the frames when played back in mpc

eumagga0x2a

Please provide a sample preferably via WeTransfer, Mega, Dropbox or Google Drive. Alternatively, please post the ffmpeg command line used to generate the sample.

Thank you.

scscorpin

Я перефразирую лучше, в связи с тем, что слайдшоу делаю в python и, там много всего переплетено   

t = 6
r = 1/t
длительность показа кадра по формуле '-vf', f'fps={r*t}' получается 1 секунда, но так как '-r', f'{r}' равен 0.166 (1/t), поэтому показ такого кадра обязан длится 6 секунд

сейчас слайдшоу везде нормально воспроизводится, вообще идеально

но когда вставляю слайдшоу в видео_jin_00552_1 с точно такими же настройками, то после слайдшоу первый кадр из видео_jin_00552_1 стоит 1 одну секунду, потом нормально продолжается воспроизвидение

так происходит в Avidemux и в mpc, а в vlc и в youtube всё нормально

======================

I'll paraphrase better, due to the fact that I make slideshows in python and there's a lot of stuff intertwined there   

t=6
r = 1/t
the duration of displaying a frame using the formula '-vf', f'fps={r*t}' is 1 second, but since '-r', f'{r}' is equal to 0.166 (1/t), therefore displaying such a frame must last 6 seconds

Now the slideshow plays normally everywhere, absolutely perfect

but when I insert a slideshow into video_jin_00552_1 with exactly the same settings, then after the slideshow the first frame from video_jin_00552_1 lasts 1 one second, then playback continues normally

this happens in Avidemux and mpc, but in vlc and youtube everything is fine

video with freeze frame after slideshow

media info and about programs versions

Geo_log

Quote from: scscorpin on May 22, 2024, 05:43:21 PMI'll paraphrase better
Can you just answer that question
Quote from: eumagga0x2a on May 20, 2024, 05:02:06 PMpost the ffmpeg command line used to generate the sample

The "jin_00552_1_edit.mkv" video is totally erroneous and cannot be repaired with even with the help of the famous VideoReDo tool.

Your MediaInfo and Avidemux are outdated.

scscorpin

Я определил баг при использовании vlc, там используется Direct3D11, поэтому там всё нормально воспроизводится, то есть баг в DXVA2

DXVA2 смещает кадровую длительность на один кадр

в mpc как и в Avidemux используется DXVA2, но когда в LAV использую NVIDIA CUVID, то в mpc всё нормально

а как в Avidemux переключить аппаратное ускорение на Direct3D11 или NVIDIA CUVID?

(google translate)
I identified a bug when using vlc, it uses Direct3D11, so everything plays fine there, that is, a bug in DXVA2

DXVA2 shifts frame duration by one frame

in mpc, like in Avidemux, DXVA2 is used, but when I use NVIDIA CUVID in LAV, then everything is fine in mpc

How can I switch hardware acceleration to Direct3D11 or NVIDIA CUVID in Avidemux?

eumagga0x2a

Thank you for the sample. I confirm that Avidemux exhibits a number of issues with it (the sample violates a whole lot of assumptions), especially the real frame duration being that much longer than the default frame duration specified by the codec as well as at the container level breaks navigation (you cannot go to the previous frame at the boundary between the "slideshow" and the continuation of normal video).

Yes, please provide the ffmpeg command line for the ease of future testing.

Quote from: scscorpin on May 24, 2024, 04:45:54 PMHow can I switch hardware acceleration to Direct3D11 or NVIDIA CUVID in Avidemux?

The former: you'd need to implement it yourself, Avidemux still uses d3d9. The latter: please use a current nightly, the ancient 2.8.0 release is entirely unsupported.

However, the playback issue is entirely unrelated to hw accel, it is a bug in the GUIPlayback::run() function. Other issues affect filtering.

scscorpin

подтверждаю, что это полностью нестандартный способ создания видео
  с вставкой в него слайдшоу, которое создано с другим количеством кадров в секунду
но это очень быстрый способ, тем более, что youtube со своей стороны всё исправляет кодированием в vp9

ffmpeg строка ненужна, в связи с тем, что суть не в слайдшоу, необходимо соединить в Avidemux два видео, то есть 1fps.mkv вставьте в середину видео 50fps.mkv и сохраните используя метод "copy"
  • конечно вместо "copy" можно закодировать
  • но на скорости меньше 200fps
  • и, это непоможет
  • а vlc несможет воспроизвести кадры из такого видео в части с 1 fps, поэтому необходимо задействовать фильтр "преобразования кадровой частоты", но тогда баг с зависоном укоренится
если одно из видео несодержит звуковую дорожку, то звуковые дорожки нужно, либо выключить, либо неиспользовать метод "copy" для звука

Есть ли скрипт обнаружения тишины для Avidemux с целью удаления фрагментов, в которых она присутствует?
  • если нет скрипта, то нужны звуковые дорожки, чтоб видеть фрагменты, в которых тишина присутствует
  • и ещё нужно редактировать фрагменты, иногда очень надо; хотя бы просто панель с списком фрагментов, который кстати создаётся при сохранении скрипта проекта, но редактировать его можно, только в редакторе кода, но непонятно, почему нельзя редактировать фрагменты в Avidemux, например, иногда нужно вернуть удалённую часть фрагмента, а возможность такая отсутствует
  • и ещё нужно иногда приближать/отдалять таймлайн с фрагментами, а возможность такая отсутствует тоже


(google translate)
I confirm that this is a completely non-standard way of creating videos
  • with inserting a slideshow created with a different number of frames per second
but this is a very fast way, especially since youtube, for its part, corrects everything by encoding in vp9

The ffmpeg line is unnecessary, due to the fact that the point is not in the slideshow, you need to combine two videos in Avidemux, that is 1fps.mkv insert into the middle of the 50fps.mkv and save using the "copy" method
  • Of course, instead of "copy" you can encode
  • but at speeds less than 200fps
  • and that won't help
  • and vlc will not be able to play frames from such a video in the 1 fps part, so it is necessary to use the "frame rate conversion" filter, but then the hang-up bug will take root
if one of the videos does not contain an audio track, then the audio tracks should either be turned off or not use the "copy" method for audio

Is there a script for detecting silence for Avidemux in order to remove fragments in which it is present?
  • if there is no script, then you need audio tracks to see fragments in which silence is present
  • and you still need to edit fragments, sometimes it's very necessary; at least just a panel with a list of fragments, which, by the way, is created when you save the project script, but you can edit it only in the code editor, but it's not clear why you can't edit fragments in Avidemux, for example, sometimes you need to return a deleted part of a fragment, but there is no such option
  • and sometimes you need to zoom in/out of the timeline with fragments, but there is no such option either