ffmpeg 剪切和连接单个命令行

Posted

技术标签:

【中文标题】ffmpeg 剪切和连接单个命令行【英文标题】:ffmpeg cut and concat single command line 【发布时间】:2017-07-04 03:55:45 【问题描述】:

我有两个 flac 音频文件,我需要用不同的时间码剪切它们,然后使用带有 ffmpeg 的单个命令行将它们连接起来。有没有办法做到这一点? 我做了类似的事情,但效果不佳,输出文件的时间戳都搞砸了(而不是从 00:00 开始的输出 flac 我有一个从 59:90 开始的文件!!)还有这个命令行非常慢,它只适用于 unix 系统...希望有人可以帮助我

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

【讨论】:

感谢您的回答,slow 方法 工作正常,因为它解码并重新编码输出,第一个仍然是时间码混乱(可能是 flac 问题??) ,当我打开 merge.flac 文件时,它不是从 00:00 开始,而是从 59:50 开始,所以这是一个问题,因为我必须创建一个下载服务,并且我需要尽快获得输出 看起来,使用 ffmpeg,你会被缓慢的方法所困扰。 FLAC 流具有可查找表,当流复制 FLAC 时,该标头会被保留,但不会被 ffmpeg 更改。如果将结果打包到 MOV 或 MKV 之类的容器中,它们的元数据会取代 FLAC,因此时间戳会很好,但不能放在依赖 FLAC 比特流的容器中。

以上是关于ffmpeg 剪切和连接单个命令行的主要内容,如果未能解决你的问题,请参考以下文章

用ffmpeg快速剪切和合并视频

在 Ubuntu 中使用 ffmpeg 剪切视频

Python/FFMPEG 命令行问题

Linux 命令行技巧

FFmpeg命令行使用

命令行媒体处理工具FFmpeg