FFmpeg无法从stdin流式传输AAC文件?

时间:2019-09-16 13:59:53

标签: ffmpeg

我无法让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

这是在Lambda函数中的Node.js中执行的(从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,则效果很好。这不是一个破坏交易的事情,但是能够使用stdin很好,它可以在MP3和WAV文件中正常工作。

1 个答案:

答案 0 :(得分:1)

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