ต้องการเปลี่ยนตัวแปลงสัญญาณเสียง แต่เก็บการตั้งค่าวิดีโอด้วย ffmpeg


26

ฉันมีวิดีโอที่ฉันต้องการแปลงตัวแปลงสัญญาณเสียงเป็น AAC 320 kbps / 44.100 kHz ฉันจะใช้อะไรกับสวิตช์ ffmpeg ซึ่งการตั้งค่าวิดีโอและตัวแปลงสัญญาณทั้งหมดยังคงเหมือนเดิม แต่เฉพาะตัวแปลงสัญญาณเสียงและการตั้งค่าเท่านั้นที่เปลี่ยนแปลง

นี่คือวิดีโอของฉัน:

$ ffmpeg -i Winnipeg.rb\ Scala-Talk.mov 
FFmpeg version SVN-r25375, Copyright (c) 2000-2010 the FFmpeg developers
  built on Oct  6 2010 13:02:41 with gcc 4.2.1 (Apple Inc. build 5664)
  configuration: --enable-libmp3lame --enable-shared --disable-mmx --arch=x86_64
  libavutil     50.32. 2 / 50.32. 2
  libavcore      0. 9. 1 /  0. 9. 1
  libavcodec    52.92. 0 / 52.92. 0
  libavformat   52.80. 0 / 52.80. 0
  libavdevice   52. 2. 2 / 52. 2. 2
  libavfilter    1.48. 0 /  1.48. 0
  libswscale     0.12. 0 /  0.12. 0

Seems stream 0 codec frame rate differs from container frame rate: 2000.00 (2000/1) -> 10.00 (10/1)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Winnipeg.rb Scala-Talk.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
  Duration: 01:10:53.00, start: 0.000000, bitrate: 283 kb/s
    Stream #0.0(eng): Video: h264, yuv420p, 800x598, 94 kb/s, 10 fps, 10 tbr, 1k tbn, 2k tbc
    Stream #0.1(eng): Audio: adpcm_ima_qt, 22050 Hz, 1 channels, s16
    Stream #0.2(eng): Audio: adpcm_ima_qt, 22050 Hz, 1 channels, s16
At least one output file must be specified

ขอบคุณมากล่วงหน้า! สิ่งหนึ่งที่มี ffmpeg ฉันไม่เคยพลาดได้เลยว่าจะทำอย่างไร "บิด" ไฟล์โดยไม่ต้องสำรอกทุกสิ่งที่คุณไม่ต้องการเปลี่ยนแปลง


เสียง (รวมถึงวิดีโอ) มีคุณภาพต่ำ โปรดทราบว่าคุณจะไม่เพิ่มคุณภาพเสียงโดยการเปลี่ยนรูปแบบเพิ่มอัตราการสุ่มตัวอย่างและเพิ่มบิตเรต
Force Flow

คำตอบ:


34

การรวมคำตอบของ Ehsan กับความคิดเห็นของลูกธนูที่เหมาะกับฉันต้องขอบคุณทั้งคู่

ffmpeg -i input.avi -acodec mp3 -vcodec copy out.avi

เพียงเพื่อการอ้างอิงตนเองเนื่องจากฉันลืม-vcodec copyส่วนนี้เสมอ
igorushi

2
คุณช่วยขยายคำตอบหน่อยเพื่ออธิบายได้ไหม? ขอบคุณ
fixer1234

2
-i input.aviระบุไฟล์ที่คุณต้องการแปลง out.aviเป็นไฟล์ที่ถูกแปลง -acodec mp3บอกว่าจะแปลงกระแสเสียงเป็น mp3 ในขณะที่เขียนลงในไฟล์เอาต์พุต vcodec copyบอกว่าจะคัดลอกสตรีมวิดีโอไปยังไฟล์เอาต์พุตโดยไม่ต้องเปลี่ยน
Wodin

8

ยากที่จะตัดสินว่าคุณกำลังทำอะไรเนื่องจากคำสั่ง ffmpeg นั้นอ่านไม่ออกในโพสต์ของคุณ

วิธีแทนที่แทร็กเสียง:

ffmpeg -i test.avi -i normalized.mp3 -map 0:0 -map 1:0 -vcodec copy -acodec copy new_test.avi

ข้อมูลเพิ่มเติมเกี่ยวกับตัวแปรข้างต้นจะพบใน: FFmpeg เอกสาร


1
ขอบคุณ นี่เป็นการแก้ไขปัญหาของฉัน เมื่อฉันเรียกใช้ffmpeg -i old.mkv -i onlySound.m4a out.mkvการดำเนินการใช้เวลานาน ทำไมเป็นซู
Zeta.Investigator

6

หากคุณต้องการเปลี่ยนตัวแปลงสัญญาณเสียงและ / หรือวิดีโอคุณสามารถเพิ่มเป็นพารามิเตอร์ดังนี้

เพียงแค่เปลี่ยนตัวแปลงสัญญาณเสียงเป็น mp3 (เคยเป็นตัวแปลงสัญญาณเดิม)

ffmpeg -i input.avi -acodec mp3 out.avi

เพียงแค่เปลี่ยนตัวแปลงสัญญาณวิดีโอเป็น h264

ffmpeg -i input.avi -vcodec h264 out.avi

เป็นการดีที่จะทราบว่า ffmpeg ต้องรองรับการเข้ารหัสของตัวแปลงสัญญาณใหม่ ดู/programming/3377300/what-are-all-codecs-supported-by-ffmpeg


5
สิ่งนี้ใช้งานได้สำหรับฉัน แต่ฉันจำเป็นต้องเพิ่ม-vcodec copyเพื่อป้องกันไม่ให้พยายามแปลงรหัสวิดีโอของฉันเป็น h.264 ดันโนทำไมถึงทำอย่างนั้นโดยปริยาย
fletom

-1

ทำไมคุณไม่ใช้ Handbrake ที่ให้วิดีโอและเปลี่ยนเสียงและมันเป็น GUI สำหรับ FFmpeg และใช้งานได้อย่างมีเสน่ห์


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