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.


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

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 .


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


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.


3
HandBrake sebenarnya tidak bisa melakukan ini; itu dapat melakukan salinan sederhana dari stream audio atau subtitle, tetapi itu selalu mengkode ulang video.
evilsoup
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.