วิธีแปลงไฟล์ VOB เป็น avi


10

ฉันพยายามแปลงไฟล์ VOB ที่คัดลอกมาจาก DVD เป็น avi ใน Ubuntu 13.10 ฉันลองdvdripซึ่งล้มเหลวเนื่องจากข้อผิดพลาดในการนับเฟรมหรือบางสิ่ง ฉันลอง acidrip ด้วย แต่ก็เลือกแทร็กเสียงที่ฉันไม่ต้องการใช้เสมอ ฉันต้องการมีโซลูชันบรรทัดคำสั่งเพื่อสร้าง avi ด้วยคุณสมบัติต่อไปนี้:

  • ใช้งานได้กับ mplayer (เช่นการใช้ฟังก์ชั่นขั้นตอน)
  • พร้อมคำบรรยายตามต้องการ (หรือไม่มีเลย)
  • ด้วยแทร็กเสียงที่ถูกต้อง
  • พร้อมซิงค์วิดีโอและเสียง

ฉันลองffmpegและavconvคำสั่งและจัดการเพื่อสร้าง avi แต่วิดีโอและเสียงนั้นไม่ได้ซิงค์กันเลย ดังนั้นฉันควรใช้ตัวเลือกใดในการแปลงไฟล์ VOB เป็นไฟล์ avi

ฉันขอขอบคุณคำอธิบายเกี่ยวกับตัวเลือกที่แนะนำ!

ข้อมูลเพิ่มเติม:

  1. ffmpegคำสั่งให้การส่งออกต่อไปนี้สำหรับแฟ้มใส่

    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. คำสั่งดังต่อไปนี้

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

    ตัวอย่างเช่นเกิดความผิดพลาดในเซสชัน Ubuntu ของฉัน

  3. คำสั่งดังต่อไปนี้

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

    ตัวอย่างเช่นเกิดข้อผิดพลาดต่อไปนี้:

    Application provided invalid, non monotonically increasing dts to muxer in stream 1: 374 >= 374
    av_interleaved_write_frame(): Invalid argument
    
  4. คำสั่งดังต่อไปนี้

    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
    

    ตัวอย่างเช่นเกิดข้อผิดพลาดต่อไปนี้:

    Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
    
  5. คำสั่งดังต่อไปนี้

    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
    

    ตัวอย่างเช่นดูเหมือนว่าจะทำงานในบางเฟรม แต่เร็ว ๆ นี้ฉันพบข้อผิดพลาดมากมายของแบบฟอร์ม

    [ac3 @ 0x120d480] frame sync error
    Error while decoding stream #0:1
    frame CRC mismatch
    
  6. คำสั่งดังต่อไปนี้

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

    มีการแปลงบ้าง แต่ (i) ใช้คำบรรยายแม้ว่าฉันไม่ต้องการใช้พวกเขา (ii) ได้เสียงผิด (เสียงและวิดีโอหายไปอย่างน่ากลัว) และ (iii) ดูเหมือนจะช้ากว่าที่ภาพยนตร์จะใช้จริง 2 ชั่วโมงสำหรับภาพยนตร์ 90 นาที)

  7. ฉันพยายามที่จะสั่งให้ที่นี่ (โพสต์ที่สามจาก Xeratul) แต่มันก็หยุดด้วยข้อผิดพลาด

    FATAL: Cannot initialize video driver.
    
  8. ฉันพยายามทำข้อเสนอแนะด้านล่างเพื่อดูที่หน้า mencoder หน้านี้แนะนำให้ใช้สองรอบ:

    ครั้งแรกที่อ่านข้อมูลเกี่ยวกับภาพยนตร์ครั้งที่สองใช้ข้อมูลนั้นเพื่อเข้ารหัส

    แต่ไม่ว่ามันจะมีการอธิบายซึ่งข้อมูลที่จะดึงหรือวิธีการที่จะใช้พวกเขาในรหัสผ่านที่สอง ดังนั้นฉันใช้คำสั่งต่อไปนี้:

    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
    

    ซึ่งทำการแปลงวิดีโอ แต่มีคำบรรยายที่ไม่ต้องการ มันไม่ชัดเจนเลยว่าฉันจะหลีกเลี่ยงการใช้คำบรรยายได้อย่างไร


ffmpegavconvจะเลิกตั้งแต่เวลานานมาแล้วที่คุณควรจะใช้ทายาทของตัวเอง:
user2485710

ดังนั้นวิธีใช้avconvแล้วแปลงไฟล์ VOB เป็น avi คำสั่งavconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -acodec copy -vcodec copy test.aviให้ข้อผิดพลาดApplication provided invalid, non monotonically increasing dts to muxer in stream 1: 374 >= 374 av_interleaved_write_frame(): Invalid argument...
อเล็กซ์

มีตัวอย่างใน manpage สำหรับ avconv สำหรับไฟล์ VOB ที่ถอดรหัสแล้วavconv -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.aviลองใช้ดู
user2485710

สิ่งนี้ทำให้เกิดข้อผิดพลาดError while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
อเล็กซ์

ลอง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/nullแล้ว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- เอาส่วนหนึ่งจาก Arch doc @ dg99 ที่เชื่อมโยง

คำตอบ:


6

เพื่อกำจัดคำบรรยายฉันเชื่อว่าคุณสามารถเพิ่ม-nosubสวิตช์ได้ทันทีหลังจากชื่อไฟล์. VOB

ตัวอย่าง

$ 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

รายละเอียด

คาถาเหล่านี้มักจะมีความหนาแน่นสูงมากเพื่อที่จะทำลายสิ่งนี้ลงเล็กน้อย

  • ไฟล์อินพุต: Videos/Test/VIDEO_TS/VTS_01_1.VOB
  • ไฟล์ที่ส่งออก: -o video.avi
  • ไม่มีคำบรรยาย: -nosub
  • อย่าเข้ารหัสเสียง: -nosound
  • เข้ารหัสด้วย codec ที่ให้มา: -ovc x264

รายการตัวแปลงสัญญาณอื่น ๆ

$ 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
  • ตัวเลือกการเข้ารหัส x264: x264encopts
  • โหมดการตั้งค่าสำหรับเวกเตอร์การเคลื่อนไหวโดยตรง :direct=auto
  • จำนวนผ่าน :pass=2
  • บิตเรตการเข้ารหัสเป้าหมาย: bitrate=900
  • ก่อน เฟรมที่ใช้เป็นตัวทำนายใน B- และ P-frames (def: 3):frameref=5
  • # พร้อมกันของเฟรม B: bframes=1
  • การประมาณค่าการเคลื่อนไหว fullpixel alg .: me=umh

    หมายเหตุ: umh - การค้นหาหกเหลี่ยมหลายเหลี่ยมไม่เท่ากัน (ช้า)

  • เปิดใช้งาน macroblock ทุกประเภท: partitions=all

  • อัตราการบิดเบือนเชิงปริมาณที่ดีที่สุด: trellis=1

    หมายเหตุ: 2 - เปิดใช้งานในระหว่างการตัดสินใจโหมดทั้งหมด (ช้าต้อง subq> = 6)

  • ควอไลเซอร์ที่เพิ่มขึ้น / decerement มูลค่า: qp_step=4

    หมายเหตุ:ค่าสูงสุดที่ควอนตัมอาจเพิ่มขึ้น / ลดลงระหว่างเฟรม (ค่าเริ่มต้น: 4)

  • การบีบอัดควอไลเซอร์ (ค่าเริ่มต้น: 0.6): qcomp=0.7

  • การทำนายการเคลื่อนที่สำหรับ macroblock ใน B-frames: direct_pred=auto
  • ช่วงเวลาสูงสุดระหว่างคีย์เฟรมในเฟรม: keyint=300

  • ตัวเลือกหลังจากนี้เป็นตัวกรองวิดีโอ: -vf

หมายเหตุ:สำหรับสวิตช์ตัวกรองวิดีโอเป็นสิ่งสำคัญที่คุณใช้harddupเป็นตัวกรองสุดท้าย: มันจะบังคับให้ MEncoder เขียนทุกเฟรม (แม้แต่อันที่ซ้ำกัน) ในเอาต์พุต นอกจากนี้ก็เป็นสิ่งที่จำเป็นต่อการใช้งานscale=$WIDTH,-10ด้วย$WIDTHในฐานะ-1ที่จะให้ความกว้างเดิมหรือใหม่มักจะมีขนาดเล็กความกว้าง: มันเป็นสิ่งจำเป็นเนื่องจากตัวแปลงสัญญาณ H.264 ใช้ตารางพิกเซลและดีวีดีแทนที่จะใช้รูปสี่เหลี่ยมผืนผ้าพิกเซล

  • scale=-1
  • -10
  • harddup

ขอบคุณมากสำหรับตัวอย่างที่อธิบายได้ดีเกี่ยวกับวิธีรับวิดีโอ คำสั่งที่แนะนำของคุณดูเหมือนจะทำงานได้อย่างสมบูรณ์แบบสำหรับการแยกวิดีโอ อย่างไรก็ตามฉันไม่มีเสียงตอนนี้ ถ้าผมใช้คำสั่งของคุณโดยไม่-noaudioและด้วยความ-oac copyที่ฉันได้รับเสียงซึ่งไม่ได้อยู่ในการซิงค์กับวิดีโอ มันอาจถูกแทนที่ด้วยความเร็วที่ต่างกันหรือทั้งสองอย่าง ข้อเสนอแนะใด ๆ ที่ฉันจะได้รับเสียงถูกต้องเช่นกัน? แล้วไฟล์ VOB หลายไฟล์ล่ะ วิธีการแพ็คเนื้อหาลงใน.aviไฟล์เดียว(หรือรูปแบบอื่น ๆ )?
Alex

@Alex - เป็นความคิด แต่ฉันไม่คิดว่าคุณสามารถทำ-oac copyกับ 2 pass ได้เนื่องจากคุณเข้ารหัสวิดีโออีกครั้งคุณจะต้องเข้ารหัสเสียงอีกครั้งพร้อมด้วย ในฐานะที่เป็น "บรรจุ" พวกเขา VOB cat *.vob all.vobไฟล์ควรจะรวมชอบสิ่งนี้: จากนั้นใช้all.vobใน mencoder cmd มีวิธีอื่นในการทำเช่นนี้เช่นกัน
slm

3

หากคุณตั้งใจจะใช้mplayerคุณควรลองmencoder( http://www.mplayerhq.hu ) หนึ่งในคุณสมบัติที่ดีที่สุดคือตัวเลือกการเล่นที่คุณรู้จักจากการmplayerทำงานในแบบเดียวกับการเข้ารหัส นอกจากนี้ยังมีเอกสารจำนวนมากและหัวข้ออีเมลที่ครอบคลุมสิ่งที่คุณขอ:


ลิงค์ที่ให้นั้นมีตัวอย่างที่แตกต่างกันหลายสิบตัวเลือก มันไม่ใช่คำตอบที่ชัดเจนและแม่นยำสำหรับคำถามของฉัน
อเล็กซ์

1
จริง แต่ฉันไม่ได้เขียนคำตอบเพื่อรับชื่อเสียงฉันเขียนเพื่อช่วยคุณ พิจารณาการอ่านผ่านบางmencoderหน้า มีกลุ่มโจรสลัดหลายกลุ่มที่ใช้mencoderสำหรับงานของพวกเขาเท่านั้น นั่นเป็นวิธีที่เรียบง่ายและมีประสิทธิภาพและเป็นไปได้โดยอัตโนมัติ
dg99

2

ฉันรู้ว่านี่เป็นการโพสต์เก่า แต่การค้นหาปัญหานี้บนอินเทอร์เน็ตคำถามข้างต้นปรากฏขึ้นและรายการอื่น ๆ บางอย่างที่เก่ากว่า

ฉันได้ลองใช้เครื่องมือต่าง ๆ แต่ในที่สุดฉันก็พอใจกับคำสั่งนี้มากที่สุด:

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

มันคือการเปลี่ยนแปลงเล็กน้อยของหนึ่งที่ผมพบว่าที่นี่

ฉันเพิ่งเปลี่ยนโคเดกเสียง ( libflacขาดในระบบของฉันดังนั้นฉันจึงแทนที่ด้วยlibmp3lame( ต้นฉบับ ) และ-crfค่าเพื่อเพิ่มคุณภาพนอกจากนี้ยังสามารถใช้ฟอร์แมทอื่น ๆ ได้เช่นmp4กัน

ในการทดสอบของฉัน (ด้วยตัวประมวลผลที่ค่อนข้างปานกลาง) ไฟล์ vob ขนาด 2.6 GB (แบ่งออกเป็นสามไฟล์แล้ว) ถูกแปลงเป็นวิดีโอขนาด 960 เมกะไบต์ avi ที่มีคุณภาพใกล้เคียงกันในเวลาประมาณ 50 นาที

20 คือคุณภาพที่ยอมรับได้ปานกลาง (ในบทความช่วยเหลือของ Handbrake ที่ฉันเคยเห็น) ตัวเลขขนาดใหญ่ลดขนาดที่ค่าใช้จ่ายของคุณภาพ การสูญเสียคุณภาพมากกว่า 20 ชัดเจน

มันเป็นการดีกว่าที่จะใช้คำสั่งนั้นในเทอร์มินัลเพื่อดูความคืบหน้าฆ่ามันได้ง่ายขึ้น ฯลฯ

สิ่งที่ฉันชอบเกี่ยวกับคำสั่งนี้คือมันให้ความสมดุลที่ดีระหว่างคุณภาพเวลาและขนาดและมันสามารถใช้งานได้ง่ายจากเมนูบริบทของตัวจัดการไฟล์

วิธีการทำนั้นขึ้นอยู่กับตัวจัดการไฟล์ คำสั่งสามารถเพิ่มไปยัง Thunar และ Nautilus ได้อย่างง่ายดายในฐานะ 'การกระทำที่กำหนดเอง' ฉันได้เพิ่มลงใน Dolphin ด้วย~/.kde/share/kde4/services/ServiceMenus/convert_vob_to_avi.desktopไฟล์เช่นนี้:

[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

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.