วิธีแปลง WMV เป็น MP4


คำตอบ:


49

คุณสามารถใช้FFmpeg (เครื่องมือบรรทัดคำสั่งฟรีสำหรับ Mac, Linux และ Windows) เพื่อเข้ารหัส WMV เป็น MP4 นี่คือตัวอย่างไวยากรณ์:

ffmpeg -i input.wmv -c:v libx264 -crf 23 -c:a libfaac -q:a 100 output.mp4

วิธีนี้จะเข้ารหัสวิดีโอเป็นวิดีโอ H.264 และเสียง AAC โดยใช้คุณภาพเริ่มต้น ในการเปลี่ยนคุณภาพของวิดีโอให้ใช้ค่า CRF ที่แตกต่างกันโดยที่ต่ำกว่าหมายถึงดีกว่าเช่น 20 หรือ 18 สำหรับเสียง 100% คือคุณภาพเริ่มต้น เพิ่มมูลค่าเพื่อคุณภาพที่ดีขึ้น

สำหรับ AppleTV โดยเฉพาะนี่คือสิ่งที่ Apple บอกว่ารองรับ:

วิดีโอ H.264 สูงสุด 1080p, 30 เฟรมต่อวินาที, โปรไฟล์ระดับสูงหรือหลัก 4.0 หรือต่ำกว่า, โปรไฟล์พื้นฐานระดับ 3.0 หรือต่ำกว่าพร้อมเสียง AAC-LC สูงสุด 160 kbit / s ต่อช่องสัญญาณ, 48 kHz, ระบบเสียงสเตอริโอใน. m4v รูปแบบไฟล์, .mp4 และ. mov

ดังนั้นคุณสามารถใช้คำสั่งต่อไปนี้เพื่อบังคับให้อัตราเฟรม 30 Hz และโปรไฟล์สูง :

ffmpeg -i input.wmv -c:v libx264 -crf 23 -profile:v high -r 30 -c:a libfaac -q:a 100 -ar 48000 output.mp4

10
ฉันเพิ่งลองใช้วิธีแก้ปัญหานี้ใน Fedora 19 และพบข้อผิดพลาด: ตัวเข้ารหัสที่ไม่รู้จัก 'libaac' ดูเหมือนว่าหลังจากการวางจำหน่ายบางครั้ง ffmpeg ไม่ได้รวมการกระจายแบบไบนารีด้วยการสนับสนุน libfaac ดังนั้นคุณต้องสร้างจากแหล่งที่มา แต่ฉันเปลี่ยน 'libfaac' เป็น 'aac' และเพิ่มค่าสถานะ '-strict -2' และการแปลงใช้งานได้สำเร็จ
roartechs

4
ตัวเลือกที่ไม่รู้จัก 'c: v' ไม่สามารถตั้งค่า 'libx264' สำหรับตัวเลือก 'c: v'
e-info128

5
ฉันมีปัญหาเดียวกันกับ roartechs และแก้ไขโดยใช้ffmpeg -i input.wmv -c:v libx264 -crf 23 -c:a aac -strict -2 -q:a 100 output.mp4
Jeremy Tammik

คำเตือนในกรณีส่วนใหญ่ 23 มีความแตกต่างอย่างมีนัยสำคัญจาก 20 ในขณะที่ 22 เป็นที่สังเกตได้แทบจะไม่และ 18 ยากที่จะเห็นความแตกต่างใด ๆ จากต้นฉบับ
Dmitry

18

HandBrake หลายแพลตฟอร์มและฟรี

HandBrake เป็น open-source, GPL ที่ได้รับอนุญาตหลายแพลตฟอร์ม, transcoder วิดีโอแบบหลายเธรดพร้อมใช้งานสำหรับ MacOS X, Linux และ Windows

แหล่งที่รองรับ:

  • ไฟล์มัลติมีเดียทั่วไปส่วนใหญ่ที่รองรับ libavformat และ libavcodec

  • แหล่งที่มาเหมือน DVD หรือ Bluray ใด ๆ ที่ไม่ได้ป้องกันการคัดลอก (ไม่รองรับการลบการป้องกันการคัดลอก)

ขาออก:

  • รูปแบบไฟล์: MP4 (M4V) และ MKV

  • วิดีโอ: H.264 (x264), MPEG-4 (ffmpeg), MPEG-2 (ffmpeg) หรือ Theora (libtheora)

  • เสียง: AAC, CoreAudio AAC / HE-AAC (OS X เท่านั้น), MP3, Flac, AC3 หรือ Vorbis AC-3, DTS, DTS-HD, AAC และ MP3 pass-thru

2
HandBrake ไม่ทำงาน ฉันได้รับข้อผิดพลาดที่ระบุว่า "ไม่พบชื่อเรื่องโปรดตรวจสอบให้แน่ใจว่าคุณได้เลือกแหล่งข้อมูลที่มีการป้องกันและไม่ได้คัดลอกมาแหล่งที่มาของคุณอาจได้รับการป้องกันการคัดลอก และฉันไม่คิดว่า HandBrake รองรับ wmv
burnt1ce

7
เสียใจที่ได้ยิน. มันผ่านการทดสอบ "ทำงานบนเครื่องของฉัน" :-(.

ทำงานให้ฉันด้วย Handbrake 0.9.4
เซบาสเตียน

@ RandolphWest เครื่องของคุณคืออะไรถ้ามันทำงานกับมัน?
bwerks

@ burnt1ce หลังจากได้รับข้อผิดพลาดเดียวกันฉันสามารถแปลง GoToMeeting wmv โดยใช้ Handbrake หลังจากแปลงรหัสครั้งแรกกับ Citrix's g2mtranscoder.exe แล้วใช้ Handbrake 0.9.8
bwerks

4

หากคุณพยายามแปลงไฟล์ WMV ที่สร้างโดย GoToMeeting (หรือที่รู้จักในชื่อ Go2Meeting เพื่อการทำSEO ) โซลูชั่นดังกล่าวข้างต้นทั้งหมดอาจจะล้มเหลวเนื่องจากวิดีโอถูกเข้ารหัสโดยใช้ตัวแปลงสัญญาณ g2m4 เฉพาะ Citrix ที่จะทำให้ตัวแปลงสัญญาณสำลัก

ฉันพบหน้านี้ที่แนะนำการแปลงรหัสจาก g2m เป็น WMV ปกติโดยใช้ g2mtranscoder.exe ที่ให้ไว้โดย gotomeeting ซึ่งจะแปลงรหัสวิดีโอของคุณให้คุณสามารถแปลงรหัสให้เป็นรูปแบบที่คุณเลือกได้โดยใช้เครื่องมือปกติ (เช่นคำตอบอื่น ๆ ในนี้ ด้าย).


คุณแน่ใจหรือไม่ว่า FFmpeg ไม่ใช้ตัวแปลงสัญญาณ GoToMeeting? มันอยู่ในรายการ ffmpeg -codecแต่ไม่มีDธงดังนั้นฉันไม่รู้ว่ารองรับอย่างเต็มที่หรือไม่
slhck

@slhck ฉันลอง FFmpeg ด้วยตัวเองเป็นขั้นตอนแรกและในขณะที่มันระบุว่าตัวแปลงสัญญาณวิดีโอเป็นวิดีโอ: g2m (G2M4 / 0x344D3247) มันส่งผลให้เกิดข้อผิดพลาด 'ไม่สามารถแยกค่าตัวเลือก "-1" เป็นรูปแบบพิกเซล' . หลังจากแปลงรหัสแบบแทนที่ด้วย g2mtranscoder ฉันก็สามารถแปลงรหัสด้วยเบรคมือได้ตามปกติ ฉันวางแผนที่จะพยายามให้มันทำงานกับ FFmpeg แม้ว่าฉันจะสามารถทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติได้
bwerks

2
./ffmpeg -y -i input.wmv -vcodec libx264 -acodec libfaac -ab 128k -ac 2 -b 300 -threads 4 -flags +loop -cmp +chroma -partitions 0 -subq 1 -trellis 0 -refs 1 -coder 0 -bufsize 10M  -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 output.mp4

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

ไลบรารีตัวแปลงสัญญาณที่ฉันติดตั้งคือ libx264 และ libfaac สำหรับวิดีโอ H.264และAACและตัวแปลงสัญญาณเสียง


2

www.media-convert.comเป็นบริการฟรีทางเว็บที่แปลงรูปแบบเสียงและวิดีโอทุกประเภท ไม่จำเป็นต้องติดตั้งซอฟต์แวร์ใด ๆ ละเว้นการเพิ่มและเพียงแค่เลือกประเภทไฟล์จากเมนูแบบเลื่อนลง


1
น่าสนใจมาก แต่ก็ไม่ได้ส่งวิดีโอคุณภาพ 720p + ความละเอียดสูงสุดสำหรับ mp4 คือ 640x480 แต่ +1 แน่นอน
burnt1ce

1

MediaCoderควรทำงานได้ดี!

MediaCoder เป็นตัวแปลงสัญญาณสื่อสากลฟรีตั้งแต่ปีพ. ศ. 2548 ซึ่งรวมเอาตัวแปลงสัญญาณเสียง / วิดีโอและเครื่องมือที่ได้รับความนิยมมากที่สุดอย่างสง่างามและโปร่งใสเข้ากับโซลูชันการแปลงรหัสแบบครบวงจร ด้วยสถาปัตยกรรมที่ยืดหยุ่นและขยายได้ตัวแปลงสัญญาณและเครื่องมือล่าสุดได้รับการปรับปรุงอย่างต่อเนื่อง MediaCoder ตั้งใจที่จะเป็นมีดทหารของชาวสวิสสำหรับการแปลงรหัสสื่ออยู่ตลอดเวลา


เยี่ยมฉันกำลังดาวน์โหลดอยู่
burnt1ce


0

ผมจะใช้MediaCoderการแปลงชุดหรือความเป็นไปได้ที่ใช้งานง่ายอื่น ๆ ที่เป็นAvidemux


0

ฉันไม่สามารถติดตั้ง FFmpeg บนUbuntu Server 14.10 (Utopic Unicorn) ดังนั้นฉันจึงใช้ HandBrake หลังจากการติดตั้งฉันใช้สคริปต์จากthanhsiang.org/faqing :

  1. สร้างไฟล์. sh เช่น convert.sh
  2. chmod +x convert.sh
  3. กำหนดค่าไดเรกทอรี SRC และ DEST, + DEST_EXT
  4. ./convert.sh

ไฟล์ convert.sh

#!/bin/bash

# This script is to convert automatically a folder of video files to MP4.
# You need to change SRC -- Sourse folder and DEST -- Destination folder
# The MP4 format is 480x270.

SRC=/home/video/
DEST=/home/www/mp4files/
DEST_EXT=mp4
HANDBRAKE_CLI=HandBrakeCLI

for FILE in `ls $SRC`
do
        filename=$(basename $FILE)
        extension=${filename##*.}
        filename=${filename%.*}

        $HANDBRAKE_CLI -i $SRC/$FILE -o $DEST/$filename.$DEST_EXT -e x264 -q 22 -r 12 -B 64 -X 480 -O
done

มันเป็นทางออกที่เร็วที่สุดสำหรับฉัน

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