2017-02-15 96 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