FFmpeg / avidemux : 고정 포장 B 프레임


12

FFmpeg를 사용하여 오래된 mpeg4 비디오 (avi 컨테이너)를 h.264로 트랜스 코딩하고 있습니다. 원래

ffmpeg -i input.avi -c:v libx264 [x264 settings] -c:a libfdk_aac [aac settings] output.mp4

그렇게 할 때 mpeg4다음 경고를 발행합니다

비디오는 비표준적이고 낭비적인 방법으로 B- 프레임 ( '포장 된 B- 프레임')을 저장합니다. VirtualDub 또는 avidemux와 같은 도구를 사용하여 문제를 해결해보십시오.

그래도 코드를 성공적으로 변환 할 수는 있지만 결과적으로 h.264 비디오의 품질이 영향을 받는지 여부는 확실하지 않습니다 .

그래서,

  • veryslow출력 된 b.264 비디오 의 품질 (및 크기, 모바일 장치의 크기를 최소화하고 싶기 때문에 사전 설정을 사용하는 이유 ) 만 신경 쓰면 B- 프레임?

  • 필요한 경우 avidemux로 어떻게 수정합니까? (나는 이미 매뉴얼을 통해 스키밍을 시도했다.)

답변:


15

B- 프레임은 비디오의 프레임을 나타 내기 위해 비디오 압축에 사용되는 프레임 유형 입니다. B- 프레임은 이전 및 미래 프레임의 정보를 사용하여 각 비디오 프레임을 나타낼 수 있습니다.

오래된 DivX로 인코딩 된 비디오는 일반적으로 여러 비트 비디오 프레임을 하나의 AVI 청크에 넣는 압축 비트 스트림 이라는 못생긴 방법을 사용합니다 . 압축 비트 스트림은 표준 MPEG-4가 아니며, 더 많은 공간을 사용하며, 인코딩 / 디코딩에 더 많은 CPU 전력이 필요하며, 다른 컨테이너 유형으로 복사 될 경우 문제가 발생할 수 있습니다. 이것이 경고의 주된 이유입니다.

비디오를 복사하는 대신 비디오를 다시 인코딩하므로 괜찮을 것입니다. 원본 비디오를 유지하고 싶지만 다른 유형의 컨테이너 (예 : MP4 또는 MKV)에 복사하려면 먼저 FFmpeg 필터를 사용하여 B 프레임의 포장을 푸는 것이 가장 좋습니다 mpeg4_unpack_bframes.

다음과 같은 간단한 방법으로 B 프레임의 포장을 풀 수 있습니다.

ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.