bytedeco / javacv

Java interface to OpenCV, FFmpeg, and more
Other
7.41k stars 1.57k forks source link

Using the setVideoFrameNumber method for mepegts format jumps to the wrong position #2127

Closed Aismy closed 5 months ago

Aismy commented 7 months ago

I use the setVideoFrameNumber method to jump to the corresponding frame, and then start to intercept, but the actual position that this api jumps to is not the same as the one I set, I tested many formats of video, and found that only the mpegts format has this problem, as shown in the following figure, I jump to 500 frames, but he becomes 560, and I found that for the mpegts format, using the setTimestamp method will also jump to the wrong time.

image

saudet commented 7 months ago

Please try again with JavaCV 1.5.9

Aismy commented 7 months ago

This is what I rely on and I've switched to 1.5.9. But it still works, the result is the same as before image

Aismy commented 7 months ago

I tried to use ffmpeg directly to process the video in mpegts format and set the start frame, it is possible to jump correctly

anotherche commented 7 months ago

This behavior may be because ffmpeg's avformat_seek_file(...) function, which is used inside the setTimestamp function, sets the position to a keyframe following after the required position instead of before it. I checked a couple of .ts files I have, and I see that this is the case. Maybe this happens more often with this type of video for some reason. To see if you might have the same cause, you can run some code like this:

int frCount = 0;
List<Long> TSbyONE = new ArrayList<Long>();
while((frame = grabber.grabImage())!=null && frCount<1000 ) {
  long TS = frame.timestamp;
  TSbyONE.add(TS);
  System.out.println(frCount+" ts: "+TS +(frame.keyFrame?" keyframe ":""));
  frCount++;
}
System.out.println("");
System.out.println("Setting frames by number");
for(int fcnt=0;fcnt<frCount;fcnt++){
  grabber.setVideoFrameNumber(fcnt);
  frame = grabber.grabImage();
  long TS = frame.timestamp;
  if (TS!=TSbyONE.get(fcnt))    System.out.println(fcnt+" true TS: "+TSbyONE.get(fcnt)+" set TS: " + TS);
}
Aismy commented 7 months ago

I tested with ffmpeg to set the start time for the ts format and it is correct, but with the api for javacv this is the problem!

Aismy commented 7 months ago

If I get the interval between keyframes, and then subtract that interval when using setTimestamp, does that jump to the correct position?

anotherche commented 7 months ago

I tested with ffmpeg to set the start time for the ts format and it is correct, but with the api for javacv this is the problem!

OK, @Aismy , I understand that. But in order to solve the problem, I need more details to understand the reason that causes this behavior. For that I need an example file, or the result of executing the code I gave above.

If I get the interval between keyframes, and then subtract that interval when using setTimestamp, does that jump to the correct position?

No

Aismy commented 7 months ago

Below is the result of my execution using the shouldts file and then running the demo you gave me, I found that only the frames with the keyframes attached were correct when using the relevant api.

0 ts: 10911 keyframe 250 ts: 8344244 keyframe 500 ts: 16677577 keyframe 750 ts: 25010911 keyframe

Setting frames by number 16 true TS: 544244 set TS: 8344244 17 true TS: 577577 set TS: 8344244 18 true TS: 610911 set TS: 8344244 19 true TS: 644244 set TS: 8344244 20 true TS: 677577 set TS: 8344244 21 true TS: 710911 set TS: 8344244 22 true TS: 744244 set TS: 8344244 23 true TS: 777577 set TS: 8344244 24 true TS: 810911 set TS: 8344244 25 true TS: 844244 set TS: 8344244 26 true TS: 877577 set TS: 8344244 27 true TS: 910911 set TS: 8344244 28 true TS: 944244 set TS: 8344244 29 true TS: 977577 set TS: 8344244 30 true TS: 1010911 set TS: 8344244 31 true TS: 1044244 set TS: 8344244 32 true TS: 1077577 set TS: 8344244 33 true TS: 1110911 set TS: 8344244 34 true TS: 1144244 set TS: 8344244 35 true TS: 1177577 set TS: 8344244 36 true TS: 1210911 set TS: 8344244 37 true TS: 1244244 set TS: 8344244 38 true TS: 1277577 set TS: 8344244 39 true TS: 1310911 set TS: 8344244 40 true TS: 1344244 set TS: 8344244 41 true TS: 1377577 set TS: 8344244 42 true TS: 1410911 set TS: 8344244 43 true TS: 1444244 set TS: 8344244 44 true TS: 1477577 set TS: 8344244 45 true TS: 1510911 set TS: 8344244 46 true TS: 1544244 set TS: 8344244 47 true TS: 1577577 set TS: 8344244 48 true TS: 1610911 set TS: 8344244 49 true TS: 1644244 set TS: 8344244 50 true TS: 1677577 set TS: 8344244 51 true TS: 1710911 set TS: 8344244 52 true TS: 1744244 set TS: 8344244 53 true TS: 1777577 set TS: 8344244 54 true TS: 1810911 set TS: 8344244 55 true TS: 1844244 set TS: 8344244 56 true TS: 1877577 set TS: 8344244 57 true TS: 1910911 set TS: 8344244 58 true TS: 1944244 set TS: 8344244 59 true TS: 1977577 set TS: 8344244 60 true TS: 2010911 set TS: 8344244 61 true TS: 2044244 set TS: 8344244 62 true TS: 2077577 set TS: 8344244 63 true TS: 2110911 set TS: 8344244 64 true TS: 2144244 set TS: 8344244 65 true TS: 2177577 set TS: 8344244 66 true TS: 2210911 set TS: 8344244 67 true TS: 2244244 set TS: 8344244 68 true TS: 2277577 set TS: 8344244 69 true TS: 2310911 set TS: 8344244 70 true TS: 2344244 set TS: 8344244 71 true TS: 2377577 set TS: 8344244 72 true TS: 2410911 set TS: 8344244 73 true TS: 2444244 set TS: 8344244 74 true TS: 2477577 set TS: 8344244 75 true TS: 2510911 set TS: 8344244 76 true TS: 2544244 set TS: 8344244 77 true TS: 2577577 set TS: 8344244 78 true TS: 2610911 set TS: 8344244 79 true TS: 2644244 set TS: 8344244 80 true TS: 2677577 set TS: 8344244 81 true TS: 2710911 set TS: 8344244 82 true TS: 2744244 set TS: 8344244 83 true TS: 2777577 set TS: 8344244 84 true TS: 2810911 set TS: 8344244 85 true TS: 2844244 set TS: 8344244 86 true TS: 2877577 set TS: 8344244 87 true TS: 2910911 set TS: 8344244 88 true TS: 2944244 set TS: 8344244 89 true TS: 2977577 set TS: 8344244 90 true TS: 3010911 set TS: 8344244 91 true TS: 3044244 set TS: 8344244 92 true TS: 3077577 set TS: 8344244 93 true TS: 3110911 set TS: 8344244 94 true TS: 3144244 set TS: 8344244 95 true TS: 3177577 set TS: 8344244 96 true TS: 3210911 set TS: 8344244 97 true TS: 3244244 set TS: 8344244 98 true TS: 3277577 set TS: 8344244 99 true TS: 3310911 set TS: 8344244 100 true TS: 3344244 set TS: 8344244 101 true TS: 3377577 set TS: 8344244 102 true TS: 3410911 set TS: 8344244 103 true TS: 3444244 set TS: 8344244 104 true TS: 3477577 set TS: 8344244 105 true TS: 3510911 set TS: 8344244 106 true TS: 3544244 set TS: 8344244 107 true TS: 3577577 set TS: 8344244 108 true TS: 3610911 set TS: 8344244 109 true TS: 3644244 set TS: 8344244 110 true TS: 3677577 set TS: 8344244 111 true TS: 3710911 set TS: 8344244 112 true TS: 3744244 set TS: 8344244 113 true TS: 3777577 set TS: 8344244 114 true TS: 3810911 set TS: 8344244 115 true TS: 3844244 set TS: 8344244 116 true TS: 3877577 set TS: 8344244 117 true TS: 3910911 set TS: 8344244 118 true TS: 3944244 set TS: 8344244 119 true TS: 3977577 set TS: 8344244 120 true TS: 4010911 set TS: 8344244 121 true TS: 4044244 set TS: 8344244 122 true TS: 4077577 set TS: 8344244 123 true TS: 4110911 set TS: 8344244 124 true TS: 4144244 set TS: 8344244 125 true TS: 4177577 set TS: 8344244 126 true TS: 4210911 set TS: 8344244 127 true TS: 4244244 set TS: 8344244 128 true TS: 4277577 set TS: 8344244 129 true TS: 4310911 set TS: 8344244 130 true TS: 4344244 set TS: 8344244 131 true TS: 4377577 set TS: 8344244 132 true TS: 4410911 set TS: 8344244 133 true TS: 4444244 set TS: 8344244 134 true TS: 4477577 set TS: 8344244 135 true TS: 4510911 set TS: 8344244 136 true TS: 4544244 set TS: 8344244 137 true TS: 4577577 set TS: 8344244 138 true TS: 4610911 set TS: 8344244 139 true TS: 4644244 set TS: 8344244 140 true TS: 4677577 set TS: 8344244 141 true TS: 4710911 set TS: 8344244 142 true TS: 4744244 set TS: 8344244 143 true TS: 4777577 set TS: 8344244 144 true TS: 4810911 set TS: 8344244 145 true TS: 4844244 set TS: 8344244 146 true TS: 4877577 set TS: 8344244 147 true TS: 4910911 set TS: 8344244 148 true TS: 4944244 set TS: 8344244 149 true TS: 4977577 set TS: 8344244 150 true TS: 5010911 set TS: 8344244 151 true TS: 5044244 set TS: 8344244 152 true TS: 5077577 set TS: 8344244 153 true TS: 5110911 set TS: 8344244 154 true TS: 5144244 set TS: 8344244 155 true TS: 5177577 set TS: 8344244 156 true TS: 5210911 set TS: 8344244 157 true TS: 5244244 set TS: 8344244 158 true TS: 5277577 set TS: 8344244 159 true TS: 5310911 set TS: 8344244 160 true TS: 5344244 set TS: 8344244 161 true TS: 5377577 set TS: 8344244 162 true TS: 5410911 set TS: 8344244 163 true TS: 5444244 set TS: 8344244 164 true TS: 5477577 set TS: 8344244 165 true TS: 5510911 set TS: 8344244 166 true TS: 5544244 set TS: 8344244 167 true TS: 5577577 set TS: 8344244 168 true TS: 5610911 set TS: 8344244 169 true TS: 5644244 set TS: 8344244 170 true TS: 5677577 set TS: 8344244 171 true TS: 5710911 set TS: 8344244 172 true TS: 5744244 set TS: 8344244 173 true TS: 5777577 set TS: 8344244 174 true TS: 5810911 set TS: 8344244 175 true TS: 5844244 set TS: 8344244 176 true TS: 5877577 set TS: 8344244 177 true TS: 5910911 set TS: 8344244 178 true TS: 5944244 set TS: 8344244 179 true TS: 5977577 set TS: 8344244 180 true TS: 6010911 set TS: 8344244 181 true TS: 6044244 set TS: 8344244 182 true TS: 6077577 set TS: 8344244 183 true TS: 6110911 set TS: 8344244 184 true TS: 6144244 set TS: 8344244 185 true TS: 6177577 set TS: 8344244 186 true TS: 6210911 set TS: 8344244 187 true TS: 6244244 set TS: 8344244 188 true TS: 6277577 set TS: 8344244 189 true TS: 6310911 set TS: 8344244 190 true TS: 6344244 set TS: 8344244 191 true TS: 6377577 set TS: 8344244 192 true TS: 6410911 set TS: 8344244 193 true TS: 6444244 set TS: 8344244 194 true TS: 6477577 set TS: 8344244 195 true TS: 6510911 set TS: 8344244 196 true TS: 6544244 set TS: 8344244 197 true TS: 6577577 set TS: 8344244 198 true TS: 6610911 set TS: 8344244 199 true TS: 6644244 set TS: 8344244 200 true TS: 6677577 set TS: 8344244 201 true TS: 6710911 set TS: 8344244 202 true TS: 6744244 set TS: 8344244 203 true TS: 6777577 set TS: 8344244 204 true TS: 6810911 set TS: 8344244 205 true TS: 6844244 set TS: 8344244 206 true TS: 6877577 set TS: 8344244 207 true TS: 6910911 set TS: 8344244 208 true TS: 6944244 set TS: 8344244 209 true TS: 6977577 set TS: 8344244 210 true TS: 7010911 set TS: 8344244 211 true TS: 7044244 set TS: 8344244 212 true TS: 7077577 set TS: 8344244 213 true TS: 7110911 set TS: 8344244 214 true TS: 7144244 set TS: 8344244 215 true TS: 7177577 set TS: 8344244 216 true TS: 7210911 set TS: 8344244 217 true TS: 7244244 set TS: 8344244 218 true TS: 7277577 set TS: 8344244 219 true TS: 7310911 set TS: 8344244 220 true TS: 7344244 set TS: 8344244 221 true TS: 7377577 set TS: 8344244 222 true TS: 7410911 set TS: 8344244 223 true TS: 7444244 set TS: 8344244 224 true TS: 7477577 set TS: 8344244 225 true TS: 7510911 set TS: 8344244 226 true TS: 7544244 set TS: 8344244 227 true TS: 7577577 set TS: 8344244 228 true TS: 7610911 set TS: 8344244 229 true TS: 7644244 set TS: 8344244 230 true TS: 7677577 set TS: 8344244 231 true TS: 7710911 set TS: 8344244 232 true TS: 7744244 set TS: 8344244 233 true TS: 7777577 set TS: 8344244 234 true TS: 7810911 set TS: 8344244 235 true TS: 7844244 set TS: 8344244 236 true TS: 7877577 set TS: 8344244 237 true TS: 7910911 set TS: 8344244 238 true TS: 7944244 set TS: 8344244 239 true TS: 7977577 set TS: 8344244 240 true TS: 8010911 set TS: 8344244 241 true TS: 8044244 set TS: 8344244 242 true TS: 8077577 set TS: 8344244 243 true TS: 8110911 set TS: 8344244 244 true TS: 8144244 set TS: 8344244 245 true TS: 8177577 set TS: 8344244 246 true TS: 8210911 set TS: 8344244 247 true TS: 8244244 set TS: 8344244 248 true TS: 8277577 set TS: 8344244 249 true TS: 8310911 set TS: 8344244 266 true TS: 8877577 set TS: 16677577 267 true TS: 8910911 set TS: 16677577 268 true TS: 8944244 set TS: 16677577 269 true TS: 8977577 set TS: 16677577 270 true TS: 9010911 set TS: 16677577 271 true TS: 9044244 set TS: 16677577 272 true TS: 9077577 set TS: 16677577 273 true TS: 9110911 set TS: 16677577 274 true TS: 9144244 set TS: 16677577 275 true TS: 9177577 set TS: 16677577 276 true TS: 9210911 set TS: 16677577 277 true TS: 9244244 set TS: 16677577 278 true TS: 9277577 set TS: 16677577 279 true TS: 9310911 set TS: 16677577 280 true TS: 9344244 set TS: 16677577 281 true TS: 9377577 set TS: 16677577 282 true TS: 9410911 set TS: 16677577 283 true TS: 9444244 set TS: 16677577 284 true TS: 9477577 set TS: 16677577 285 true TS: 9510911 set TS: 16677577 286 true TS: 9544244 set TS: 16677577 287 true TS: 9577577 set TS: 16677577 288 true TS: 9610911 set TS: 16677577 289 true TS: 9644244 set TS: 16677577 290 true TS: 9677577 set TS: 16677577 291 true TS: 9710911 set TS: 16677577 292 true TS: 9744244 set TS: 16677577 293 true TS: 9777577 set TS: 16677577 294 true TS: 9810911 set TS: 16677577 295 true TS: 9844244 set TS: 16677577 296 true TS: 9877577 set TS: 16677577 297 true TS: 9910911 set TS: 16677577 298 true TS: 9944244 set TS: 16677577 299 true TS: 9977577 set TS: 16677577 300 true TS: 10010911 set TS: 16677577 301 true TS: 10044244 set TS: 16677577 302 true TS: 10077577 set TS: 16677577 303 true TS: 10110911 set TS: 16677577 304 true TS: 10144244 set TS: 16677577 305 true TS: 10177577 set TS: 16677577 306 true TS: 10210911 set TS: 16677577 307 true TS: 10244244 set TS: 16677577 308 true TS: 10277577 set TS: 16677577 309 true TS: 10310911 set TS: 16677577 310 true TS: 10344244 set TS: 16677577 311 true TS: 10377577 set TS: 16677577 312 true TS: 10410911 set TS: 16677577 313 true TS: 10444244 set TS: 16677577 314 true TS: 10477577 set TS: 16677577 315 true TS: 10510911 set TS: 16677577 316 true TS: 10544244 set TS: 16677577 317 true TS: 10577577 set TS: 16677577 318 true TS: 10610911 set TS: 16677577 319 true TS: 10644244 set TS: 16677577 320 true TS: 10677577 set TS: 16677577 321 true TS: 10710911 set TS: 16677577 322 true TS: 10744244 set TS: 16677577 323 true TS: 10777577 set TS: 16677577 324 true TS: 10810911 set TS: 16677577 325 true TS: 10844244 set TS: 16677577 326 true TS: 10877577 set TS: 16677577 327 true TS: 10910911 set TS: 16677577 328 true TS: 10944244 set TS: 16677577 329 true TS: 10977577 set TS: 16677577 330 true TS: 11010911 set TS: 16677577 331 true TS: 11044244 set TS: 16677577 332 true TS: 11077577 set TS: 16677577 333 true TS: 11110911 set TS: 16677577 334 true TS: 11144244 set TS: 16677577 335 true TS: 11177577 set TS: 16677577 336 true TS: 11210911 set TS: 16677577 337 true TS: 11244244 set TS: 16677577 338 true TS: 11277577 set TS: 16677577 339 true TS: 11310911 set TS: 16677577 340 true TS: 11344244 set TS: 16677577 341 true TS: 11377577 set TS: 16677577 342 true TS: 11410911 set TS: 16677577 343 true TS: 11444244 set TS: 16677577 344 true TS: 11477577 set TS: 16677577 345 true TS: 11510911 set TS: 16677577 346 true TS: 11544244 set TS: 16677577 347 true TS: 11577577 set TS: 16677577 348 true TS: 11610911 set TS: 16677577 349 true TS: 11644244 set TS: 16677577 350 true TS: 11677577 set TS: 16677577 351 true TS: 11710911 set TS: 16677577 352 true TS: 11744244 set TS: 16677577 353 true TS: 11777577 set TS: 16677577 354 true TS: 11810911 set TS: 16677577 355 true TS: 11844244 set TS: 16677577 356 true TS: 11877577 set TS: 16677577 357 true TS: 11910911 set TS: 16677577 358 true TS: 11944244 set TS: 16677577 359 true TS: 11977577 set TS: 16677577 360 true TS: 12010911 set TS: 16677577 361 true TS: 12044244 set TS: 16677577 362 true TS: 12077577 set TS: 16677577 363 true TS: 12110911 set TS: 16677577 364 true TS: 12144244 set TS: 16677577 365 true TS: 12177577 set TS: 16677577 366 true TS: 12210911 set TS: 16677577 367 true TS: 12244244 set TS: 16677577 368 true TS: 12277577 set TS: 16677577 369 true TS: 12310911 set TS: 16677577 370 true TS: 12344244 set TS: 16677577 371 true TS: 12377577 set TS: 16677577 372 true TS: 12410911 set TS: 16677577 373 true TS: 12444244 set TS: 16677577 374 true TS: 12477577 set TS: 16677577 375 true TS: 12510911 set TS: 16677577 376 true TS: 12544244 set TS: 16677577 377 true TS: 12577577 set TS: 16677577 378 true TS: 12610911 set TS: 16677577 379 true TS: 12644244 set TS: 16677577 380 true TS: 12677577 set TS: 16677577 381 true TS: 12710911 set TS: 16677577 382 true TS: 12744244 set TS: 16677577 383 true TS: 12777577 set TS: 16677577 384 true TS: 12810911 set TS: 16677577 385 true TS: 12844244 set TS: 16677577 386 true TS: 12877577 set TS: 16677577 387 true TS: 12910911 set TS: 16677577 388 true TS: 12944244 set TS: 16677577 389 true TS: 12977577 set TS: 16677577 390 true TS: 13010911 set TS: 16677577 391 true TS: 13044244 set TS: 16677577 392 true TS: 13077577 set TS: 16677577 393 true TS: 13110911 set TS: 16677577 394 true TS: 13144244 set TS: 16677577 395 true TS: 13177577 set TS: 16677577 396 true TS: 13210911 set TS: 16677577 397 true TS: 13244244 set TS: 16677577 398 true TS: 13277577 set TS: 16677577 399 true TS: 13310911 set TS: 16677577 400 true TS: 13344244 set TS: 16677577 401 true TS: 13377577 set TS: 16677577 402 true TS: 13410911 set TS: 16677577 403 true TS: 13444244 set TS: 16677577 404 true TS: 13477577 set TS: 16677577 405 true TS: 13510911 set TS: 16677577 406 true TS: 13544244 set TS: 16677577 407 true TS: 13577577 set TS: 16677577 408 true TS: 13610911 set TS: 16677577 409 true TS: 13644244 set TS: 16677577 410 true TS: 13677577 set TS: 16677577 411 true TS: 13710911 set TS: 16677577 412 true TS: 13744244 set TS: 16677577 413 true TS: 13777577 set TS: 16677577 414 true TS: 13810911 set TS: 16677577 415 true TS: 13844244 set TS: 16677577 416 true TS: 13877577 set TS: 16677577 417 true TS: 13910911 set TS: 16677577 418 true TS: 13944244 set TS: 16677577 419 true TS: 13977577 set TS: 16677577 420 true TS: 14010911 set TS: 16677577 421 true TS: 14044244 set TS: 16677577 422 true TS: 14077577 set TS: 16677577 423 true TS: 14110911 set TS: 16677577 424 true TS: 14144244 set TS: 16677577 425 true TS: 14177577 set TS: 16677577 426 true TS: 14210911 set TS: 16677577 427 true TS: 14244244 set TS: 16677577 428 true TS: 14277577 set TS: 16677577 429 true TS: 14310911 set TS: 16677577 430 true TS: 14344244 set TS: 16677577 431 true TS: 14377577 set TS: 16677577 432 true TS: 14410911 set TS: 16677577 433 true TS: 14444244 set TS: 16677577 434 true TS: 14477577 set TS: 16677577 435 true TS: 14510911 set TS: 16677577 436 true TS: 14544244 set TS: 16677577 437 true TS: 14577577 set TS: 16677577 438 true TS: 14610911 set TS: 16677577 439 true TS: 14644244 set TS: 16677577 440 true TS: 14677577 set TS: 16677577 441 true TS: 14710911 set TS: 16677577 442 true TS: 14744244 set TS: 16677577 443 true TS: 14777577 set TS: 16677577 444 true TS: 14810911 set TS: 16677577 445 true TS: 14844244 set TS: 16677577 446 true TS: 14877577 set TS: 16677577 447 true TS: 14910911 set TS: 16677577 448 true TS: 14944244 set TS: 16677577 449 true TS: 14977577 set TS: 16677577 450 true TS: 15010911 set TS: 16677577 451 true TS: 15044244 set TS: 16677577 452 true TS: 15077577 set TS: 16677577 453 true TS: 15110911 set TS: 16677577 454 true TS: 15144244 set TS: 16677577 455 true TS: 15177577 set TS: 16677577 456 true TS: 15210911 set TS: 16677577 457 true TS: 15244244 set TS: 16677577 458 true TS: 15277577 set TS: 16677577 459 true TS: 15310911 set TS: 16677577 460 true TS: 15344244 set TS: 16677577 461 true TS: 15377577 set TS: 16677577 462 true TS: 15410911 set TS: 16677577 463 true TS: 15444244 set TS: 16677577 464 true TS: 15477577 set TS: 16677577 465 true TS: 15510911 set TS: 16677577 466 true TS: 15544244 set TS: 16677577 467 true TS: 15577577 set TS: 16677577 468 true TS: 15610911 set TS: 16677577 469 true TS: 15644244 set TS: 16677577 470 true TS: 15677577 set TS: 16677577 471 true TS: 15710911 set TS: 16677577 472 true TS: 15744244 set TS: 16677577 473 true TS: 15777577 set TS: 16677577 474 true TS: 15810911 set TS: 16677577 475 true TS: 15844244 set TS: 16677577 476 true TS: 15877577 set TS: 16677577 477 true TS: 15910911 set TS: 16677577 478 true TS: 15944244 set TS: 16677577 479 true TS: 15977577 set TS: 16677577 480 true TS: 16010911 set TS: 16677577 481 true TS: 16044244 set TS: 16677577 482 true TS: 16077577 set TS: 16677577 483 true TS: 16110911 set TS: 16677577 484 true TS: 16144244 set TS: 16677577 485 true TS: 16177577 set TS: 16677577 486 true TS: 16210911 set TS: 16677577 487 true TS: 16244244 set TS: 16677577 488 true TS: 16277577 set TS: 16677577 489 true TS: 16310911 set TS: 16677577 490 true TS: 16344244 set TS: 16677577 491 true TS: 16377577 set TS: 16677577 492 true TS: 16410911 set TS: 16677577 493 true TS: 16444244 set TS: 16677577 494 true TS: 16477577 set TS: 16677577 495 true TS: 16510911 set TS: 16677577 496 true TS: 16544244 set TS: 16677577 497 true TS: 16577577 set TS: 16677577 498 true TS: 16610911 set TS: 16677577 499 true TS: 16644244 set TS: 16677577 516 true TS: 17210911 set TS: 25010911 517 true TS: 17244244 set TS: 25010911 518 true TS: 17277577 set TS: 25010911 519 true TS: 17310911 set TS: 25010911 520 true TS: 17344244 set TS: 25010911 521 true TS: 17377577 set TS: 25010911 522 true TS: 17410911 set TS: 25010911 523 true TS: 17444244 set TS: 25010911 524 true TS: 17477577 set TS: 25010911 525 true TS: 17510911 set TS: 25010911 526 true TS: 17544244 set TS: 25010911 527 true TS: 17577577 set TS: 25010911 528 true TS: 17610911 set TS: 25010911 529 true TS: 17644244 set TS: 25010911 530 true TS: 17677577 set TS: 25010911 531 true TS: 17710911 set TS: 25010911 532 true TS: 17744244 set TS: 25010911 533 true TS: 17777577 set TS: 25010911 534 true TS: 17810911 set TS: 25010911 535 true TS: 17844244 set TS: 25010911 536 true TS: 17877577 set TS: 25010911 537 true TS: 17910911 set TS: 25010911 538 true TS: 17944244 set TS: 25010911 539 true TS: 17977577 set TS: 25010911 540 true TS: 18010911 set TS: 25010911 541 true TS: 18044244 set TS: 25010911 542 true TS: 18077577 set TS: 25010911 543 true TS: 18110911 set TS: 25010911 544 true TS: 18144244 set TS: 25010911 545 true TS: 18177577 set TS: 25010911 546 true TS: 18210911 set TS: 25010911 547 true TS: 18244244 set TS: 25010911 548 true TS: 18277577 set TS: 25010911 549 true TS: 18310911 set TS: 25010911 550 true TS: 18344244 set TS: 25010911 551 true TS: 18377577 set TS: 25010911 552 true TS: 18410911 set TS: 25010911 553 true TS: 18444244 set TS: 25010911 554 true TS: 18477577 set TS: 25010911 555 true TS: 18510911 set TS: 25010911 556 true TS: 18544244 set TS: 25010911 557 true TS: 18577577 set TS: 25010911 558 true TS: 18610911 set TS: 25010911 559 true TS: 18644244 set TS: 25010911 560 true TS: 18677577 set TS: 25010911 561 true TS: 18710911 set TS: 25010911 562 true TS: 18744244 set TS: 25010911 563 true TS: 18777577 set TS: 25010911 564 true TS: 18810911 set TS: 25010911 565 true TS: 18844244 set TS: 25010911 566 true TS: 18877577 set TS: 25010911 567 true TS: 18910911 set TS: 25010911 568 true TS: 18944244 set TS: 25010911 569 true TS: 18977577 set TS: 25010911 570 true TS: 19010911 set TS: 25010911 571 true TS: 19044244 set TS: 25010911 572 true TS: 19077577 set TS: 25010911 573 true TS: 19110911 set TS: 25010911 574 true TS: 19144244 set TS: 25010911 575 true TS: 19177577 set TS: 25010911 576 true TS: 19210911 set TS: 25010911 577 true TS: 19244244 set TS: 25010911 578 true TS: 19277577 set TS: 25010911 579 true TS: 19310911 set TS: 25010911 580 true TS: 19344244 set TS: 25010911 581 true TS: 19377577 set TS: 25010911 582 true TS: 19410911 set TS: 25010911 583 true TS: 19444244 set TS: 25010911 584 true TS: 19477577 set TS: 25010911 585 true TS: 19510911 set TS: 25010911 586 true TS: 19544244 set TS: 25010911 587 true TS: 19577577 set TS: 25010911 588 true TS: 19610911 set TS: 25010911 589 true TS: 19644244 set TS: 25010911 590 true TS: 19677577 set TS: 25010911 591 true TS: 19710911 set TS: 25010911 592 true TS: 19744244 set TS: 25010911 593 true TS: 19777577 set TS: 25010911 594 true TS: 19810911 set TS: 25010911 595 true TS: 19844244 set TS: 25010911 596 true TS: 19877577 set TS: 25010911 597 true TS: 19910911 set TS: 25010911 598 true TS: 19944244 set TS: 25010911 599 true TS: 19977577 set TS: 25010911 600 true TS: 20010911 set TS: 25010911 601 true TS: 20044244 set TS: 25010911 602 true TS: 20077577 set TS: 25010911 603 true TS: 20110911 set TS: 25010911 604 true TS: 20144244 set TS: 25010911 605 true TS: 20177577 set TS: 25010911 606 true TS: 20210911 set TS: 25010911 607 true TS: 20244244 set TS: 25010911 608 true TS: 20277577 set TS: 25010911 609 true TS: 20310911 set TS: 25010911 610 true TS: 20344244 set TS: 25010911 611 true TS: 20377577 set TS: 25010911 612 true TS: 20410911 set TS: 25010911 613 true TS: 20444244 set TS: 25010911 614 true TS: 20477577 set TS: 25010911 615 true TS: 20510911 set TS: 25010911 616 true TS: 20544244 set TS: 25010911 617 true TS: 20577577 set TS: 25010911 618 true TS: 20610911 set TS: 25010911 619 true TS: 20644244 set TS: 25010911 620 true TS: 20677577 set TS: 25010911 621 true TS: 20710911 set TS: 25010911 622 true TS: 20744244 set TS: 25010911 623 true TS: 20777577 set TS: 25010911 624 true TS: 20810911 set TS: 25010911 625 true TS: 20844244 set TS: 25010911 626 true TS: 20877577 set TS: 25010911 627 true TS: 20910911 set TS: 25010911 628 true TS: 20944244 set TS: 25010911 629 true TS: 20977577 set TS: 25010911 630 true TS: 21010911 set TS: 25010911 631 true TS: 21044244 set TS: 25010911 632 true TS: 21077577 set TS: 25010911 633 true TS: 21110911 set TS: 25010911 634 true TS: 21144244 set TS: 25010911 635 true TS: 21177577 set TS: 25010911 636 true TS: 21210911 set TS: 25010911 637 true TS: 21244244 set TS: 25010911 638 true TS: 21277577 set TS: 25010911 639 true TS: 21310911 set TS: 25010911 640 true TS: 21344244 set TS: 25010911 641 true TS: 21377577 set TS: 25010911 642 true TS: 21410911 set TS: 25010911 643 true TS: 21444244 set TS: 25010911 644 true TS: 21477577 set TS: 25010911 645 true TS: 21510911 set TS: 25010911 646 true TS: 21544244 set TS: 25010911 647 true TS: 21577577 set TS: 25010911 648 true TS: 21610911 set TS: 25010911 649 true TS: 21644244 set TS: 25010911 650 true TS: 21677577 set TS: 25010911 651 true TS: 21710911 set TS: 25010911 652 true TS: 21744244 set TS: 25010911 653 true TS: 21777577 set TS: 25010911 654 true TS: 21810911 set TS: 25010911 655 true TS: 21844244 set TS: 25010911 656 true TS: 21877577 set TS: 25010911 657 true TS: 21910911 set TS: 25010911 658 true TS: 21944244 set TS: 25010911 659 true TS: 21977577 set TS: 25010911 660 true TS: 22010911 set TS: 25010911 661 true TS: 22044244 set TS: 25010911 662 true TS: 22077577 set TS: 25010911 663 true TS: 22110911 set TS: 25010911 664 true TS: 22144244 set TS: 25010911 665 true TS: 22177577 set TS: 25010911 666 true TS: 22210911 set TS: 25010911 667 true TS: 22244244 set TS: 25010911 668 true TS: 22277577 set TS: 25010911 669 true TS: 22310911 set TS: 25010911 670 true TS: 22344244 set TS: 25010911 671 true TS: 22377577 set TS: 25010911 672 true TS: 22410911 set TS: 25010911 673 true TS: 22444244 set TS: 25010911 674 true TS: 22477577 set TS: 25010911 675 true TS: 22510911 set TS: 25010911 676 true TS: 22544244 set TS: 25010911 677 true TS: 22577577 set TS: 25010911 678 true TS: 22610911 set TS: 25010911 679 true TS: 22644244 set TS: 25010911 680 true TS: 22677577 set TS: 25010911 681 true TS: 22710911 set TS: 25010911 682 true TS: 22744244 set TS: 25010911 683 true TS: 22777577 set TS: 25010911 684 true TS: 22810911 set TS: 25010911 685 true TS: 22844244 set TS: 25010911 686 true TS: 22877577 set TS: 25010911 687 true TS: 22910911 set TS: 25010911 688 true TS: 22944244 set TS: 25010911 689 true TS: 22977577 set TS: 25010911 690 true TS: 23010911 set TS: 25010911 691 true TS: 23044244 set TS: 25010911 692 true TS: 23077577 set TS: 25010911 693 true TS: 23110911 set TS: 25010911 694 true TS: 23144244 set TS: 25010911 695 true TS: 23177577 set TS: 25010911 696 true TS: 23210911 set TS: 25010911 697 true TS: 23244244 set TS: 25010911 698 true TS: 23277577 set TS: 25010911 699 true TS: 23310911 set TS: 25010911 700 true TS: 23344244 set TS: 25010911 701 true TS: 23377577 set TS: 25010911 702 true TS: 23410911 set TS: 25010911 703 true TS: 23444244 set TS: 25010911 704 true TS: 23477577 set TS: 25010911 705 true TS: 23510911 set TS: 25010911 706 true TS: 23544244 set TS: 25010911 707 true TS: 23577577 set TS: 25010911 708 true TS: 23610911 set TS: 25010911 709 true TS: 23644244 set TS: 25010911 710 true TS: 23677577 set TS: 25010911 711 true TS: 23710911 set TS: 25010911 712 true TS: 23744244 set TS: 25010911 713 true TS: 23777577 set TS: 25010911 714 true TS: 23810911 set TS: 25010911 715 true TS: 23844244 set TS: 25010911 716 true TS: 23877577 set TS: 25010911 717 true TS: 23910911 set TS: 25010911 718 true TS: 23944244 set TS: 25010911 719 true TS: 23977577 set TS: 25010911 720 true TS: 24010911 set TS: 25010911 721 true TS: 24044244 set TS: 25010911 722 true TS: 24077577 set TS: 25010911 723 true TS: 24110911 set TS: 25010911 724 true TS: 24144244 set TS: 25010911 725 true TS: 24177577 set TS: 25010911 726 true TS: 24210911 set TS: 25010911 727 true TS: 24244244 set TS: 25010911 728 true TS: 24277577 set TS: 25010911 729 true TS: 24310911 set TS: 25010911 730 true TS: 24344244 set TS: 25010911 731 true TS: 24377577 set TS: 25010911 732 true TS: 24410911 set TS: 25010911 733 true TS: 24444244 set TS: 25010911 734 true TS: 24477577 set TS: 25010911 735 true TS: 24510911 set TS: 25010911 736 true TS: 24544244 set TS: 25010911 737 true TS: 24577577 set TS: 25010911 738 true TS: 24610911 set TS: 25010911 739 true TS: 24644244 set TS: 25010911 740 true TS: 24677577 set TS: 25010911 741 true TS: 24710911 set TS: 25010911 742 true TS: 24744244 set TS: 25010911 743 true TS: 24777577 set TS: 25010911 744 true TS: 24810911 set TS: 25010911 745 true TS: 24844244 set TS: 25010911 746 true TS: 24877577 set TS: 25010911 747 true TS: 24910911 set TS: 25010911 748 true TS: 24944244 set TS: 25010911 749 true TS: 24977577 set TS: 25010911 766 true TS: 25544244 set TS: 33344244 767 true TS: 25577577 set TS: 33344244 768 true TS: 25610911 set TS: 33344244 769 true TS: 25644244 set TS: 33344244 770 true TS: 25677577 set TS: 33344244 771 true TS: 25710911 set TS: 33344244 772 true TS: 25744244 set TS: 33344244 773 true TS: 25777577 set TS: 33344244 774 true TS: 25810911 set TS: 33344244 775 true TS: 25844244 set TS: 33344244 776 true TS: 25877577 set TS: 33344244 777 true TS: 25910911 set TS: 33344244 778 true TS: 25944244 set TS: 33344244 779 true TS: 25977577 set TS: 33344244 780 true TS: 26010911 set TS: 33344244 781 true TS: 26044244 set TS: 33344244 782 true TS: 26077577 set TS: 33344244 783 true TS: 26110911 set TS: 33344244 784 true TS: 26144244 set TS: 33344244 785 true TS: 26177577 set TS: 33344244 786 true TS: 26210911 set TS: 33344244 787 true TS: 26244244 set TS: 33344244 788 true TS: 26277577 set TS: 33344244 789 true TS: 26310911 set TS: 33344244 790 true TS: 26344244 set TS: 33344244 791 true TS: 26377577 set TS: 33344244 792 true TS: 26410911 set TS: 33344244 793 true TS: 26444244 set TS: 33344244 794 true TS: 26477577 set TS: 33344244 795 true TS: 26510911 set TS: 33344244 796 true TS: 26544244 set TS: 33344244 797 true TS: 26577577 set TS: 33344244 798 true TS: 26610911 set TS: 33344244 799 true TS: 26644244 set TS: 33344244 800 true TS: 26677577 set TS: 33344244 801 true TS: 26710911 set TS: 33344244 802 true TS: 26744244 set TS: 33344244 803 true TS: 26777577 set TS: 33344244 804 true TS: 26810911 set TS: 33344244 805 true TS: 26844244 set TS: 33344244 806 true TS: 26877577 set TS: 33344244 807 true TS: 26910911 set TS: 33344244 808 true TS: 26944244 set TS: 33344244 809 true TS: 26977577 set TS: 33344244 810 true TS: 27010911 set TS: 33344244 811 true TS: 27044244 set TS: 33344244 812 true TS: 27077577 set TS: 33344244 813 true TS: 27110911 set TS: 33344244 814 true TS: 27144244 set TS: 33344244 815 true TS: 27177577 set TS: 33344244 816 true TS: 27210911 set TS: 33344244 817 true TS: 27244244 set TS: 33344244 818 true TS: 27277577 set TS: 33344244 819 true TS: 27310911 set TS: 33344244 820 true TS: 27344244 set TS: 33344244 821 true TS: 27377577 set TS: 33344244 822 true TS: 27410911 set TS: 33344244 823 true TS: 27444244 set TS: 33344244 824 true TS: 27477577 set TS: 33344244 825 true TS: 27510911 set TS: 33344244 826 true TS: 27544244 set TS: 33344244 827 true TS: 27577577 set TS: 33344244 828 true TS: 27610911 set TS: 33344244 829 true TS: 27644244 set TS: 33344244 830 true TS: 27677577 set TS: 33344244 831 true TS: 27710911 set TS: 33344244 832 true TS: 27744244 set TS: 33344244 833 true TS: 27777577 set TS: 33344244 834 true TS: 27810911 set TS: 33344244 835 true TS: 27844244 set TS: 33344244 836 true TS: 27877577 set TS: 33344244 837 true TS: 27910911 set TS: 33344244 838 true TS: 27944244 set TS: 33344244 839 true TS: 27977577 set TS: 33344244 840 true TS: 28010911 set TS: 33344244 841 true TS: 28044244 set TS: 33344244 842 true TS: 28077577 set TS: 33344244 843 true TS: 28110911 set TS: 33344244 844 true TS: 28144244 set TS: 33344244 845 true TS: 28177577 set TS: 33344244 846 true TS: 28210911 set TS: 33344244 847 true TS: 28244244 set TS: 33344244 848 true TS: 28277577 set TS: 33344244 849 true TS: 28310911 set TS: 33344244 850 true TS: 28344244 set TS: 33344244 851 true TS: 28377577 set TS: 33344244 852 true TS: 28410911 set TS: 33344244 853 true TS: 28444244 set TS: 33344244 854 true TS: 28477577 set TS: 33344244 855 true TS: 28510911 set TS: 33344244 856 true TS: 28544244 set TS: 33344244 857 true TS: 28577577 set TS: 33344244 858 true TS: 28610911 set TS: 33344244 859 true TS: 28644244 set TS: 33344244 860 true TS: 28677577 set TS: 33344244 861 true TS: 28710911 set TS: 33344244 862 true TS: 28744244 set TS: 33344244 863 true TS: 28777577 set TS: 33344244 864 true TS: 28810911 set TS: 33344244 865 true TS: 28844244 set TS: 33344244 866 true TS: 28877577 set TS: 33344244 867 true TS: 28910911 set TS: 33344244 868 true TS: 28944244 set TS: 33344244 869 true TS: 28977577 set TS: 33344244 870 true TS: 29010911 set TS: 33344244 871 true TS: 29044244 set TS: 33344244 872 true TS: 29077577 set TS: 33344244 873 true TS: 29110911 set TS: 33344244 874 true TS: 29144244 set TS: 33344244 875 true TS: 29177577 set TS: 33344244 876 true TS: 29210911 set TS: 33344244 877 true TS: 29244244 set TS: 33344244 878 true TS: 29277577 set TS: 33344244 879 true TS: 29310911 set TS: 33344244 880 true TS: 29344244 set TS: 33344244 881 true TS: 29377577 set TS: 33344244 882 true TS: 29410911 set TS: 33344244 883 true TS: 29444244 set TS: 33344244 884 true TS: 29477577 set TS: 33344244 885 true TS: 29510911 set TS: 33344244 886 true TS: 29544244 set TS: 33344244 887 true TS: 29577577 set TS: 33344244 888 true TS: 29610911 set TS: 33344244 889 true TS: 29644244 set TS: 33344244 890 true TS: 29677577 set TS: 33344244 891 true TS: 29710911 set TS: 33344244 892 true TS: 29744244 set TS: 33344244 893 true TS: 29777577 set TS: 33344244 894 true TS: 29810911 set TS: 33344244 895 true TS: 29844244 set TS: 33344244 896 true TS: 29877577 set TS: 33344244 897 true TS: 29910911 set TS: 33344244 898 true TS: 29944244 set TS: 33344244 899 true TS: 29977577 set TS: 33344244 900 true TS: 30010911 set TS: 33344244 901 true TS: 30044244 set TS: 33344244 902 true TS: 30077577 set TS: 33344244 903 true TS: 30110911 set TS: 33344244 904 true TS: 30144244 set TS: 33344244 905 true TS: 30177577 set TS: 33344244 906 true TS: 30210911 set TS: 33344244 907 true TS: 30244244 set TS: 33344244 908 true TS: 30277577 set TS: 33344244 909 true TS: 30310911 set TS: 33344244 910 true TS: 30344244 set TS: 33344244 911 true TS: 30377577 set TS: 33344244 912 true TS: 30410911 set TS: 33344244 913 true TS: 30444244 set TS: 33344244 914 true TS: 30477577 set TS: 33344244 915 true TS: 30510911 set TS: 33344244 916 true TS: 30544244 set TS: 33344244 917 true TS: 30577577 set TS: 33344244 918 true TS: 30610911 set TS: 33344244 919 true TS: 30644244 set TS: 33344244 920 true TS: 30677577 set TS: 33344244 921 true TS: 30710911 set TS: 33344244 922 true TS: 30744244 set TS: 33344244 923 true TS: 30777577 set TS: 33344244 924 true TS: 30810911 set TS: 33344244 925 true TS: 30844244 set TS: 33344244 926 true TS: 30877577 set TS: 33344244 927 true TS: 30910911 set TS: 33344244 928 true TS: 30944244 set TS: 33344244 929 true TS: 30977577 set TS: 33344244 930 true TS: 31010911 set TS: 33344244 931 true TS: 31044244 set TS: 33344244 932 true TS: 31077577 set TS: 33344244 933 true TS: 31110911 set TS: 33344244 934 true TS: 31144244 set TS: 33344244 935 true TS: 31177577 set TS: 33344244 936 true TS: 31210911 set TS: 33344244 937 true TS: 31244244 set TS: 33344244 938 true TS: 31277577 set TS: 33344244 939 true TS: 31310911 set TS: 33344244 940 true TS: 31344244 set TS: 33344244 941 true TS: 31377577 set TS: 33344244 942 true TS: 31410911 set TS: 33344244 943 true TS: 31444244 set TS: 33344244 944 true TS: 31477577 set TS: 33344244 945 true TS: 31510911 set TS: 33344244 946 true TS: 31544244 set TS: 33344244 947 true TS: 31577577 set TS: 33344244 948 true TS: 31610911 set TS: 33344244 949 true TS: 31644244 set TS: 33344244 950 true TS: 31677577 set TS: 33344244 951 true TS: 31710911 set TS: 33344244 952 true TS: 31744244 set TS: 33344244 953 true TS: 31777577 set TS: 33344244 954 true TS: 31810911 set TS: 33344244 955 true TS: 31844244 set TS: 33344244 956 true TS: 31877577 set TS: 33344244 957 true TS: 31910911 set TS: 33344244 958 true TS: 31944244 set TS: 33344244 959 true TS: 31977577 set TS: 33344244 960 true TS: 32010911 set TS: 33344244 961 true TS: 32044244 set TS: 33344244 962 true TS: 32077577 set TS: 33344244 963 true TS: 32110911 set TS: 33344244 964 true TS: 32144244 set TS: 33344244 965 true TS: 32177577 set TS: 33344244 966 true TS: 32210911 set TS: 33344244 967 true TS: 32244244 set TS: 33344244 968 true TS: 32277577 set TS: 33344244 969 true TS: 32310911 set TS: 33344244 970 true TS: 32344244 set TS: 33344244 971 true TS: 32377577 set TS: 33344244 972 true TS: 32410911 set TS: 33344244 973 true TS: 32444244 set TS: 33344244 974 true TS: 32477577 set TS: 33344244 975 true TS: 32510911 set TS: 33344244 976 true TS: 32544244 set TS: 33344244 977 true TS: 32577577 set TS: 33344244 978 true TS: 32610911 set TS: 33344244 979 true TS: 32644244 set TS: 33344244 980 true TS: 32677577 set TS: 33344244 981 true TS: 32710911 set TS: 33344244 982 true TS: 32744244 set TS: 33344244 983 true TS: 32777577 set TS: 33344244 984 true TS: 32810911 set TS: 33344244 985 true TS: 32844244 set TS: 33344244 986 true TS: 32877577 set TS: 33344244 987 true TS: 32910911 set TS: 33344244 988 true TS: 32944244 set TS: 33344244 989 true TS: 32977577 set TS: 33344244 990 true TS: 33010911 set TS: 33344244 991 true TS: 33044244 set TS: 33344244 992 true TS: 33077577 set TS: 33344244 993 true TS: 33110911 set TS: 33344244 994 true TS: 33144244 set TS: 33344244 995 true TS: 33177577 set TS: 33344244 996 true TS: 33210911 set TS: 33344244 997 true TS: 33244244 set TS: 33344244 998 true TS: 33277577 set TS: 33344244 999 true TS: 33310911 set TS: 33344244

BUILD SUCCESSFUL in 1m 57s 4 actionable tasks: 3 executed, 1 up-to-date Input #0, mpegts, from 'C:\Users\zhaoyang\Desktop\ffmpegDemo\6.ts': Duration: 00:01:39.34, start: 0.000000, bitrate: 8670 kb/s Program 1 Metadata: service_name : Service01 service_provider: FFmpeg Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 30 fps, 30 tbr, 90k tbn Stream #0:10x101: Audio: mp2 ([3][0][0][0] / 0x0003), 44100 Hz, stereo, fltp, 384 kb/s 11:33:49: 执行完成 ':TestTs.main()'。

anotherche commented 7 months ago

Thank you! Yes, exactly what I suspected is happening. In this case, only the first 15 frames after every keyframe are selected correctly. And when trying to set the next frames, the avformat_seek_file function for some reason starts the seeking by setting the next keyframe. That's why the setTimestamp function returns it immediately (you can see that all incorrect returned frames are keyframes located after the requested frame). Actually, this contradicts what the avformat_seek_file function should do according to its documentation: it should set the keyframe located before the requested one. But sometimes (and in this case almost always) it jumps to the frame located downstream. I need some time to figure out how to prevent this behavior.

anotherche commented 7 months ago

@Aismy, can you try with this test javacv.jar (change the extension to jar)?

Aismy commented 7 months ago

Thank you, after my test, using this jar file can handle ts format video properly. Did you change any code, should I wait for the new version of javacv or just use this jar file you gave me on the production environment?

anotherche commented 7 months ago

Yes, I changed setTimestamp code. It need now massive testing before PR. It would be nice if you test other types of video with this. (BTW, I removed the uploaded test file from the message, because it's not very good to leave it here.)

Aismy commented 7 months ago

Okay. I got it. Thank you.

anotherche commented 7 months ago

Hmm... I've found that ffmpeg can't seek to the correct frame by timestamp in .ts files either (and probably in other file types too). Its behavior is exactly the same as in javacv actually, because the seek code uses the very avformat_seek_file function for the initial jump exactly the same way. You can check this for yourself. To test it, I used this .ts sample First run the command to select a frame by number (I chose a random number n=2000): ffmpeg -i .\sample_1280x720_surfing_with_audio.ts -vf "select=eq(n\,2000)" -vframes 1 out.png Note that this command is not a seek, it reads the frames of the file sequentially and selects the frame with the given sequence number.

Now, if you try to jump to this frame by timestamp, the exact seek does not work. For example, for timestamp 1:23.265 we get frame 1997 ffmpeg -ss 00:01:23.265 -i .\sample_1280x720_surfing_with_audio.ts -frames:v 1 out1.png

while at 1:23.266 we get frame 2005. ffmpeg -ss 00:01:23.266 -i .\sample_1280x720_surfing_with_audio.ts -frames:v 1 out2.png

That is, by requesting only 1 ms later frame timestamp, we get a shift by 8 frames (at fps 23.98 this corresponds to 333 ms difference between them). And this result is again due to avformat_seek_file jumps to a keyframe located downstream.

So I can see that in reality ffmpeg makes the same seek error as javacv. And this is not surprising since javacv uses the same procedure as ffmpeg. But using a trick I came up with, we will solve this problem and make the seek in javacv even more accurate than in ffmpeg ;-)

Aismy commented 7 months ago

ok, thanks for your hard work, looking forward to fixing this in a new version!

saudet commented 5 months ago

Please try again with the snapshots: http://bytedeco.org/builds/

saudet commented 5 months ago

Fix released in JavaCV 1.5.10. Enjoy and thanks for reporting!