Saya mencoba untuk menambahkan suara ke video menggunakan FFmpeg, tetapi untuk beberapa alasan, ketika saya memutar file yang dihasilkan, tidak ada suara. Saya juga mencoba melakukannya dengan file audio aac, serta meninggalkan -acodec copy
dan memberikannya file wav.
Ini adalah hasil lengkapnya:
C:\Users\SM-Audio\Desktop>ffmpeg -i PrintingCDs.mp4 -i AudioPrintCDs.mp3 -acodec
copy -vcodec copy PrintCDs1.mp4
ffmpeg version N-48886-g5ce023b Copyright (c) 2000-2013 the FFmpeg developers
built on Jan 14 2013 19:16:33 with gcc 4.7.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libg
sm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --e
nable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --e
nable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --en
able-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable
-libxavs --enable-libxvid --enable-zlib --enable-filter=frei0r
libavutil 52. 14.100 / 52. 14.100
libavcodec 54. 89.100 / 54. 89.100
libavformat 54. 59.107 / 54. 59.107
libavdevice 54. 3.102 / 54. 3.102
libavfilter 3. 32.100 / 3. 32.100
libswscale 2. 1.103 / 2. 1.103
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 2.100 / 52. 2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'PrintingCDs.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2013-05-01 13:35:52
Duration: 00:02:35.57, start: 0.000000, bitrate: 585 kb/s
Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 1024x
768 [SAR 1:1 DAR 4:3], 457 kb/s, 10 fps, 10 tbr, 30k tbn, 30 tbc
Metadata:
creation_time : 2013-05-01 13:35:53
handler_name : Mainconcept MP4 Video Media Handler
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 126
kb/s
Metadata:
creation_time : 2013-05-01 13:35:53
handler_name : Mainconcept MP4 Sound Media Handler
[mp3 @ 003dd6c0] max_analyze_duration 5000000 reached at 5015510 microseconds
Input #1, mp3, from 'AudioPrintCDs.mp3':
Metadata:
encoder : Lavf54.59.107
Duration: 00:02:36.21, start: 0.000000, bitrate: 64 kb/s
Stream #1:0: Audio: mp3, 44100 Hz, mono, s16p, 64 kb/s
File 'PrintCDs1.mp4' already exists. Overwrite ? [y/N] y
Output #0, mp4, to 'PrintCDs1.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
encoder : Lavf54.59.107
Stream #0:0(eng): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1024x768 [S
AR 1:1 DAR 4:3], q=2-31, 457 kb/s, 10 fps, 30k tbn, 30k tbc
Metadata:
creation_time : 2013-05-01 13:35:53
handler_name : Mainconcept MP4 Video Media Handler
Stream #0:1(eng): Audio: aac ([64][0][0][0] / 0x0040), 22050 Hz, mono, 126 k
b/s
Metadata:
creation_time : 2013-05-01 13:35:53
handler_name : Mainconcept MP4 Sound Media Handler
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 1555 fps=0.0 q=-1.0 Lsize= 11133kB time=00:02:35.57 bitrate= 586.2kbits
/s
video:8674kB audio:2408kB subtitle:0 global headers:0kB muxing overhead 0.459569
%
Jawaban:
Secara default, FFmpeg hanya akan mengambil satu audio dan satu aliran video. Dalam kasus Anda itu hanya diambil dari file pertama.
Anda perlu memetakan aliran dengan benar:
Beberapa catatan:
0:v:0
adalah aliran video pertama dari file pertama dan1:a:0
merupakan streaming audio pertama dari file kedua. Thev
/a
tidak sepenuhnya diperlukan, tetapi jika file input Anda berisi beberapa aliran, yang membantu untuk ambigu. Informasi lebih lanjut tentang pemetaan dapat ditemukan di FFmpeg Wiki .-shortest
opsi untuk menghentikan konversi ketika ffmpeg lebih pendek dari kedua ujungnya.-c copy
menyalin aliran audio dan video. Ini berarti bahwa prosesnya akan cepat dan kualitasnya akan sama. Tetapi ketika menambahkan, katakanlah, audio WAV ke file video yang ada, akan lebih baik untuk mengompres audio itu terlebih dahulu. Sebagai contoh:Di sini, kami hanya menyalin stream video (
-c:v copy
), dan menyandikan ulang stream audio dengan ffmpeg AAC encoder (-c:a aac
) yang terpasang di 192 kBit / s.sumber
-c copy
? Apakah itu singkatan-acodec copy -vcodec copy
?-shortest
opsi, dalam hal ini aliran terpendek mengakhiri proses pengodean.-i <input>
dan file output.