linux - 如何使用输入的 txt 文件将 AAC 文件与 AVCONV CONCAT 连接起来?

标签 linux ffmpeg concatenation aac avconv

我有许多 AAC 文件,想将它们连接成一个 AAC 文件。当我在命令行中使用 AVCONV 执行此操作并且我指定了文件名时,它就可以工作了。当我尝试使用包含文件列表的文本文件执行此操作时,它失败了。使我来到这里的是位于 Concatenating media files 的 FFMPEG 教程页面。 .根据我的尝试,我得到了各种各样的结果,但我找不到任何关于我在语法上做错了什么的信息。

我的文件列表(同目录下的list.txt)...

file 'sr_program_2015_03_23_05_44_01.aac'
file 'sr_program_2015_03_23_07_44_58.aac'

当我按照上面提到的页面中的示例进行操作时,出现错误。我包括了 ffmpeg 和 avconv 的使用,但结果是一样的。

ffmpeg...

ffmpeg -f concat -i list.txt -c copy output
ffmpeg version 0.8.17-6:0.8.17-1, Copyright (c) 2000-2014 the Libav developers
  built on Mar 15 2015 17:00:31 with gcc 4.7.2
The ffmpeg program is only provided for script compatibility and will be removed
in a future release. It has been deprecated in the Libav project to allow for
incompatible command line syntax improvements in its replacement called avconv
(see Changelog for details). Please use avconv instead.
Unknown input format: 'concat'

AV转换...

avconv -f concat -i list.txt -c copy output
avconv version 0.8.17-6:0.8.17-1, Copyright (c) 2000-2014 the Libav developers
  built on Mar 15 2015 17:00:31 with gcc 4.7.2
Unknown input format: 'concat'

当我删除“-f”并直接使用文件名时,它起作用了。我不知道为什么。生成的文件也按预期播放。

avconv -i concat:sr_program_2015_03_23_05_44_01.aac\|sr_program_2015_03_23_07_44_58.aac -c copy output.aac
avconv version 0.8.17-6:0.8.17-1, Copyright (c) 2000-2014 the Libav developers
  built on Mar 15 2015 17:00:31 with gcc 4.7.2
[aac @ 0xcb6cc0] channel element 3.5 is not allocated
[aac @ 0xcb4b20] max_analyze_duration reached
[aac @ 0xcb4b20] Estimating duration from bitrate, this may be inaccurate
Input #0, aac, from 'concat:sr_program_2015_03_23_05_44_01.aac|sr_program_2015_03_23_07_44_58.aac':
  Duration: 01:58:34.29, bitrate: 65 kb/s
    Stream #0.0: Audio: aac, 44100 Hz, stereo, s16, 65 kb/s
Output #0, adts, to 'output.aac':
  Metadata:
    encoder         : Lavf53.21.1
    Stream #0.0: Audio: aac, 44100 Hz, stereo, 65 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press ctrl-c to stop encoding
size=   57148kB time=7315.03 bitrate=  64.0kbits/s
video:0kB audio:57148kB global headers:0kB muxing overhead 0.000000%

注意到工作方法没有使用“-f”选项,我在第一次尝试时再次尝试,但得到了一个完全不同的错误。

avconv concat -i list.txt -c copy output.aac
avconv version 0.8.17-6:0.8.17-1, Copyright (c) 2000-2014 the Libav developers
  built on Mar 15 2015 17:00:31 with gcc 4.7.2
Unable to find a suitable output format for 'concat'

我想从文件中的文件列表处理这些“断流”aac 文件的原因是因为我想从脚本/代码创建列表,然后将其作为日常自动化流程的一部分进行处理。当流中断时,有许多文件具有相同的日期。一切顺利时,只有一个文件。它每隔一周左右发生一次。我想自动执行我通常手动执行的修复。具有讽刺意味的是,当我陷入这种奇怪的行为时,我已经根据上述同一页面上的示例完成了目标文件列表的创建。

我也想知道我做错了什么。我到处都看到我首先使用的例子。我在两台运行 debian 但架构不同(arm 和 x86)的不同机器上尝试过这个,并收到了相同的结果。

另外,为了确保我有最新的 ffmeg,我使用这个页面在每个系统上编译它... Compile FFmpeg on Ubuntu, Debian, or Mint

感谢您的宝贵时间。

最佳答案

您的系统上安装了 两个 ffmpeg 版本。

当您在命令行输入 ffmpeg 时,旧程序会启动。您可以在输出中看到这一点:

ffmpeg 版本 0.8.17-6:0.8.17-1

0.8.17 是一个较旧的分支,可能不包含 concat 分离器。

为确保启动正确的版本,请使用 ffmpeg 您自己编译到您的主目录中。

/home/your-user/bin/ffmpeg -f concat ...

如果你有最新的快照版本应该是:

ffmpeg 版本 2.6.git

关于linux - 如何使用输入的 txt 文件将 AAC 文件与 AVCONV CONCAT 连接起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29270305/

相关文章:

linux - 在 *.gz 文件上静默 zgrep 结果

linux - 在 bash 中使用 UTF 字符

linux - 通过HTTP代理的SSH隧道

iOS 从内存流中播放视频

ffmpeg - FFMPEG Hwaccel错误与hwupload

MySQL 将 JOIN 语句转换为存储过程或函数?

python - 除以 numpy 数组

python - 如果在另一个数据框中找到重复项,如何从一个数据框中删除重复项

linux - Xming 和 ssh -x 的区别

c# - 如何使用 Video Converter for .NET (C#) 或其他 FFMpeg 包装器在 Asp MVc 中创建视频缩略图