VLC 및 다른 플레이어가 충돌하지 않도록 ffmpeg로 잘못된 파일 및 스트림 수정


17

손상된 비디오 파일로 끝날 수있는 여러 번 일어났습니다.

  • 공식 출처에서 다운로드했지만 토런트가있는 비디오 및 어떤 이유로 든 모든 부분이 .mkv, .ts 또는 .mp4에있는 것은 아닙니다.
  • 특정 시점에서 데이터가 누락 된 .ts 형식의 레코드
  • 손상된 섹터를 가진 오래된 하드 드라이브에서 비디오를 복사

이 비디오를 VLC 또는 다른 플레이어와 함께 재생하면 특정 지점까지 재생 된 다음 즉시 종료됩니다. 때때로 나는 나쁜 부분을 건너 뛰려고 노력할 수 있지만 다른 나쁜 부분을 만나고 다시 멈출 수 있습니다.

질문은 :

ffmpeg 및 아마도 -c 복사 방식 으로이 문제 (스트림 및 키 프레임과 관련이 있다고 가정)를 해결할 수 있습니까? 그래서 모든 것을 다시 압축하지 않아도됩니까?

내가 달성하고자하는 것은 누락 된 부분을 건너 뛰는 전체 길이의 비디오입니다. 비디오가 충돌하는 대신 글리치를 선호합니다.


답변:


26

파일의 일부가 물리적으로 불량 섹터에 있거나 어떤 이유로 OS가 전체 파일을 FFmpeg에 제공 할 수없는 경우 당연히 FFmpeg는 이에 대해 아무 것도 할 수 없습니다. 해당 부분을 무시하고 복구 가능한 부분을 ddrescue 와 같은 새 파일에 쓸 수있는 유틸리티를 가져와야 합니다.

이제 파일 프로토콜이 오류의 원인이 아닌 경우 시도해 볼 수 있습니다

ffmpeg -err_detect ignore_err -i video.mkv -c copy video_fixed.mkv

1
이 작동하지만가 없으면 실패합니다 -c copy. 레코딩 중에는 작동하지 않습니다.
— intuited

그럼에도 불구하고, 나는 여전히 얻고 Invalid data found when processing input있으며 ffmpeg는 포기합니다.
— Mikhail T.

좋은 해결책 ... MP4 파일의 moov atom이 여전히 어딘가에 있다면. 거기에도 없으면 어떻게합니까?
— 기네스 Llewelyn

그것은 놀랍게도 선한
— 일로

5

더 나은 답변을 찾기 위해 가능한 방법은 다음과 같습니다.

ffmpeg -i video.mkv -c copy video_fixed.mkv

그러나 결과가 더 나아질 수있는 몇 가지 추가 옵션이 있다고 확신합니다.


1
메타 데이터, 타임 스탬프 또는 컨테이너 정보에 문제가있을 때마다 작동합니다. 그리고 그것은 매우 빠르며 보통 400x 재생 속도보다 빠릅니다.
— user24601 2016 년

이 명령으로 솔직히 엉덩이를 구했습니다.
— neverMind9
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.