두 개의 무손실 오디오 파일을 비교하는 방법은 무엇입니까?

두 개의 무손실 오디오 파일을 비교하는 방법은 무엇입니까?

FLAC 파일로 변환된 M4A 파일이 있습니다. 변환이 무손실인지, 즉 M4A에서 pcm으로의 출력이 FLAC 디코딩의 출력과 정확히 동일한지 확인하고 싶습니다.

FFmpeg 또는 Libav를 사용하여 "원시" 출력을 생성하고 비교하는 방법이 있다고 가정합니까?

답변1

둘 다 WAV로 변환하고 체크섬을 비교해 보겠습니다.

ffmpeg -i file1.m4a file1.wav
ffmpeg -i file2.flac file2.wav
md5sum file1.wav
md5sum file2.wav
rm file?.wav

생성된 md5를 비교해보세요. 일치한다면 축하합니다! 귀하의 파일에는 동일한 데이터가 포함되어 있습니다. 일치하지 않는 경우 해당 명령의 출력을 여기에 게시하면 확인해 보겠습니다. 잠재적으로 비트 전송률 차이가 있을 수 있습니다(있을 필요는 없지만... 있을 수도 있습니다. 모르겠습니다.)

s ffmpeg는 비교적 큰 중간 파일을 생성합니다.

답변2

당신은 사용할 수 있습니다해시 먹서디코딩된 미디어의 체크섬을 생성합니다. 파일을 변환할 필요가 없으며 독립 실행형 합계 도구가 잘못된 차이를 보고하게 만드는 메타데이터나 기타 요인의 영향을 받지 않습니다.

WAV → FLAC 비교 예. FLAC은 무손실이므로 해시는 동일해야 합니다.

$ ffmpeg -loglevel error -i input.wav output.flac

$ ffmpeg -loglevel error -i input.wav -map 0 -f hash -
  SHA256=c1acb198952f5c341190ffb62eeafe4f10c8f48c67a188e25087471a74eaa957

$ ffmpeg -loglevel error -i output.flac -map 0 -f hash -
  SHA256=c1acb198952f5c341190ffb62eeafe4f10c8f48c67a188e25087471a74eaa957
  • 이용 가능한 곳이 많이 있습니다해시 알고리즘에서 고르다. 일부는 다른 것보다 빠릅니다. -hash와 같은 옵션을 사용하여 알고리즘을 선택할 수 있습니다 -hash md5.

  • -map 0예제에서는 모든 스트림을 체크섬에 포함시키기 위해 사용되었습니다. 그것 없이는기본 스트림 선택 동작스트림 유형당 하나의 스트림만 선택합니다. 특정 스트림을 제외/포함하려면 -map스트림 지정자와 함께 옵션을 사용하세요. 예를 들어 모든 비디오를 제외하려면 을 사용하여 네거티브 매핑을 사용하고 -map -0:v, 오디오만 포함하려면 을 사용 -map 0:a하고, 세 번째 오디오 스트림만 포함하려면 을 사용합니다 -map 0:a:2.

  • 그만큼스트림해시 먹서해시와 유사하지만 비디오용 해시, 오디오용 해시 등 스트림당 해시를 출력합니다. 다시 말하지만, 를 추가하지 않는 한 기본 스트림 선택 동작도 사용됩니다 -map.

  • 각 개별 프레임/패킷을 비교하려면 다음을 사용하십시오.프레임해시 먹서.

답변3

오디오 스펙트럼을 시각화한 다음 두 스펙트럼을 나란히 비교할 수 있습니다.

필터 를 사용하여 이를 수행하는 방법은 다음과 같습니다 showcqt.

ffmpeg -i "video_file_with_audio.mkv"  -i "alternative_audio.m4a" \
        -filter_complex "[0:a]asplit[a1][ao];
              [a1]volume=1.2,showcqt=fps=23.976:s=480x1080:count=3:axis=0:axis_h=30:bar_h=100:basefreq=200:endfreq=12495[vfreq1];
              [1:a]showcqt=fps=23.976:s=480x1080:count=3:axis=0:axis_h=30:bar_h=100:basefreq=200:endfreq=12495[vfreq2];
              [vid1]fps=23.976,scale=-1:1080[v1];[v1][vfreq1][vfreq2]hstack=3[vo]" \
        -map "[vo]" -map "[ao]"  output.mp4

이는 오디오가 포함된 비디오와 해당 비디오에 대한 대체 오디오가 있다고 가정합니다.

이것 좀 봐showcqt 나란히 있는 스크린샷

관련 정보