Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> ซอฟต์แวร์

เชี่ยวชาญ VLC: ใช้ Logging วิเคราะห์และแก้ไขไฟล์ที่เล่นไม่ได้

มีคำพูดยอดนิยม เกือบ axiom แตเป็นจริงภายในขอบเขตจักรวาลนี้ ว่า หากมีไฟล์ที่เล่นไม่ได้ใน VLC มันไม่ได้ถูกสร้างมาเพื่อเล่น ไม่ว่าจะเป็น audio หรือ video VLC กินทุกอย่าง ไม่ว่าจะ encoding อะไร format อะไร ไม่ว่าจะเป็น preview file ดาวน์โหลดจาก eMule หรือ online stream

แตเกิดอะไรขึ้นเมื่อ VLC ไม่เล่นไฟล์? ในกรณีนั้น คุณจะเหลือคำถามว่าอะไรผิดปกติ เพราะ VLC แค่แสดง traffic cone logo บนพื้นหลังดำ และปฏิเสธการเล่น แค่นั้น ไม่มี fancy messages ไม่มี fanfare และไม่มี clues ของ Sherlock Holmes ให้คุณ มา unravel a secret กันเถอะ วันนี้ คุณจะเรียนรู้วิธีทำให้ file playing skills ของคุณดีขึ้นใน VLC

Logging level & debug console

ส่วนใหญ่คนไม่ burrow ลึกเข้าไปใน VLC interface แตสิ่งคือ คุณจะพบ useful stuff เยอะอยู่ที่นั่น ระหว่างนั้น หากคุณเข้า Preferences menu และ toggle on All (Advanced) button ทุก features จะถูก reveal ตัวที่สามจากบนคือ Logging ที่คุณตั้งชื่อไฟล์ที่ต้องการเขียน log messages และระบุ debug level

คุณสามารถ crank numbers ขึ้นเพื่อรายละเอียดมากขึ้น ได้มากเท่าที่ชอบ จนถึง 255 แตส่วนใหญ่คนจะ struggle กับ too much information ดังนั้น start simple ดีกว่า

วิธีง่าย

ใน VLC version 2.X มีวิธีง่าย Under Tools > Messages คุณสามารถเปลี่ยน verbosity level และ point ไป log file ที่เกี่ยวข้อง Verbosity levels คือ: 0 สำหรับ errors, 1 สำหรับ warnings, 2 สำหรับ debug นี่ควรเพียงพอสำหรับคนส่วนใหญ่

Warning!

อย่าดู messages เว้นแต่คุณมีปัญหา เพราะบางครั้ง perfectly playable files จะมี bad frames, junk, decoding glitches และ little bugs อื่นๆ เยอะ คุณอาจ accidentally overflow สมاغกับ useless information ตัวอย่างจาก Moron.avi ของผม:

ดู crazy คุณไม่อยากได้สิ่งนี้

Real life example

ดีแล้ว ตอนนี้ ลองเล่น un-playing file ของคุณ ดูว่าเกิดอะไรขึ้น เมื่อคุณกด Play ไปในบ้ายนาเปล่า เปิด log file และตรวจสอบเนื้อหา คุณจะเห็น stuff เยอะ และส่วนใหญ่ completely innocent

มีวิธี filter junk 简单ไหม? ไม่ ไม่จริง ไม่มี magic แตบางครั้ง คุณอาจหา bits และ pieces ของข้อมูลที่อาจช่วยหา root cause ตัวอย่าง ผม purposefully เอา sane video file และ mess up header โดยเปิดใน text editor และเปลี่ยน bytes บ้าง ตามคาด ไฟล์เล่นไม่ได้ แตเมื่อเรา launch ใน VLC และ examine messages เราเห็นผลลัพธ์:

Next step ของคุณคือ นำ suspicious-looking entries ไป online Web search เช่น last entry อ่านว่า no stream_filter module matching "any" could be loaded ส่วนใหญ่จะโดน bombard ด้วย useless information แตบางอย่างอาจช่วย อย่า despair และทำงานช้าๆ ผ่าน flood of data

แต่ยังมีมากกว่านี้ มาตรวจสอบว่ามีอะไรใน log อีก:

ps warning: this does not look like an MPEG PS stream, continuing anyway
ps warning: garbage at input, trying to resync...
ps warning: found sync code
ps warning: garbage at input, trying to resync...

ดู self-explanatory ไหม? และมีอีก — ผมอยากให้คุณ注意 list 'aaa' field ด้านล่าง มัน important และเราจะเห็นว่ามันหมายถึงอะไรในไม่ช้า

main debug: looking for demux module: 55 candidates
avi debug: <list 'AVI '>
avi debug: <list ' aaa'>
avi warning: unknown chunk (not loaded)
avi debug: </list ' aaa'>
avi warning: unknown chunk (not loaded)
avi debug: </list 'AVI '>
avi warning: unknown chunk (not loaded)
avi debug: * LIST-root size:3338746 pos:0
avi debug: + RIFF-AVI size:3338744 pos:0
avi debug: | + LIST- aaa size:326 pos:12
avi debug: | | + size:849936385 pos:24
avi debug: | + size:849936385 pos:24
avi debug: + size:849936385 pos:24
avi error: avi module discarded (invalid file)

Bright side ไม่ใช่ทุก error จะ cryptic ถึงขนาดนี้ บางครั้งไฟล์จะขาด audio stream หรือมี out-of-sync voice หรือ bad frames discrepancies นี้จะ show ใน log เป็น warnings จำกฎก่อนหน้า — หากมัน works ให้มันเป็น!

อย่างไรก็ตาม หากคุณอยาก explore ปัญหา แทนที่จะ discard media file คุณจะเริ่ม research ที่นี่ มันไม่จะ simple แต best ที่คุณทำได้คือ compare good และ bad file คล้ายกับที่เราทำใน super debug tutorial และหา differences

ดังนั้น หากเรา compare good และ bad file คุณจะสังเกต differences ใน headers healthy file มี hdrlavih8 แต bad file มี junk aaa เขียนอยู่ที่นั่น จำ log example ก่อนหน้าได้ไหม นี่มันคือ! ไน่นี้ ผมรู้ว่าผมเปลี่ยนอะไรและ remedy ยังไงง่าย แตคุณอาจ face bad index, bad timestamps, invalid codecs หรือ info อื่นที่อาจ fix ได้ง่าย somewhat like mending JPEG files ใน Linux data recovery tutorial ของผม หากคุณ傾向 hack

และอ่านเพิ่มเติมเกี่ยวกับหัวข้อนี้:

Broken AVI file without header or index

Steps to repairs files with missing headers

Ano'er example

ตอนนี้เราผ่าน fortissimo piano ของบทความนี้ มาตรวจสอบอีกตัวอย่าง หนึ่งไฟล์ที่มี unknown format มันไม่เล่น เหตุผลคือ VLC เลือก correct decoder ไม่ได้ อีกครั้ง visibly ไม่มีอะไรเกิดขึ้น แต log บอกเราสิ่งที่เราต้องรู้ ในกรณีส่วนใหญ่ คุณ give up และ coffee break

โปรดทราบว่า string garbage at input แสดงในทั้งสองกรณี ดังนั้นเราเริ่ม pick useful pattern นี่ควรเป็น first pointer ของคุณในการ resolving playback mystery มันยังหมายความว่าคุณน่าจะไม่เคย succeed ในการทำให้ไฟล์เหล่านี้เล่นได้โดยไม่มี serious byte-by-byte hacking ไม่แนะนำ แตแล้วคุณอาจมี dry weekend เต็มไปด้วย pleasurable torture

และสุดท้าย บางครั้ง มันจะ really really simple เพราะ VLC อาจบอกคุณว่ามันเจอปัญหา โดยไม่ burrow into messages console หรือ enable debugging คุณจะรู้จริงๆ ว่าเกิดอะไรขึ้น:

สรุป

ผมให้ silver bullet สำหรับ media ของคุณไหม? Absolutely not ผมให้ useful information วิธี approach ปัญหา media files ใน VLC ไหม? Absolutely บทช่วยสอนสั้นนี้สอนสองวิธี configure logging ใน VLC ทั้ง Windows และ Linux อธิบาย nuances ระหว่าง errors, warnings และ messages แสดงวิธีแยก bogus และ real problems วิธีหา solutions วิธี compare good และ bad video files ลงระดับ byte และ resolving seemingly impossible issues กับ unplayable files

หวังว่าคุณจะพบบทความนี้ useful ยิ่งไปกว่านั้น หวังว่าคุณเข้าใจ power และ flexibility ของ VLC มากขึ้น เท่าที่ซ่อนอยู่ใต้ skin เรียบง่าย unassuming นั้น มันง่ายที่จะลืม awesome capabilities ที่โปรแกรมมี นี่คือ VLC secret ที่ unraveled และ bottom line ไม่ว่าความสามารถ debug media playback ของคุณจะเป็นอย่างไร ส่วนใหญ่เวลา หากมันไม่เล่น อาจเป็นว่ามันไม่ได้ meant to be เลย

ขอแสดงความนับถือ