Muốn thay đổi codec âm thanh, nhưng hãy giữ cài đặt video với ffmpeg


23

Tôi có một video mà tôi muốn chuyển đổi codec âm thanh thành AAC 320 kbps / 44.100 kHz. Tôi sẽ sử dụng cái gì cho các công tắc ffmpeg sao cho tất cả các cài đặt video và codec vẫn giữ nguyên, nhưng chỉ có codec âm thanh và cài đặt thay đổi?

Đây là video của tôi:

$ 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

Rất cám ơn trước! Một điều với ffmpeg Tôi chưa bao giờ có thể mò mẫm là làm thế nào để chỉ "điều chỉnh" các tệp mà không phải lấy lại mọi cài đặt nhỏ cho những thứ bạn không muốn thay đổi.


Âm thanh (cũng như video) có chất lượng khá thấp. Lưu ý rằng bạn sẽ không thực sự tăng chất lượng âm thanh bằng cách thay đổi định dạng, tăng tốc độ lấy mẫu và tăng tốc độ bit.
Lực lượng chảy

Câu trả lời:


28

Tổng hợp câu trả lời của Ehsan với nhận xét của fletom phù hợp với tôi, nhờ cả hai.

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

chỉ để tự tham khảo vì tôi luôn quên -vcodec copyphần này
igorushi

2
Bạn có thể mở rộng câu trả lời của bạn một chút để giải thích nó? Cảm ơn.
fixer1234

2
-i input.aviChỉ định tệp bạn muốn chuyển đổi. out.avilà tập tin được chuyển đổi. -acodec mp3nói để chuyển đổi luồng âm thanh sang mp3 trong khi ghi nó vào tệp đầu ra. vcodec copynói rằng chỉ cần sao chép luồng video vào tệp đầu ra mà không thay đổi nó.
Wodin

8

Thật khó để đánh giá những gì bạn đang làm, vì lệnh ffmpeg đã bị cắt xén một chút trong bài viết của bạn.

Để thay thế một bản nhạc âm thanh:

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

Thông tin thêm về các tham số trên được tìm thấy trong: Tài liệu FFmpeg .


1
Cảm ơn. Điều này đã giải quyết vấn đề của tôi. Khi tôi chạy ffmpeg -i old.mkv -i onlySound.m4a out.mkvcác hoạt động mất nhiều thời gian hơn. Tại sao vậy?
Zeta. Điều tra viên

6

Nếu bạn chỉ muốn thay đổi (các) codec âm thanh và / hoặc video, bạn có thể chỉ cần thêm chúng dưới dạng tham số như vậy:

Chỉ cần thay đổi codec âm thanh thành mp3 (bao giờ là codec gốc)

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

Chỉ cần thay đổi codec video thành h264

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

Thật tốt khi lưu ý rằng ffmpeg phải hỗ trợ mã hóa codec mới. Xem https://stackoverflow.com/questions/3377300/what-are-all-codecs-supported-by-ffmpeg


5
Điều này làm việc cho tôi, nhưng tôi cần thêm -vcodec copyvào để ngăn nó cố gắng chuyển mã video của tôi sang h.264. Dunno tại sao nó làm điều đó theo mặc định.
fletom

-1

Tại sao bạn không sử dụng Handbrake cho phép giữ video và thay đổi âm thanh và đó là GUI cho FFmpeg và nó hoạt động như một bùa mê.


3
HandBrake thực sự không thể làm điều này; nó có thể thực hiện một bản sao đơn giản của các luồng âm thanh hoặc phụ đề, nhưng nó luôn mã hóa lại video.
evilsoup
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.