Làm cách nào để chuyển đổi tập tin VOB sang avi?


10

Tôi đang cố gắng chuyển đổi tệp VOB được sao chép từ DVD sang avi trong Ubuntu 13.10. Tôi đã thử dvdrip, không thành công do lỗi đếm khung hình hoặc một cái gì đó. Tôi cũng đã thử dùng acidrip, nhưng nó luôn chọn một đoạn âm thanh mà tôi không muốn sử dụng. Tôi muốn có một giải pháp dòng lệnh để tạo một avi với các tính năng sau:

  • có thể sử dụng với mplayer (tức là sử dụng các chức năng bước)
  • với phụ đề theo yêu cầu (hoặc không có ai cả)
  • với bản nhạc chính xác
  • với video và âm thanh đồng bộ

Tôi đã thử một số ffmpegavconvcác lệnh và quản lý để tạo ra một avi, nhưng đoạn video và âm thanh đã hoàn toàn mất đồng bộ. Vậy tôi nên sử dụng tùy chọn nào để chuyển đổi tệp VOB thành tệp avi?

Tôi sẽ đánh giá cao một số giải thích về các lựa chọn được đề xuất!

Thông tin thêm:

  1. Các ffmpeglệnh cho đầu ra sau đây cho các tập tin đầu vào

    Input #0, mpeg, from 'Videos/Test/VIDEO_TS/VTS_01_1.VOB':
      Duration: 00:04:53.32, start: 0.045500, bitrate: 29284 kb/s
        Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [PAR 8:9 DAR 4:3], 7500 kb/s, 27.68 fps, 59.94 tbr, 90k tbn, 59.94 tbc
        Stream #0.1[0x82]: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
        Stream #0.2[0x80]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
        Stream #0.3[0x81]: Audio: ac3, 0 channels
    [buffer @ 0x15ca6e0] w:720 h:480 pixfmt:yuv420p
    
  2. Lệnh sau

    ffmpeg -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -ss 589 -t 274 -sameq -acodec copy -ab 320k output.avi
    

    ví dụ dẫn đến sự cố của phiên Ubuntu của tôi.

  3. Lệnh sau

    avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -acodec copy -vcodec copy output.avi
    

    ví dụ dẫn đến lỗi sau:

    Application provided invalid, non monotonically increasing dts to muxer in stream 1: 374 >= 374
    av_interleaved_write_frame(): Invalid argument
    
  4. Lệnh sau

    avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k output.avi
    

    ví dụ dẫn đến lỗi sau:

    Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
    
  5. Lệnh sau

    avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a ac3 -b:a 128k output.avi
    

    ví dụ dường như làm việc cho một số khung. Nhưng rất nhanh tôi đã gặp nhiều lỗi về hình thức

    [ac3 @ 0x120d480] frame sync error
    Error while decoding stream #0:1
    frame CRC mismatch
    
  6. Lệnh sau

    mencoder Videos/Test/VIDEO_TS/VTS_01_1.VOB -oac copy -ovc x264 -x264encopts bitrate=2500 -o output.avi
    

    đã thực hiện một số chuyển đổi, nhưng (i) sử dụng phụ đề mặc dù tôi không muốn sử dụng chúng (ii) đã sai âm thanh (âm thanh và video bị thất lạc khủng khiếp) và (iii) dường như chậm hơn so với phim thực sự (có thể mất 2 giờ cho một bộ phim 90 phút).

  7. Tôi đã cố gắng ra lệnh ở đây (bài thứ ba từ Xeratul), nhưng nó đã dừng với lỗi

    FATAL: Cannot initialize video driver.
    
  8. Tôi đã thử đề xuất dưới đây để xem trang mencoder . Trang này gợi ý sử dụng hai lượt:

    lần đầu tiên đọc thông tin về bộ phim, lần thứ hai sử dụng thông tin đó để mã hóa.

    nhưng không giải thích được thông tin nào cần trích xuất cũng như cách sử dụng chúng trong lần chuyển thứ hai. Vì vậy, tôi đã sử dụng lệnh sau:

    mencoder Videos/Test/VIDEO_TS/VTS_01_1.VOB -nosound -ovc x264 \
    -x264encopts direct=auto:pass=2:bitrate=900:frameref=5:bframes=1:\
    me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
    -vf scale=-1:-10,harddup -o video.avi
    

    đã chuyển đổi video, nhưng với một phụ đề không mong muốn. Không rõ ràng về cách tôi có thể tránh sử dụng phụ đề.


ffmpegkhông được dùng nữa từ lâu, bạn phải sử dụng người kế vị của nó : avconv.
user2485710

Vậy làm thế nào để sử dụng avconvsau đó để chuyển đổi tập tin VOB sang avi. Lệnh avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -acodec copy -vcodec copy test.aviđã báo lỗi Application provided invalid, non monotonically increasing dts to muxer in stream 1: 374 >= 374 av_interleaved_write_frame(): Invalid argument...
Alex

có một ví dụ trong trang dành cho avconv, đối với các tệp VOB đã được giải mã, avconv -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.avihãy thử điều này
user2485710

Điều này gây ra lỗiError while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
Alex

Hãy thử mencoder yourvob -oac copy -ovc x264 -x264encopts pass=1:preset=veryslow:fast_pskip=0:tune=film:frameref=15:bitrate=3000:threads=auto -nosub -o /dev/nullsau đó mencoder yourvob -oac copy -ovc x264 -x264encopts pass=2:preset=veryslow:fast_pskip=0:tune=film:frameref=15:bitrate=3000:threads=auto -nosub -o video.avi- lấy phần đó từ Arch doc @ dg99 được liên kết.

Câu trả lời:


6

Để thoát khỏi phụ đề, tôi tin rằng bạn có thể thêm công -nosubtắc, ngay sau tên tệp .VOB.

Thí dụ

$ mencoder Videos/Test/VIDEO_TS/VTS_01_1.VOB -nosub -nosound -ovc x264 \
-x264encopts direct=auto:pass=2:bitrate=900:frameref=5:bframes=1:\
me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
-vf scale=-1:-10,harddup -o video.avi

Chi tiết

Những câu thần chú này thường rất dày đặc vì vậy để phá vỡ cái này xuống một chút

  • tập tin đầu vào: Videos/Test/VIDEO_TS/VTS_01_1.VOB
  • tập tin đầu ra: -o video.avi
  • không có phụ đề: -nosub
  • không mã hóa âm thanh: -nosound
  • mã hóa với codec đã cho: -ovc x264

danh sách các codec khác

$ mencoder -ovc help
MEncoder SVN-r36171-4.8.1 (C) 2000-2013 MPlayer Team

Available codecs:
   copy     - frame copy, without re-encoding. Doesn't work with filters.
   frameno  - special audio-only file for 3-pass encoding, see DOCS.
   raw      - uncompressed video. Use fourcc option to set format explicitly.
   nuv      - nuppel video
   lavc     - libavcodec codecs - best quality!
   libdv    - DV encoding with libdv v0.9.5
   xvid     - XviD encoding
   x264     - H.264 encoding
  • Tùy chọn mã hóa x264: x264encopts
  • thiết lập chế độ cho vectơ chuyển động trực tiếp :direct=auto
  • số lần vượt qua :pass=2
  • bitrate mã hóa mục tiêu: bitrate=900
  • trước các khung được sử dụng làm công cụ dự đoán trong các khung B và P (def: 3):frameref=5
  • đồng thời # của khung B: bframes=1
  • ước tính chuyển động fullpixel alg.: me=umh

    LƯU Ý: umh - tìm kiếm nhiều hình lục giác không đồng đều (chậm)

  • cho phép tất cả các loại macroblock: partitions=all

  • lượng tử tối ưu hóa biến dạng tỷ lệ: trellis=1

    LƯU Ý: 2 - được bật trong tất cả các quyết định chế độ (chậm, yêu cầu subq> = 6)

  • giá trị tăng / giảm lượng tử: qp_step=4

    LƯU Ý: giá trị tối đa mà theo đó bộ lượng tử hóa có thể được tăng / giảm giữa các khung (mặc định: 4)

  • nén lượng tử hóa (mặc định: 0,6): qcomp=0.7

  • dự đoán chuyển động cho các macroblocks trong khung B: direct_pred=auto
  • khoảng cách tối đa giữa các khung hình chính trong khung: keyint=300

  • tùy chọn sau đây là bộ lọc video: -vf

GHI CHÚ: Đối với các bộ chuyển đổi bộ lọc video, điều quan trọng là bạn sử dụng hardduplàm bộ lọc cuối cùng: nó sẽ buộc MEncoder ghi mọi khung hình (ngay cả các khung trùng lặp) vào đầu ra. Ngoài ra, nó là cần thiết để sử dụng scale=$WIDTH,-10với $WIDTHnhư -1để giữ chiều rộng ban đầu hoặc mới, thường nhỏ, chiều rộng: nó là cần thiết kể từ khi H.264 codec sử dụng các pixel vuông và DVD thay vì sử dụng pixel hình chữ nhật.

  • scale=-1
  • -10
  • harddup

Cảm ơn bạn rất nhiều vì ví dụ này được giải thích rõ về cách lấy video. Lệnh được đề xuất của bạn dường như hoạt động hoàn hảo để trích xuất video. Tuy nhiên, bây giờ tôi không có âm thanh. Nếu tôi sử dụng lệnh của bạn mà không có -noaudio-oac copytôi nhận được âm thanh không đồng bộ với video. Nó hoặc là di dời, ở một tốc độ khác nhau hoặc cả hai. Bất kỳ đề nghị làm thế nào tôi có thể nhận được âm thanh chính xác? Và những gì về nhiều tập tin VOB? Làm cách nào để đóng gói nội dung vào một .avitệp duy nhất (hoặc định dạng khác)?
Alex

@Alex - chỉ là một ý nghĩ, nhưng tôi không nghĩ rằng bạn chỉ có thể thực hiện một lần -oac copyvới 2 lần, vì bạn đang mã hóa lại video, bạn sẽ phải mã hóa lại âm thanh cùng với nó. Để "đóng gói" chúng, các tập tin vob nên được hợp nhất như thế này : cat *.vob all.vob. Sau đó sử dụng all.vobtrong cmd mencoder. Có nhiều cách khác để làm điều này quá.
slm

3

Nếu bạn có ý định sử dụng mplayer, thì bạn nên thử mencoder( http://www.mplayerhq.hu ). Một trong những tính năng tốt nhất của nó là các tùy chọn phát lại mà bạn biết từ mplayerhoạt động khá giống với cách mã hóa. Ngoài ra, có rất nhiều tài liệu và chủ đề email bao gồm chính xác những gì bạn đang hỏi:


Các liên kết được cung cấp chứa hàng tá các ví dụ khác nhau và hàng trăm tùy chọn. Nó không phải là một câu trả lời rõ ràng và chính xác cho câu hỏi của tôi.
Alex

1
Đúng, nhưng tôi đã không viết câu trả lời để có được danh tiếng, tôi đã viết nó để giúp bạn. Hãy xem xét việc đọc qua một số mencodertrang. Có một số nhóm cướp biển chỉ sử dụng mencodercho tất cả các công việc của họ; đó là cách đơn giản và mạnh mẽ và tự động hóa nó có thể.
dg99 27/12/13

2

Tôi biết đây là bài đăng cũ nhưng tìm kiếm vấn đề này trên internet, câu hỏi trên xuất hiện và một số mục khác thậm chí còn cũ hơn.

Tôi đã thử các công cụ khác nhau nhưng cuối cùng tôi hài lòng nhất với lệnh này:

ffmpeg -i *.vob -c:v libx264 -crf 20 -c:a libmp3lame -ac 2 -ab 192k output.avi

Đó là một sửa đổi nhỏ của cái mà tôi tìm thấy ở đây .

Tôi vừa thay thế codec âm thanh ( libflackhông có trên hệ thống của mình, vì vậy tôi đã thay thế nó bằng libmp3lame( nguồn ) và -crfgiá trị để tăng chất lượng. Các định dạng khác cũng có thể được sử dụng, như thế nào mp4.

Trong thử nghiệm của tôi (với bộ xử lý khá tầm thường), tệp vob 2,6 GB (đã được ghép nối từ ba tệp khác) đã được chuyển đổi thành video avi 960 MB có chất lượng tương đương trong khoảng 50 phút.

20 là chất lượng trung bình chấp nhận được (trong các bài viết trợ giúp về Handbrake mà tôi đã thấy). Số lượng lớn hơn làm giảm kích thước với chi phí chất lượng. Trên 20 giảm chất lượng là rõ ràng.

Tốt hơn là sử dụng lệnh đó trong một thiết bị đầu cuối để xem tiến trình, giết nó dễ dàng hơn, v.v.

Điều tôi thích ở lệnh này là nó cung cấp sự cân bằng tốt giữa chất lượng, thời gian và kích thước và nó có thể dễ dàng được sử dụng từ menu ngữ cảnh của trình quản lý tệp.

Làm thế nào để làm điều đó phụ thuộc vào người quản lý tập tin. Lệnh có thể dễ dàng được thêm vào Thunar và Nautilus dưới dạng 'hành động tùy chỉnh'. Tôi đã thêm nó vào Dolphin với một ~/.kde/share/kde4/services/ServiceMenus/convert_vob_to_avi.desktoptệp như thế này:

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin,video/mpeg
MimeType=video/mpeg
Actions=Convert2avi
X-KDE-Submenu=Convert vob (DVD video)
Encoding=UTF8

[Desktop Action Convert2avi]
Name=to avi
Icon=video
Exec=konsole -e ffmpeg -i *.vob -c:v libx264 -crf 20 -c:a libmp3lame -ac 2 -ab 192k output.avi

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.