首页 > 解决方案 > FFmpeg 无法从标准输入流式传输 AAC 文件?

问题描述

我无法让 FFmpeg 将 AAC 文件转换为 HLS 块:

cat file.m4a | ffmpeg -y -i pipe:0 -c:a libmp3lame -q:a 0 -map 0:0 -f segment -segment_time 10 -segment_list ./segments.m3u8 -segment_format mpegts -vn ./segment_%03d.ts

这是在 Node.js 中的 Lambda 函数中执行的(从 AWS S3 流式传输 - 上面的命令行仅用于测试目的)。

我得到的相关错误是:

Stream mapping:
  Stream #0:0 -> #0:0 (aac (native) -> mp3 (libmp3lame))
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x397e640] stream 0, offset 0x28: partial file
pipe:0: Invalid data found when processing input

如果我这样做-i file.m4a,它工作得很好。这不是一个交易破坏者,但能够使用标准输入会很好,它适用于 MP3 和 WAV 文件。

标签: ffmpeg

解决方案


m4a是一个 MPEG-4 Part 14 (MP4) 容器,而不是原始 AAC,可能需要查找。moov如果将原子放置在文件的开头(即使用快速启动时),您可能可以通过管道传输它,但最好使用输入选项。


推荐阅读