หมุนไฟล์วิดีโอ 90 องศาโดยใช้ Ubuntu


19

ฉันต้องการใช้ Ubuntu และแพ็คเกจมาตรฐานอย่างเช่น ffmpeg เพื่อหมุนไฟล์วิดีโอ. 3gp 90 องศาในทุกทิศทาง ควรใช้บรรทัดคำสั่งหรือสคริปต์ Python

ฉันจะทำสิ่งนั้นได้อย่างไร


ฉันพบว่า ffmpeg สามารถทำสิ่งนี้ได้ ดูเช่นฟอรัม Ubuntu: หมุนวิดีโอ 90 องศา
Simon

คำตอบ:


9

โดยใช้VLCคุณสามารถหมุนวิดีโอโดยไปที่เครื่องมือ >> ค่ากำหนด ...

และเลือก "ทั้งหมด" สำหรับการตั้งค่าการแสดง จากนั้นไปที่: วิดีโอ >> ตัวกรอง >> หมุน

หลังจากตั้งค่าระดับที่คุณต้องการคุณสามารถหมุนได้โดยไปที่เครื่องมือ> เอฟเฟ็กต์และฟิลเตอร์> เอฟเฟ็กต์วิดีโอ> เรขาคณิต ..

ข้อความแสดงแทน

อันที่ฉันทดสอบคือ mp4 แต่ฉันเชื่อว่าVLCสามารถรองรับ 3gp ได้เช่นกัน หวังว่านี่จะช่วยได้ :)


13
ฉันสามารถดูวิดีโอที่หมุนได้ แต่คุณจะทำให้การเปลี่ยนแปลงยังคงอยู่ได้อย่างไร
justinhj


17

จากบรรทัดคำสั่งด้วย ffmpeg:

ffmpeg -i input.3gp -filter:v transpose=1 \
-c:v libx264 -preset veryfast -crf 22 \
-c:a copy \
-metadata:s:v rotate="" \
output.3gp
  • transpose=1จะหมุนวิดีโอตามเข็มนาฬิกา 90 องศา; transpose=2จะหมุนทวนเข็มนาฬิกาใช้ ดูเอกสารประกอบการแปลงสัญญาณสำหรับข้อมูลเพิ่มเติมอีกเล็กน้อย

  • -metadata:s:v rotate=""จะตัดข้อมูลเมตาการหมุนสตรีมวิดีโอที่มีอยู่ มิฉะนั้นffmpegจะคัดลอกมันซึ่งอาจทำให้ผู้เล่นของคุณใช้การหมุนเพิ่มเติมที่ไม่พึงประสงค์

  • สำหรับข้อมูลเกี่ยวกับการเข้ารหัสวิดีโอการตั้งค่าที่นี่ดูH.264 นี้การเข้ารหัสคู่มือและAAC เข้ารหัสคู่มือถ้าคุณต้องการที่จะ Re-encode เสียงแทนกระแสการคัดลอก


วิธีนี้จะตอบคำถามได้ดีกว่าเนื่องจากอธิบายวิธีการใช้จากบรรทัดคำสั่งด้วย ffmpeg ตามที่ระบุในคำถามต้นฉบับ ฉันคิดว่าคำตอบนี้ควรทำเครื่องหมายว่าถูกต้อง จนถึงเดือนพฤษภาคม 2560 บน Fedora 25 สิ่งนี้ยังคงใช้ได้แม้ว่าจะมีข้อความแสดงการคัดค้านตัวแปลงสัญญาณ MP4
Justin W. Flory


2

ฉันแก้ไขปัญหาที่คล้ายกัน - ฉันมี. MOV ที่ถูกคว่ำ (เช่นหมุน 180 องศา) ซึ่งฉันต้องการตั้งค่าให้ถูกต้อง

ในระบบ Ubuntu 14.04 ของฉันฉันวิ่งไปavconvพร้อมกับตัวเลือกบรรทัดคำสั่งเป็นหลักเช่นเดียวกับที่ได้รับสำหรับffmpegในคำตอบของ evilsoup เห็นได้ชัดว่ามันไม่รองรับtransposeตัวเลือกสำหรับการหมุน 180 องศาดังนั้นฉันจึงทำตามเข็มนาฬิกา 90 องศา (เช่นtranspose=1) สองครั้ง

เมื่อฉันลองตัวเลือกที่น้อยที่สุดฉันได้รับข้อความถึงผลกระทบที่:

encoder 'aac' is experimental and might produce bad results.

Add '-strict experimental' if you want to use it.

-strict experimentalและไฟล์ที่ส่งออกเป็นความยาวเป็นศูนย์ดังนั้นฉันเพิ่ม

บรรทัดคำสั่งที่ทำงานคือ:

avconv -i IMG_orignl.MOV -filter:v 'transpose=1' -strict experimental IMG_interm.MOV
avconv -i IMG_interm.MOV -filter:v 'transpose=1' -strict experimental IMG_result.MOV

ผลลัพธ์เป็นที่น่าพอใจโดยมีผลข้างเคียงที่ไม่สามารถอธิบายได้:

  1. ไฟล์ระดับกลางมีขนาดเล็กกว่าต้นฉบับประมาณ ~ 14%
  2. ไฟล์ผลลัพธ์มีขนาดเล็กกว่ากลางถึง 18% และเล็กกว่าต้นฉบับเกือบ 30%
  3. ไฟล์ผลลัพธ์แสดงภาพย่อในขณะที่ต้นฉบับและสื่อกลางแสดงเฉพาะไอคอนทั่วไป

ไม่ใช่ว่าฉันบ่น: สิ่งเหล่านี้เป็นที่ต้องการ; ฉันไม่เข้าใจว่าทำไมพวกเขาถึง ...


ยินดีต้อนรับสู่ Super User (1) แม้ว่าข้อมูลพื้นหลังบางส่วนในคำตอบของคุณอาจเป็นประโยชน์ แต่ก็ควรมุ่งเน้นไปที่วิธีแก้ปัญหาของคุณ ฉันได้แก้ไขคำตอบของคุณเพื่อแสดง; อย่าลังเลที่จะแก้ไขเพิ่มเติมหากคุณเชื่อว่าฉันเปลี่ยนแปลงมากเกินไป (2) ลำดับการแสดงคำตอบอาจแตกต่างกันไป เป็นการดีกว่าที่จะระบุคำตอบอื่น ๆ อย่างชัดเจนแทนที่จะพูดว่า“ เหนือ” (2½) ฉันหวังว่าคุณจะแสดงavconvบรรทัดคำสั่งของคุณอย่างครบถ้วนและไม่ใช่แค่ความแตกต่างจากffmpegคำสั่ง คำตอบของคุณควรพึ่งพาตนเอง คำตอบอื่น ๆ อาจหายไป (3) โชคดี!
G-Man กล่าวว่า 'Reinstate Monica'

นอกจากนี้ฉันคิดว่าเมื่อคุณพูดว่า "ผลลัพธ์เป็นที่น่าพอใจ" คุณหมายถึงไฟล์ "ผลลัพธ์" ของคุณดูดีเหมือนไฟล์ต้นฉบับ คุณอาจต้องการ ( แก้ไขข้อความของคุณเป็น) พูดอย่างชัดเจน (ข้อมูลดังกล่าว - คือไม่ว่าคุณจะสูญเสียคุณภาพของวิดีโอที่มองเห็นได้ด้วยตา -. เป็นสิ่งสำคัญที่คำตอบของคุณและไม่ควรจะซ่อนอยู่ในความคิดเห็น) นอกจากนี้ฉัน Betcha -filter:v transpose=1 …คุณสามารถออกจากคำพูดและพูดเพียง
G-Man กล่าวว่า 'Reinstate Monica'

2

มีการเปลี่ยนแปลงบางอย่างใน libav ตั้งแต่เวลาที่ตอบคำถามนี้มา แต่เดิม ในความพยายามที่จะรักษาปัจจุบันและมีประโยชน์ฉันจะให้ followng:

คุณสามารถทำได้ด้วยรุ่นล่าสุดffmpegและavconvโดยใช้ตัวกรองวิดีโอ transpose

avconv -i inputfile -vf transpose=clock outputfile

สำหรับการหมุนตามเข็มนาฬิกา

ใน ffmpeg ไวยากรณ์จะเหมือนกัน

ffmpeg -i inputfile -vf transpose=clock outputfile

โดยที่inputfileเป็นไฟล์วิดีโออินพุตที่สนับสนุนและoutputfileเป็นไฟล์เอาต์พุตที่คุณต้องการ

สำหรับการหมุนตามเข็มนาฬิกาเคาน์เตอร์แทนที่นาฬิกากับcclock

นี่คือข้อความที่ตัดตอนมาจากเอกสาร:

‘cclock_flip’

    Rotate by 90 degrees counterclockwise and vertically flip. (default)
‘clock’

    Rotate by 90 degrees clockwise.
‘cclock’

    Rotate by 90 degrees counterclockwise.
‘clock_flip’

    Rotate by 90 degrees clockwise and vertically flip. 

แหล่งที่มา:

https://libav.org/avconv.html#transpose

https://ffmpeg.org/ffmpeg-filters.html#transpose-1

การทดสอบบน Ubuntu 14.04.5 LTS, Ubuntu 16.04, Ubuntu 18.04


1
ขอบคุณสำหรับพารามิเตอร์ขั้นต่ำ ffmpegทำงานให้ฉัน (ไม่ลองavconv)
Amil Waduwawara

ยอดเยี่ยม ใช่โพสต์มากมายเกี่ยวกับffmpefมีข้อโต้แย้งที่ไม่จำเป็นจำนวนมากขอบคุณ!
Mariano Ruiz

@MarianoRuiz ฉันดีใจที่มันช่วยคุณ ffmpeg อยู่เสมอในการพัฒนาดังนั้นเมื่อเวลาผ่านไปสิ่งที่เปลี่ยนแปลง ไม่น่าแปลกใจที่วิธีการที่ง่ายกว่านั้นมีอยู่มากกว่าคำตอบที่เก่ากว่าบางคำ ไชโย!
Elder Geek
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.