Saya memiliki file MP3 yang cenderung sangat pendek, seperti 1 detik, mengandung suku kata kata. Saya ingin memiliki tumpang tindih (ujung satu digabung dengan awal yang berikutnya). Saya telah menemukan beberapa topik tentang crossfading tetapi saya tidak yakin saya membutuhkannya (crossfading), yaitu, untuk menurunkan volume satu dan meningkatkan volume yang berikutnya ketika kita beralih ke dalamnya. Saya pikir hanya penggabungan audio sudah cukup saat ini.
Tumpang tindih perlu dalam urutan mikrodetik. Saya melihat FFmpeg memiliki desimal satu detik pada beberapa opsi. Saat ini saya sedang menyatukan banyak MP3 pendek dengan berikut:
/// <summary>
/// <para/>20170114
/// </summary>
/// <returns></returns>
public void ConcatMP3s(String InFiles, String OutputFile)
{
// http://superuser.com/questions/87040/how-to-stich-mp3s-together-with-ffmpeg
var _IN_PARAMS = " -f concat ";
var _IN_FILES = "-safe 0 -i " + DQuote(InFiles);
var _OUT_PARAMS = " -c copy -y "; // -y to overwrite the output file
var _OUT_FILE = DQuote(OutputFile);
//
var _FFMPEG_ARGS = _IN_PARAMS + _IN_FILES + _OUT_PARAMS + _OUT_FILE;
//return _FFMPEG_ARGS;
//
RunFFmpeg(_FFMPEG_ARGS);
}
Saya ingin perintah atau teknik yang akan menggabungkan beberapa file sekaligus, tetapi jika Anda menunjukkan kepada saya bagaimana melakukannya untuk dua file, saya bisa mengulang semuanya. Ini jawaban yang jelek tapi bisa diterima :).
@Mulvya, apa yang bisa saya ambil dari tautan Anda adalah struktur baris perintah FFmpeg berikut (semua dalam satu string baris perintah)
ffmpeg -i 1.mp3 -i 2.mp3 -i 3.mp3 -i 4.mp3
-filter_complex
"[1]adelay=delay1|delay1[b];
[2]adelay=delay2|delay2[c];
[3]adelay=delay3|delay3[d];
[0][b][c][d]amix=4"
merged.mp3
Apa yang perlu dilakukan delay1, delay2, dan delay3? Apakah mereka durasi dalam milidetik dari 1.mp3
, 2.mp3
, dan 3.mp3
masing-masing?
Apa cara terbaik untuk mengambil durasi ini? misalnya, apakah properti file sistem file akurat?
Apakah huruf [b], [c], [d] sesuatu yang sewenang-wenang? nama saluran? Saya perlu menghasilkan?
Di mana saya menentukan, misalnya, 10 milidetik tumpang tindih antara 1.mp3
dan 2.mp3
, 2 dan 3, dan kemudian 3 dan 4?
Atau haruskah saya minus 10 milidetik dari delay1, delay2, delay3?
Tambahan: di sini adalah snapshot dari montase manual yang saya kumpulkan untuk menjelaskan apa yang saya coba capai secara terprogram (asumsikan tumpang tindih yang konstan; di sini saya mencoba sekitar 100 ms). Tolong jelaskan apa nilai untuk delay1, delay2, delay3 di atas seharusnya.
Durasi MP3 dari output FFmpeg adalah 550, 440, 500, 960, 440 ms.
========= Output Saat Ini dari FFmpeg
_VDO\FFmpeg 20160310\bin\FFmpeg -i "S:\_W\ARP_WEB\SRC\SND\A4_23\1\01.mp3" -i "S:\_W\ARP_WEB\SRC\SND\A2\1\22.mp3" -i "S:\_W\ARP_WEB\SRC\SND\A2\3\23.mp3" -i "S:\_W\ARP_WEB\SRC\SND\A3\1\24.mp3" -i "S:\_W\ARP_WEB\SRC\SND\A2\2\03.mp3" -filter_complex "[1]adelay=279[b];[2]adelay=592[c];[3]adelay=916[d];[4]adelay=1712[e]; [0][b][c][d][e]amix=5" -y "S:\_W\ARP\AMSSTUDIO\SRC\DATA\FFMPEG\DEBUG Concat with Overlap\OUT.MP3"
ffmpeg version N-79000-g66edd86 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.3.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
libavutil 55. 19.100 / 55. 19.100
libavcodec 57. 28.100 / 57. 28.100
libavformat 57. 28.100 / 57. 28.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 39.102 / 6. 39.102
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
[mp3 @ 0000000000584ba0] Estimating duration from bitrate, this may be inaccurate
Input #0, mp3, from 'S:\_W\ARP_WEB\SRC\SND\A4_23\1\01.mp3':
Duration: 00:00:00.55, start: 0.000000, bitrate: 320 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, mono, s16p, 320 kb/s
[mp3 @ 00000000005a2a20] Estimating duration from bitrate, this may be inaccurate
Input #1, mp3, from 'S:\_W\ARP_WEB\SRC\SND\A2\1\22.mp3':
Duration: 00:00:00.44, start: 0.000000, bitrate: 320 kb/s
Stream #1:0: Audio: mp3, 44100 Hz, mono, s16p, 320 kb/s
[mp3 @ 000000000058af00] Estimating duration from bitrate, this may be inaccurate
Input #2, mp3, from 'S:\_W\ARP_WEB\SRC\SND\A2\3\23.mp3':
Duration: 00:00:00.50, start: 0.000000, bitrate: 320 kb/s
Stream #2:0: Audio: mp3, 44100 Hz, mono, s16p, 320 kb/s
[mp3 @ 000000000058cb80] Estimating duration from bitrate, this may be inaccurate
Input #3, mp3, from 'S:\_W\ARP_WEB\SRC\SND\A3\1\24.mp3':
Duration: 00:00:00.96, start: 0.000000, bitrate: 127 kb/s
Stream #3:0: Audio: mp3, 44100 Hz, mono, s16p, 128 kb/s
[mp3 @ 00000000005c5c00] Estimating duration from bitrate, this may be inaccurate
Input #4, mp3, from 'S:\_W\ARP_WEB\SRC\SND\A2\2\03.mp3':
Duration: 00:00:00.44, start: 0.000000, bitrate: 320 kb/s
Stream #4:0: Audio: mp3, 44100 Hz, mono, s16p, 320 kb/s
Output #0, mp3, to 'S:\_W\ARP\AMSSTUDIO\SRC\DATA\FFMPEG\DEBUG Concat with Overlap\OUT.MP3':
Metadata:
TSSE : Lavf57.28.100
Stream #0:0: Audio: mp3 (libmp3lame), 44100 Hz, mono, fltp (default)
Metadata:
encoder : Lavc57.28.100 libmp3lame
Stream mapping:
Stream #0:0 (mp3) -> amix:input0
Stream #1:0 (mp3) -> adelay
Stream #2:0 (mp3) -> adelay
Stream #3:0 (mp3) -> adelay
Stream #4:0 (mp3) -> adelay
amix -> Stream #0:0 (libmp3lame)
Press [q] to stop, [?] for help
Error while filtering: Cannot allocate memory
size= 5kB time=00:00:00.54 bitrate= 70.2kbits/s speed=42.3x
video:0kB audio:4kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 4.938003%
.wav
file terlebih dahulu (yang dapat dilakukan secara batch). File-file Mp3 menyandikan audio dalam bingkai dengan panjang tertentu, jadi Anda mungkin tidak dapat melakukan audio yang tumpang tindih skala mikrodetik dalam mp3 tanpa melakukan enkode ulang.Jawaban:
Gunakan perintah formulir
Masing-masing
delayN
dalam milidetik adalah offset awal audio dari awal aliran audio. Jadi, jika Anda ingin file2 dimulai pada 14,2 detik dari campuran akhir, gunakanadelay=14200|14200
untuk input stereo. Anda dapat menggunakanadelay=14200
input mono. Di tangkapan layar Anda, ini adalah nilai kolom Mulai.Label pad
[a]
..etc sewenang-wenang dan ditugaskan untuk output filter sehingga mereka dapat digunakan nanti di filter lain atau dipetakan untuk output. Setiap pad dapat dikonsumsi sekali. Mereka adalah alfanumerik tetapi menghindari pemberian bilangan bulat murni seperti[2]
karena ffmpeg menggunakannya untuk merujuk ke file input.sumber
-report
menambahkan. Tautan ke file laporan.