Ingin mengubah codec audio, tetapi simpan pengaturan video dengan ffmpeg

26

Saya punya video yang ingin saya konversi codec audio ke AAC 320 kbps / 44.100 kHz. Apa yang akan saya gunakan untuk switch ffmpeg sehingga semua pengaturan video dan codec tetap sama, tetapi hanya codec audio dan pengaturan yang berubah?

Ini video saya:

$ 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

Banyak terima kasih sebelumnya! Satu hal dengan ffmpeg yang saya tidak pernah bisa grok adalah bagaimana caranya hanya "men-tweak" file tanpa harus memuntahkan setiap pengaturan kecil untuk hal-hal yang tidak ingin Anda ubah.

Craig Tataryn
sumber
Audio (dan juga videonya) nampaknya berkualitas rendah. Perhatikan bahwa Anda tidak akan benar-benar meningkatkan kualitas audio dengan mengubah format, meningkatkan laju pengambilan sampel, dan meningkatkan bitrate.
Force Flow

Jawaban:

34

Kumpulan jawaban Ehsan dengan komentar fletom yang cocok untukku, terima kasih untuk keduanya.

ffmpeg -i input.avi -acodec mp3 -vcodec copy out.avi
igorushi
sumber
hanya untuk referensi sendiri karena saya selalu lupa -vcodec copybagian ini
igorushi
2
Bisakah Anda sedikit memperluas jawaban untuk menjelaskannya? Terima kasih.
fixer1234
2
-i input.avimenentukan file yang ingin Anda konversi. out.aviadalah file yang dikonversi. -acodec mp3mengatakan untuk mengubah aliran audio ke mp3 saat menulisnya ke file output. vcodec copymengatakan hanya menyalin aliran video ke file output tanpa mengubahnya.
Wodin
8

Sulit untuk menilai apa yang Anda lakukan, karena perintah ffmpeg agak kacau di pos Anda.

Untuk mengganti trek audio:

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

Informasi lebih lanjut tentang parameter di atas ditemukan di: Dokumentasi FFmpeg .

harrymc
sumber
1
Terima kasih. Ini menyelesaikan masalah saya. Ketika saya menjalankan ffmpeg -i old.mkv -i onlySound.m4a out.mkvoperasi membutuhkan waktu lebih lama. Kenapa begitu?
Zeta.Investigator
6

Jika Anda hanya ingin mengubah codec audio dan / atau video, Anda bisa menambahkannya sebagai parameter seperti:

Cukup ganti codec audio ke mp3 (apa pun codec aslinya)

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

Cukup ganti codec video ke h264

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

Baik untuk dicatat bahwa ffmpeg harus mendukung pengkodean codec baru. Lihat /programming/3377300/what-are-all-all-codecs-supported-by-ffmpeg

Ehsan88
sumber
5
Ini bekerja untuk saya, tetapi saya perlu menambahkan -vcodec copyuntuk mencegahnya mencoba mentranskode video saya ke h.264. Entah mengapa itu melakukan itu secara default.
fletom
-1

Mengapa Anda tidak menggunakan Handbrake yang memungkinkan menyimpan video dan mengubah audio dan itu adalah GUI untuk FFmpeg dan itu berfungsi seperti pesona.

Benny
sumber
3
HandBrake sebenarnya tidak bisa melakukan ini; itu dapat melakukan salinan sederhana dari stream audio atau subtitle, tetapi itu selalu mengkode ulang video.
evilsoup