Ses codec bileşenini değiştirmek istiyorum, ancak ffmpeg ile video ayarlarını koruyun


27

Ses kodekini AAC 320 kbps / 44.100 kHz'e dönüştürmek istediğim bir videom var. Tüm video ayarları ve codec bileşenleri aynı kalacak, ancak yalnızca ses codec bileşeni ve ayarları değişecek şekilde ffmpeg anahtarları için ne kullanırım?

İşte videom:

$ 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

Şimdiden çok teşekkürler! Ffmpeg ile hiç bir zaman grok yapamadığım bir şey, değiştirilmesini istemediğiniz şeyler için her küçük ayarı yeniden düzenlemeye gerek kalmadan dosyaları nasıl "ayarlayacağınız".


Sesin (videonun yanı sıra) oldukça düşük kalitede olduğu görülüyor. Biçimi değiştirerek, örnekleme hızını artırarak ve bit hızını artırarak sesin kalitesini gerçekten artırmayacağınızı unutmayın.
Force Flow

Yanıtlar:


35

Ehsan'ın cevabının, her ikisi sayesinde, fletom'un benim için çalışan yorumu ile bir araya getirilmesi.

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

sadece bu -vcodec copybölümü her zaman unuttuğum için kendi referansım için
igorushi

2
Cevabınızı açıklamak için biraz genişletebilir misiniz? Teşekkürler.
fixer1234

2
-i input.avidönüştürmek istediğiniz dosyayı belirtir. out.avidönüştürülen dosyadır. -acodec mp3ses dosyasına çıkış dosyasına yazarken mp3'e dönüştürmeyi söylüyor. vcodec copyvideo akışını değiştirmeden çıktı dosyasına kopyalamayı söylüyor.
Wodin

8

Ne yaptığınızı yargılamak zor, çünkü ffmpeg komutu yayınınızda biraz bozuktu.

Bir ses parçasını değiştirmek için:

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

Yukarıdaki parametreler hakkında daha fazla bilgi için: FFmpeg Belgeleri .


1
Teşekkürler. Bu benim sorunumu çözdü. Çalıştırdığım zaman ffmpeg -i old.mkv -i onlySound.m4a out.mkvdaha uzun sürer. Neden bu kadar?
Zeta.Investigator

6

Ses ve / veya video kodeklerini değiştirmek istiyorsanız, bunları aşağıdaki gibi parametreler olarak ekleyebilirsiniz:

Ses kodekini mp3 olarak değiştirin (orijinal kodek ne olursa olsun)

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

Sadece video codec bileşenini h264 olarak değiştirin

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

Ffmpeg'in yeni codec bileşeninin kodlamasını desteklemesi gerektiğini unutmayın. Bkz. Https://stackoverflow.com/questions/3377300/what-are-all-codecs-supported-by-ffmpeg


5
Bu benim için çalıştı, ancak -vcodec copyvideomu h.264'e dönüştürmeye çalışmasını önlemek için eklemem gerekiyordu . Neden bunu varsayılan olarak yaptığını bilmiyorum.
fletom

-1

Neden videoyu tutmanıza ve sesi değiştirmenize izin veren Handbrake'i kullanmıyorsunuz ve FFmpeg için bir GUI ve bir cazibe gibi çalışıyor.


3
HandBrake aslında bunu yapamaz; ses veya altyazı akışlarının basit bir kopyasını yapabilir, ancak videoyu her zaman yeniden kodlar.
evilsoup
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.