ฉันต้องการใช้ Ubuntu และแพ็คเกจมาตรฐานอย่างเช่น ffmpeg เพื่อหมุนไฟล์วิดีโอ. 3gp 90 องศาในทุกทิศทาง ควรใช้บรรทัดคำสั่งหรือสคริปต์ Python
ฉันจะทำสิ่งนั้นได้อย่างไร
ฉันต้องการใช้ Ubuntu และแพ็คเกจมาตรฐานอย่างเช่น ffmpeg เพื่อหมุนไฟล์วิดีโอ. 3gp 90 องศาในทุกทิศทาง ควรใช้บรรทัดคำสั่งหรือสคริปต์ Python
ฉันจะทำสิ่งนั้นได้อย่างไร
คำตอบ:
โดยใช้VLCคุณสามารถหมุนวิดีโอโดยไปที่เครื่องมือ >> ค่ากำหนด ...
และเลือก "ทั้งหมด" สำหรับการตั้งค่าการแสดง จากนั้นไปที่: วิดีโอ >> ตัวกรอง >> หมุน
หลังจากตั้งค่าระดับที่คุณต้องการคุณสามารถหมุนได้โดยไปที่เครื่องมือ> เอฟเฟ็กต์และฟิลเตอร์> เอฟเฟ็กต์วิดีโอ> เรขาคณิต ..
อันที่ฉันทดสอบคือ mp4 แต่ฉันเชื่อว่าVLCสามารถรองรับ 3gp ได้เช่นกัน หวังว่านี่จะช่วยได้ :)
จากบรรทัดคำสั่งด้วย 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 เสียงแทนกระแสการคัดลอก
Avidemuxน่าจะทำได้
ทำVideo->Filters->Rotate(x degrees)->Close
แล้วFile->Save->Save Video
ฉันแก้ไขปัญหาที่คล้ายกัน - ฉันมี. 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
ผลลัพธ์เป็นที่น่าพอใจโดยมีผลข้างเคียงที่ไม่สามารถอธิบายได้:
ไม่ใช่ว่าฉันบ่น: สิ่งเหล่านี้เป็นที่ต้องการ; ฉันไม่เข้าใจว่าทำไมพวกเขาถึง ...
avconv
บรรทัดคำสั่งของคุณอย่างครบถ้วนและไม่ใช่แค่ความแตกต่างจากffmpeg
คำสั่ง คำตอบของคุณควรพึ่งพาตนเอง คำตอบอื่น ๆ อาจหายไป (3) โชคดี!
-filter:v transpose=1 …
คุณสามารถออกจากคำพูดและพูดเพียง
มีการเปลี่ยนแปลงบางอย่างใน 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
ffmpeg
ทำงานให้ฉัน (ไม่ลองavconv
)
ffmpef
มีข้อโต้แย้งที่ไม่จำเป็นจำนวนมากขอบคุณ!