DVD rip เหมาะสมสำหรับการให้บริการผ่าน UPnP


1

ฉันเป็นผู้ใช้ที่มีความสุข minidlna (เวอร์ชั่น 1.0.24) บน Mac Mini G4 รุ่นเก่า มันทำงานได้ค่อนข้างดีในสภาพแวดล้อมของฉัน เนื่องจาก minidlna ไม่อนุญาตให้แปลงรหัสฉันจึงอยากจะฉีกชุดดีวีดี (ส่วนใหญ่เป็นการ์ตูน) เพื่อดู อย่างไรก็ตามฉันล้มเหลวที่จะเข้าใจวิธีการเข้ารหัสอย่างถูกต้องเพื่อวัตถุประสงค์ในการให้บริการพวกเขาผ่าน UPnP

  • ผู้ให้บริการ DSL ของฉันมีไคลเอนต์ในตัว (Freebox ADSL, เฟิร์มแวร์ 1.5.20) ซึ่งก็ปฏิเสธที่จะให้บริการ ISO Media, MP4 Base Media v1 [IS0 14496-12:2003] ไฟล์ (* .mp4)
  • ฉันมีแท็บเล็ต Windows 8 ซึ่งไม่รองรับ EBML file / Matroska (* .mkv) ตู้คอนเทนเนอร์

ดังนั้นฉันจำเป็นต้องใช้ AVI ภาชนะสำหรับการตั้งค่าของฉัน ตอนนี้ส่วนที่ซับซ้อนคือสิ่งที่เป็นตัวเลือกการเข้ารหัสที่ฉันต้องใช้ ตัดดีวีดีเป็นคอนเทนเนอร์ AVI ?

วีดีโอ : ฉันได้ทดสอบแล้วและวิดีโอสตรีมทั้ง MPEG4 และ x264 นั้นใช้งานได้ เท่าที่ฉันเข้าใจ x264 ไม่ใช่ตัวเลือกตั้งแต่ฉันใช้คอนเทนเนอร์ AVI ดังนั้นสิ่งที่เป็นตัวเลือกสำหรับการสตรีมวิดีโอคุณภาพดี MPEG4? การใช้การทดลองและข้อผิดพลาดฉันค้นพบว่าวิดีโอนั้นเปลี่ยนแปลงเล็กน้อยโดยใช้คอนเทนเนอร์ mkv พร้อมสตรีมต่อไปนี้:

Stream #0.0(eng): Video: h264 (High), yuv420p, 1280x568 [PAR 1:1 DAR 160:71], 25 fps, 25 tbr, 1k tbn, 50 tbc (default)

เสียง : ฉันมีปัญหากับไฟล์ที่มี:

Stream #0.1(fre): Audio: dca (DTS), 48000 Hz, 5.1, s16, 1536 kb/s (default)

ในขณะที่เสียงเหล่านี้ทำงาน:

Stream #0.1(fre): Audio: aac, 48000 Hz, stereo, s16 (default)
Stream #0.1: Audio: mp3, 44100 Hz, mono, s16, 128 kb/s (default)

ฉันควรเลือกตัวเลือกเสียงแบบใด

คะแนนโบนัส : อะไรที่สมบูรณ์ avconv ( ffmpeg ) บรรทัดคำสั่งเพื่อแปลงโดยตรงจาก dvd (* .vob) เป็น AVI เช่นนี้ ฉันต้องการหลีกเลี่ยงการใช้ mencoderเนื่องจากเพิ่งได้รับ ลบออก จาก Debian

แก้ไข: สิ่งนี้ไม่ได้อยู่ในหัวข้อ แต่อาจทำให้ความเห็นด้านล่างชัดเจนขึ้น หลังจากการทดลองหลายครั้งฉันได้วินิจฉัยว่าปัญหาคอนเทนเนอร์ MPEG-4 นั้นอยู่ที่ฝั่งไคลเอ็นต์ ฉันไม่รู้ว่าทำไมลูกค้าปฏิเสธที่จะแสดงมัน ฉันสามารถใช้คอนเทนเนอร์ * .mp4 และแปลงรหัสโดยใช้: mkvmerge -o out.mkv in.mp4และตอนนี้ไฟล์จะปรากฏขึ้นอย่างถูกต้อง (และสามารถเล่นได้!) ในฝั่งไคลเอ็นต์ * .mp4 เดียวกันนั้นปรากฏขึ้นอย่างดีจากค่าเริ่มต้นของ Windows 8 Media Player ดังนั้นนี่จึงไม่ใช่ปัญหาของเซิร์ฟเวอร์

EDIT2: เคล็ดลับเดียวที่ใช้โดย minidlna สำหรับ FreeBox client สามารถมองเห็นได้ ที่นี่ .

อ้างอิง: * * * * การสร้างวิดีโอ MP4 พร้อมสำหรับการสตรีม HTTP


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

คำตอบ:


0

หลังจากการวิจัยเพิ่มเติมฉันพบสิ่งนี้ โพสต์ก่อนหน้า . ดังนั้นสำหรับการสร้างไฟล์ * .mp4 เคล็ดลับคือการใช้:

$ ffmpeg -i input.avi -c:v libx264 -crf 22 -c:a libfaac -movflags faststart output.mp4

อย่างไรก็ตาม -movflags faststart เหมาะสมในกรณีของรุ่น mp4 เท่านั้น มองไปที่ man ffmpeg จากระบบเดเบียน / เจสซี่ฉันสามารถค้นหา DVD ที่แนะนำโดยการริปซับใน:

$ ffmpeg -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.avi

ไฟล์ที่สร้างขึ้นเล่นได้อย่างราบรื่นในการตั้งค่าของฉันฉันสามารถกรอไปข้างหน้าและย้อนกลับได้อย่างง่ายดายดังนั้นฉันจึงเดา AVI อย่างถูกต้อง การจัดทำดัชนี (หรืออย่างน้อยเข้ากันได้กับสิ่งที่จำเป็นใน UPnP โปรโตคอล).

ขึ้นอยู่กับข้อมูลไม่กี่ พร้อมใช้งานบนอินเทอร์เน็ต ดูเหมือนว่า Freebox V5 สนับสนุนชุดรูปแบบและตัวแปลงสัญญาณที่ จำกัด เท่านั้น:

  • ตัวแปลงสัญญาณที่เกี่ยวข้องกับตัวแปลงสัญญาณเสียงมีการเพิ่มประสิทธิภาพสูงสุด
  • ts (mpeg ts) mpeg4 ac52 1280 × 720
  • ts (mpeg ts) h264 ac52 1280 × 720
  • avi xvid mp3 1280 × 720 และ 1440 × 1080

อย่างไรก็ตามมีการสนับสนุนบางส่วนสำหรับ matroska (* .mkv) ซึ่งในกรณีนี้การติดตั้งตัวแปลงสัญญาณ mkv ได้ง่ายกว่า ที่นี่ . ดังนั้นในที่สุดฉันก็ใช้ HandBrake (GUI) เพื่อแปลง DVD เป็น mp4 (high profile +) เพิ่มประสิทธิภาพเว็บ ) จากนั้นแปลงรหัสเป็น mkv:

$ mkvmerge -q -o out.mkv --compression 0:none --compression 1:none in.mp4

นอกจากนี้ยังต้องให้แน่ใจว่าจะใช้ -map_chapters -1 ตัวเลือก avconv เพื่อให้แน่ใจว่าไม่มีบทใดในไฟล์เอาต์พุต mkv ที่สร้างขึ้น ฉันไม่สามารถเล่นไฟล์ mkv ใด ๆ ที่มีบทมากกว่า UPnP (โดยใช้ minidlna) แม้ว่าพวกเขาเล่นได้ดีในท้องถิ่น (หรือผ่าน USB) ด้วย Windows Media Player (Windows 8.1)

$ ffmpeg -i input.mkv -map_chapters -1 -c:v copy -c:a copy output.mkv

เพราะฉันสามารถทำให้ไคลเอนต์ FreeBox ขัดข้องได้ง่าย (กด fast forward ปุ่มสองครั้งติดต่อกันเพื่อให้รีบูตระบบทั้งหมด) โดยใช้ภาพยนตร์ Full HD (1920x) ฉันต้องลดขนาดวิดีโอลงเล็กน้อย (1280x):

$ ffmpeg -i in.mp4 -c:v libx264 -crf 23 -vf scale=1280:-1 -c:a aac -strict experimental -sn -movflags faststart -metadata title="in" out.mp4 

ภาพยนตร์บางเรื่องใช้ ac3 และ / หรือ DTS ซึ่งไม่ได้ผลสำหรับฉันดังนั้นจึงมี aac เป็นทางออกที่ยอมรับได้ Windows Media Player ไม่ชอบ ac3 มากกว่า UPnP และ FreeBox V5 (เฟิร์มแวร์ 1.5.20) ไม่ชอบ DTS เสียง.

ดังนั้นเมื่ออินพุตเป็นคอนเทนเนอร์ AVI พร้อมสตรีมเสียง ac3 คุณจะต้องแปลงเป็น mp4 (จริง ๆ แล้ว mkv สำหรับ FreeBox):

$ ffmpeg -i input_with_ac3.avi -c:v copy -c:a copy output.mp4

หากคุณต้องการ mkv และไม่ต้องการแปลงก่อนเป็น mp4 จากนั้น mkv คุณจะต้องแก้ไขข้อผิดพลาด:

[matroska @ 0x1b62100] ไม่สามารถเขียนแพ็กเก็ตที่มีการประทับเวลาที่ไม่รู้จัก   av_interleaved_write_frame (): อาร์กิวเมนต์ไม่ถูกต้อง

ดูตัวอย่าง ที่นี่ :

$ ffmpeg -fflags +genpts -i input_with_ac3.avi -c copy out.mkv

อัปเดต: บางครั้งใช้ mpeg4_unpack_bframes จะทำให้ไฟล์มีขนาดเล็กลง ดู คุณหมอ .

อัปเดต: ให้ความสนใจว่าถ้าคุณทำงานบน Linux ntfs-3g เริ่มต้นที่จะใช้ windows_names:offดังนั้นคุณไม่ควรสร้างไฟล์ใหม่ด้วย ':' ในนั้น (windows media player และ VLC ไม่รองรับพวกเขา) ดู ที่นี่ .


อัปเดต: FreeBox จะต้องใช้รูปแบบพิกเซลเฉพาะ: -pix_fmt yuv420p. มันยังเป็นไปได้ที่จะใช้ -profile:v high -level 4.0 เนื่องจากไฟล์ * .ts สร้างขึ้นโดยกล่องกำลังใช้โปรไฟล์นี้ (ffprobe -show_streams * .ts | grep "profile \ | level")

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