2017-02-15 97 views
1

我有兩個flac音頻文件,我需要用不同的時間碼剪切它們,然後用ffmpeg使用一個命令行連接它們。有沒有辦法做到這一點? 我做了這樣的事情,但它不能很好地工作,輸出文件的時間戳全部搞砸了(而不是從00:00開始輸出flac我有一個從59:90開始的文件!!)另外這個命令線是出奇的慢,它僅適用於UNIX系統的...希望有人能夠幫助我ffmpeg剪切和concat單個命令行

mkfifo temp1 temp2 
ffmpeg -y -i PMM_20170116-1100_1.flac -ss 3590 -t 10 -c copy -acodec copy -f flac temp1 2> /dev/null & ffmpeg -y -i PMM_20170116-1200_1.flac -ss 0 -t 3590 -c copy -acodec copy -f flac temp2 2> /dev/null & ffmpeg -f flac -i "concat:temp1|temp2" -ac 2 -ar 48000 cutmergetest.flac 

回答

1

快速方法

創建一個文本文件。

file file1.flac 
inpoint 3590 
outpoint 3600 
file file2.flac 
inpoint 0 
outpoint 3590 

運行

ffmpeg -f concat -i list.txt -c copy merged.flac 

緩慢方法

運行

ffmpeg -ss 3590 -t 10 -i file1.flac -ss 0 -t 3590 -i file2.flac -filter_complex "[0][1]concat=n=2:v=0:a=1" -ac 2 -ar 48000 cutmergetest.flac 
+0

感謝您的回答, **緩慢的方法**工作正常,因爲它解碼和reenconde輸出,第一個仍然是一個混亂的時間碼(也許flac問題??),當我打開merged.flac文件它不會從00開始: 00但是從59:50開始,所以這是一個問題,因爲我必須創建一個下載服務,並且我需要儘可能快地獲得輸出 – MadManMoon

+0

看起來像,使用ffmpeg時,您會遇到慢速方法。一個FLAC流有一個可尋址表,當一個FLAC被流式處理時,這個表頭會被結轉,但不會被ffmpeg改變。如果將結果打包到像MOV或MKV這樣的容器中,它們的元數據將取代FLAC,因此時間戳可以正常工作,但不在依賴FLAC流位的Meradata容器中。 – Mulvya