나는 내 파일을 고칠 수 있었다. 나는 mpdecimate
필터는 비디오 스트림에서 중복되거나 거의 중복 된 프레임을 삭제합니다. 먼저 내가 시도 :
ffmpeg -loglevel debug -i orig.mp4 -an -vf "mpdecimate" test.mp4
나는 추가했다. -loglevel debug
트랜스 코딩 중에 더 많은 정보를 얻으려면. 정보는 mpdecimate
이 패턴이 많고 많은 프레임을 가지고 일을하고있었습니다.
lo:0<217 lo:0<-2147483648 lo:0<-2147483648 drop pts:44032 pts_time:3.44 drop_count:1
lo:0<217 lo:0<-2147483648 lo:0<-2147483648 drop pts:44544 pts_time:3.48 drop_count:2
lo:0<217 lo:0<-2147483648 lo:0<-2147483648 drop pts:45056 pts_time:3.52 drop_count:3
lo:0<217 lo:0<-2147483648 lo:0<-2147483648 drop pts:45568 pts_time:3.56 drop_count:4
781>=hi keep pts:46080 pts_time:3.6 drop_count:-1
lo:0<217 lo:0<-2147483648 lo:0<-2147483648 drop pts:46592 pts_time:3.64 drop_count:1
lo:0<217 lo:0<-2147483648 lo:0<-2147483648 drop pts:47104 pts_time:3.68 drop_count:2
lo:0<217 lo:0<-2147483648 lo:0<-2147483648 drop pts:47616 pts_time:3.72 drop_count:3
lo:0<217 lo:0<-2147483648 lo:0<-2147483648 drop pts:48128 pts_time:3.76 drop_count:4
821>=hi keep pts:48640 pts_time:3.8 drop_count:-1
lo:0<217 lo:0<-2147483648 lo:0<-2147483648 drop pts:49152 pts_time:3.84 drop_count:1
lo:0<217 lo:0<-2147483648 lo:0<-2147483648 drop pts:49664 pts_time:3.88 drop_count:2
lo:0<217 lo:0<-2147483648 lo:0<-2147483648 drop pts:50176 pts_time:3.92 drop_count:3
lo:0<217 lo:0<-2147483648 lo:0<-2147483648 drop pts:50688 pts_time:3.96 drop_count:4
793>=hi keep pts:51200 pts_time:4 drop_count:-1
즉, 연속적으로 4 개의 프레임을 중복으로 삭제하고 매 5 초마다 유지하는 것이 었습니다. 이것은 원래의 프레임 속도가 현재의 1/5임을 보여 줬습니다. 나는 운이 좋았다! 비디오의 현재 25fps는 원래 프레임 속도의 배수이기 때문에 유지되고 끊어진 프레임의 일시적인 정렬이 잘못되어서는 안됩니다. 따라서 원본 비디오를 -vf "fps=5"
, 그리고 출력은 괜찮은 것 같았다. 확실하게, 나는 출력을 통해 mpdecimate
필터를 사용하고 나머지 모든 프레임을 "유지"로 감지했습니다. 그래서 원본 파일은 내가 생각한 것처럼 엉망이되지 않았습니다.