Avidemux Forum

Avidemux => Windows => Topic started by: avidemux-fang on May 03, 2021, 07:46:16 AM

Title: Avidemux can't seek for key frame
Post by: avidemux-fang on May 03, 2021, 07:46:16 AM
hi,

i got a strange problem here. the new avidemux 2.7.8 can't seek the key frame anymore. but if i go back to 2.7.5, it can seek normally again. it's the same mp4 file. what's the possible issue here? can anyone give me some advice? thank you.

ps. i am not a native speaker. so please bear with my english.  :)
Title: Re: Avidemux can't seek for key frame
Post by: eumagga0x2a on May 03, 2021, 07:54:24 AM
Please set the number of lavc decoder threads in Avidemux Preferences --> Multithreading to 2 max.
Title: Re: Avidemux can't seek for key frame
Post by: avidemux-fang on May 03, 2021, 08:17:19 AM
Quote from: eumagga0x2a on May 03, 2021, 07:54:24 AMPlease set the number of lavc decoder threads in Avidemux Preferences --> Multithreading to 2 max.

doesn't help. it still can't seek.
also there's a big difference in newer version. when i added a file, it will pop up a small window shows decoding frame type, and it will process for a while. in 2.7.5 it just open that file and show the first frame. no window or any process.
Title: Re: Avidemux can't seek for key frame
Post by: eumagga0x2a on May 03, 2021, 08:50:34 AM
Quote from: avidemux-fang on May 03, 2021, 08:17:19 AMdoesn't help. it still can't seek.

Have you restarted Avidemux? If yes, please provide that particular file as a sample via WeTransfer (it doesn't need an email address despite the interface trying to suggest otherwise, 2 GiB file size limit), Mega, Dropbox or Google Drive. Obviously, keyframe-based navigation works fine for me with all non-corrupt MP4 samples I have.

Quote from: avidemux-fang on May 03, 2021, 08:17:19 AMalso there's a big difference in newer version. when i added a file, it will pop up a small window shows decoding frame type, and it will process for a while. in 2.7.5 it just open that file and show the first frame. no window or any process.

This is true, prior to 2.7.6, we didn't care to determine frame type (P-frame vs B-frame) in MP4 files. New fixes for the copy mode require exact frame type to be known. If you don't use copy mode, you can skip decoding of slice headers to get the correct frame type by pressing ESC.
Title: Re: Avidemux can't seek for key frame
Post by: avidemux-fang on May 03, 2021, 01:13:00 PM
ok, i have upload a small mp4 file to wetransfer

https://we.tl/t-DGHcUYIXj3

i cut this fragment with version 2.7.5

but in 2.7.8, i can't jump with the key frame or drag with the seek bar.




Quote from: eumagga0x2a on May 03, 2021, 08:50:34 AM
Quote from: avidemux-fang on May 03, 2021, 08:17:19 AMdoesn't help. it still can't seek.

Have you restarted Avidemux? If yes, please provide that particular file as a sample via WeTransfer (it doesn't need an email address despite the interface trying to suggest otherwise, 2 GiB file size limit), Mega, Dropbox or Google Drive. Obviously, keyframe-based navigation works fine for me with all non-corrupt MP4 samples I have.

Quote from: avidemux-fang on May 03, 2021, 08:17:19 AMalso there's a big difference in newer version. when i added a file, it will pop up a small window shows decoding frame type, and it will process for a while. in 2.7.5 it just open that file and show the first frame. no window or any process.

This is true, prior to 2.7.6, we didn't care to determine frame type (P-frame vs B-frame) in MP4 files. New fixes for the copy mode require exact frame type to be known. If you don't use copy mode, you can skip decoding of slice headers to get the correct frame type by pressing ESC.
Title: Re: Avidemux can't seek for key frame
Post by: eumagga0x2a on May 03, 2021, 03:02:40 PM
Thank you for the sample, confirming the issue. My first impression is that the problem is caused by video stream being field-encoded rather than frame-encoded while both fields get marked as keyframe. We probably need to remove/ignore the keyframe flag from the second (or the first?) field in such a keyframe. Looking into it.
Title: Re: Avidemux can't seek for key frame
Post by: eumagga0x2a on May 03, 2021, 06:07:34 PM
Should be fixed now for Mp4 and Matroska demuxers, thank you very much for your report.

[demuxers/Mp4] Make sure only one field of a keyframe is flagged as keyframe in field encoded H.264 streams (https://github.com/mean00/avidemux2/commit/9a2b48715037ec3342cfc48ec4bce4b2f8e49eb3)
[demuxers/Matroska] Make sure only one field of a keyframe is flagged as keyframe in field encoded H.264 streams (https://github.com/mean00/avidemux2/commit/3873a06871838fd52d4370e8667ae8820304482a)
Title: Re: Avidemux can't seek for key frame
Post by: avidemux-fang on May 04, 2021, 06:38:10 AM
Quote from: eumagga0x2a on May 03, 2021, 06:07:34 PMShould be fixed now for Mp4 and Matroska demuxers, thank you very much for your report.

[demuxers/Mp4] Make sure only one field of a keyframe is flagged as keyframe in field encoded H.264 streams (https://github.com/mean00/avidemux2/commit/9a2b48715037ec3342cfc48ec4bce4b2f8e49eb3)
[demuxers/Matroska] Make sure only one field of a keyframe is flagged as keyframe in field encoded H.264 streams (https://github.com/mean00/avidemux2/commit/3873a06871838fd52d4370e8667ae8820304482a)

thank you. so i just wait for the next release?
Title: Re: Avidemux can't seek for key frame
Post by: eumagga0x2a on May 04, 2021, 06:47:12 AM
Not release, for the next nightly build (https://avidemux.org/nightly/) (MinGW = win64 or VC++ = vsWin64).

If you have a Linux installation too, you can rather easily cross-compile your own win64 build yourself (https://github.com/mean00/avidemux2/blob/master/cross-compiling.txt).
Title: Re: Avidemux can't seek for key frame
Post by: avidemux-fang on May 12, 2021, 07:49:22 AM
hi

a quick update here.
i tried the nightly 210510
it works fine. thank you very much.  ;D



Quote from: eumagga0x2a on May 04, 2021, 06:47:12 AMNot release, for the next nightly build (https://avidemux.org/nightly/) (MinGW = win64 or VC++ = vsWin64).

If you have a Linux installation too, you can rather easily cross-compile your own win64 build yourself (https://github.com/mean00/avidemux2/blob/master/cross-compiling.txt).