2017-09-13 45 views
1

我們通過Mumble錄製了對話,因爲Mumble有一個nitfy多聲道功能,我想我們可以通過單獨上傳每首曲目到YouTube來獲得YouTube字幕for file in *; do ffmpeg -loop 1 -r 2 -i "$img" -i "$file" -vf scale=-1:380 -c:v libx264 -preset slow -tune stillimage -crf 18 -c:a copy -shortest -pix_fmt yuv420p -threads 0 "$file".mkv; done然後我可以預先添加一個例如。 sed外殼腳本a 暱稱用於自動字幕中的每個發言者,即來自YouTube的字幕。奇蹟般有效。合併Mumble中的多聲道音軌與ffmpeg

合併那些跟蹤ffmpeg變得棘手。我用ffmpeg -i input1.ogg -input2.ogg -i input3.ogg -i input4.ogg -input5.ogg -filter_complex "[0:a][1:a][2:a][3:a][4:a] amerge=inputs=5[aout]" -map "[aout]" -ac 2 output.ogg

不知何故ffmpeg縮短了所得的音軌,我還沒有一個想法,爲什麼。我嘗試使用最長的第一個和最後一個,因爲包括靜音曲目甚至更短的混音。下面是警告:

[Parsed_amerge_0 @ 0x7f8b29f02d20]沒有對輸入1信道佈局

[Parsed_amerge_0 @ 0x7f8b29f02d20]輸入信道的佈局重疊:輸出佈局將由不同的輸入通道

的數目來確定

但它說

[Parsed_amerge_0 @ 0x7f8b29f02d20]沒有對輸入1信道佈局

即使當我改變訂單的投入。

Allthough根據Mumble的文檔,曲目應該是等長的VLC媒體信息顯示不同的曲目時間。 但是曲目是而不是不同步只是在最後切斷。

我也不知道爲什麼ffmpeg提到FLAC,所有的文件都是vorbis。

ffmpeg -i Mumble-2017-09-09-16-33-18-149.210.187.155-chrisaiki2.ogg -i Mumble-2017-09-09-16-33-18-149.210.187.155-Recorder.ogg -i Mumble-2017-09-09-16-33-18-149.210.187.155-steempowerpics.ogg -i Mumble-2017-09-09-16-33-18-149.210.187.155-Taconator.ogg -i Mumble-2017-09-09-16-33-18-149.210.187.155-fuzzynewest.ogg -filter_complex "[0:a][1:a][2:a][3:a][4:a] amerge=inputs=5[aout]" -map "[aout]" -ac 2 output5.ogg

ffmpeg version 2.8.4 Copyright (c) 2000-2015 the FFmpeg developers 
    built with Apple LLVM version 7.0.2 (clang-700.1.81) 
    configuration: --prefix=/usr/local/Cellar/ffmpeg/2.8.4 --enable-shared --  enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable- avresample --cc=clang --host-cflags= --host-ldflags= --enable-opencl --enable- libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda 
    libavutil  54. 31.100/54. 31.100 
    libavcodec  56. 60.100/56. 60.100 
    libavformat 56. 40.101/56. 40.101 
    libavdevice 56. 4.100/56. 4.100 
    libavfilter  5. 40.101/5. 40.101 
    libavresample 2. 1. 0/2. 1. 0 
    libswscale  3. 1.101/3. 1.101 
    libswresample 1. 2.101/1. 2.101 
    libpostproc 53. 3.100/53. 3.100 
Input #0, ogg, from 'Mumble-2017-09-09-16-33-18-149.210.187.155- chrisaiki2.ogg': 
    Duration: 00:40:01.19, start: 0.000000, bitrate: 17 kb/s 
    Stream #0:0: Audio: vorbis, 48000 Hz, mono, fltp, 86 kb/s 
    Metadata: 
     ENCODER   : libsndfile 
     TITLE   : chrisaiki2 
Input #1, ogg, from 'Mumble-2017-09-09-16-33-18-149.210.187.155-Recorder.ogg': 
    Duration: 00:33:57.88, start: 0.000000, bitrate: 1 kb/s 
    Stream #1:0: Audio: vorbis, 48000 Hz, mono, fltp, 86 kb/s 
    Metadata: 
     ENCODER   : libsndfile 
     TITLE   : Recorder 
Input #2, ogg, from 'Mumble-2017-09-09-16-33-18-149.210.187.155-steempowerpics.ogg': 
    Duration: 00:33:53.93, start: 0.000000, bitrate: 1 kb/s 
    Stream #2:0: Audio: vorbis, 48000 Hz, mono, fltp, 86 kb/s 
    Metadata: 
     ENCODER   : libsndfile 
     TITLE   : steempowerpics 
Input #3, ogg, from 'Mumble-2017-09-09-16-33-18-149.210.187.155-Taconator.ogg': 
    Duration: 00:35:36.37, start: 0.000000, bitrate: 6 kb/s 
    Stream #3:0: Audio: vorbis, 48000 Hz, mono, fltp, 86 kb/s 
    Metadata: 
     ENCODER   : libsndfile 
     TITLE   : Taconator 
Input #4, ogg, from 'Mumble-2017-09-09-16-33-18-149.210.187.155-fuzzynewest.ogg': 
    Duration: 00:41:53.23, start: 0.000000, bitrate: 30 kb/s 
    Stream #4:0: Audio: vorbis, 48000 Hz, mono, fltp, 86 kb/s 
    Metadata: 
     ENCODER   : libsndfile 
     TITLE   : fuzzynewest 
File 'output5.ogg' already exists. Overwrite ? [y/N] y 
[Parsed_amerge_0 @ 0x7f8b29f02d20] No channel layout for input 1 
[Parsed_amerge_0 @ 0x7f8b29f02d20] Input channel layouts overlap: output layout will be determined by the number of distinct input channels 
[flac @ 0x7f8b2b005600] encoding as 24 bits-per-sample 
Output #0, ogg, to 'output5.ogg': 
    Metadata: 
    encoder   : Lavf56.40.101 
    Stream #0:0: Audio: flac, 48000 Hz, stereo, s32 (24 bit), 128 kb/s (default) 
    Metadata: 
     encoder   : Lavc56.60.100 flac 
Stream mapping: 
    Stream #0:0 (vorbis) -> amerge:in0 
    Stream #1:0 (vorbis) -> amerge:in1 
    Stream #2:0 (vorbis) -> amerge:in2 
    Stream #3:0 (vorbis) -> amerge:in3 
    Stream #4:0 (vorbis) -> amerge:in4 
    amerge -> Stream #0:0 (flac) 
Press [q] to stop, [?] for help 
size= 100900kB time=00:33:53.94 bitrate= 406.4kbits/s  
video:0kB audio:100441kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.457024% 

Mumble multichannel talk on reddit

+0

嘿,非常感謝! – Nutela

回答

1

amerge documentation狀態:

如果輸入不具有相同的時間,輸出將與 最短停止。

amix對於這種情況可能是更好的過濾器。

+0

感謝但[amix](https://ffmpeg.org/ffmpeg-filters.html#amix)僅適用於浮動(樣本)?我嘗試了[apad](https://ffmpeg.org/ffmpeg-filters.html#Examples-9),但我不確定語法,對於我所見過的所有示例,都有一個視頻軌道來聲音反對和我只有音軌,沒有視頻。 – Nutela

+1

@Nutela amix會自動將音頻轉換爲浮點採樣格式(通過aresample)。通過使用OGG我假設你想要Vorbis音頻。 libvorbis只支持32位浮點平面('fltp'),所以我不認爲這會是一個問題,因爲它會轉換爲浮點數。 – LordNeckbeard

+0

謝謝@LordNeckbeard你是對的。我應該檢查你的評論,但我發現其他地方基本上你的答案。 – Nutela

0

我到底像這樣使用amixffmpeg -i input1.ogg -i input2.ogg -i input3.ogg -i inout4.ogg -i input5.ogg -filter_complex "[0:a][1:a][2:a][3:a][4:a] amix=inputs=5:duration=longest[aout]" -map "[aout]" -ac 2 -c:a libvorbis -b:a 128k output.ogg

ffmpeg沒有認出libvorbis所以我不得不與重新安裝brew第一:brew reinstall ffmpeg --with-libvorbis

然後我用ffmpeg -loop 1 -r 2 -i "$img" -i "$snd" -vf scale=-1:380 -c:v libx264 -preset slow -tune stillimage -crf 18 -c:a copy -shortest -pix_fmt yuv420p -threads 0 output.mkv上傳混合音軌YouTube上。

我已經合併了YouTube生成的字幕,並且只是將它們添加到了最終的視頻中。奇蹟般有效。