우분투에서 ffmpeg를 사용하여 해독된 .vobs를 .avi로 변환

우분투에서 ffmpeg를 사용하여 해독된 .vobs를 .avi로 변환

DVD에서 찢어진 .vob 파일이 있습니다. .vob를 볼 때 매우 좋은 품질의 비디오와 5.1 영어 오디오가 있지만 ffmpeg를 사용하면 쓰레기 비디오와 모노 프랑스어 오디오가 있습니다.

그것은 다음 명령을 사용하고 있었습니다:

ffmpeg -i /samba/ripping/vobs/12161840#2.vob -f avi /samba/ripping/avis/test.avi

나는 그것에 대해 몇 가지 다른 변형을 시도했지만 나쁜 비디오와 잘못된 사운드가 있는 더 큰 파일만 좋은 것으로 돌아오지 않았습니다.

나는 비디오가 좋고 올바른 오디오 스트림이 존재한다는 것을 알고 있습니다. 5.1 트랙을 선택하고 좋은 비디오를 얻으려면 어떻게 해야 합니까?

ffmpeg는 .vob 세부 정보를 다음과 같이 제공합니다.

Input #0, mpeg, from '/samba/ripping/vobs/12161840#2.vob':
   Duration: 00:42:05.56, start: 0.287267, bitrate: 5738 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video, yuv420p, 720x576 [PAR 64:45 DAR 16:9], 8436 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0.1[0x80]: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
    Stream #0.2[0x81]: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
    Stream #0.3[0x82]: Audio: ac3, 48000 Hz, mono, s16, 192 kb/s
Output #0, avi, to '/samba/ripping/avis/test.avi':
  Metadata:
    ISFT            : Lavf52.64.2
    Stream #0.0: Video: mpeg4, yuv420p, 720x576 [PAR 64:45 DAR 16:9], q=2-31, 200 kb/s, 25 tbn, 25 tbc
    Stream #0.1: Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
Stream mapping:
   Stream #0.0 -> #0.0
   Stream #0.3 -> #0.1

답변1

기본 인코딩 옵션은 낮습니다. 예를 들어 오디오 비트 전송률은 64k입니다. 추가 명령줄 옵션을 사용하여 이러한 값을 늘릴 수 있습니다.

ffmpeg -i sourcefile.vob -ab 128kb -qscale 4 newfile.avi

-ab 128kb평균 오디오 비트 전송률을 128kb로 설정하고 -qscale 3비디오 양자화기 스케일을 설정합니다. 여기서 q는 1(최고) 또는 31(최악) 품질입니다.

비교를 위해 128kb 오디오가 포함된 700x576 해상도의 5분짜리 비디오:

  • q 10 = ~40MB
  • q 4 = ~80MB

이 또 다른 단계를 수행하면 다음 bash 명령을 사용하여 디렉토리에 있는 전체 vob을 일괄 변환할 수 있습니다.

for f in *.vob; do ffmpeg -i "$f" -ab 128kb -qscale 4 "${f%%.vob}.avi"; done;

파일 이름에 공백이 있는 경우 $f를 따옴표로 묶고 ${f%%.vob}는 자체 avi 확장자를 추가하기 전에 vob 확장자를 제거합니다. (이것은 bash의 매개변수 대체이므로 매우 유용합니다!http://tldp.org/LDP/abs/html/parameter-substitution.html)

다음에서 읽을 수 있는 더 많은 옵션이 있습니다.http://www.ffmpeg.org/ffmpeg-doc.html

관련 정보