ffmpeg - 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 文件。
解决方案
这m4a
是一个 MPEG-4 Part 14 (MP4) 容器,而不是原始 AAC,可能需要查找。moov
如果将原子放置在文件的开头(即使用快速启动时),您可能可以通过管道传输它,但最好使用输入选项。
推荐阅读
- java - 为什么 Integer.class 的 Java 官方文档中没有 getChars(int i, int index, char[] buf) 方法
- python - 在 mac 上卸载 pip3
- google-chrome - RobotFramework - 同时处理 2 个浏览器选项卡并测试它们
- php - 使用 php foreach 提取 XML 没有循环
- r - R 中的 Julia(JuliaCall 和 XRJulia 不适用于 Julia 0.7 或更高版本)
- jenkins - 为 Jenkins 的 Nunit 插件写入测试结果日志
- javascript - 想要在按下按钮时终止事件
- java - 参数化 Spring bean 配置
- python - 将带有布尔输入占位符的 TensorFlow 模型转换为 TensorFlow Lite
- sql-server - SQL Server 动态 SQL 大小超过 4000 个字符