首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使ffmpeg编码一次和mux两次,加上选项?

如何使ffmpeg编码一次和mux两次,加上选项?
EN

Stack Overflow用户
提问于 2019-11-13 16:44:37
回答 1查看 340关注 0票数 0

我在-f tee上读过书,但我无法思考如何做我想做的事。

我想读取一个音频文件,编码一次,并转储出一个mp3文件以及mp3 HLS段。换句话说,单独的命令是:

代码语言:javascript
复制
$ cat file.wav | ffmpeg -y -i pipe:0 -c:a libmp3lame -q:a 0 -map 0:0 -f segment -segment_time 10 -segment_list /tmp/segments.m3u8 -segment_format mpegts -vn /tmp/segment_%03d.ts

代码语言:javascript
复制
$ cat file.wav | ffmpeg -y -i pipe:0 -c:a libmp3lame -q:a 1 /tmp/working.mp3

(请注意第二个命令中不同的qscale值)

我不太清楚如何对每个输出应用不同的命令行选项。

编辑:我有点接近解决方案,我想:

代码语言:javascript
复制
$ ffmpeg -y -i pipe:0 -c:a libmp3lame -map 0:0 -f tee -vn '[q\:a=1]/tmp/working.mp3|[q\:a=0:f=segment:segment_time=10:segment_list=/tmp/segments.m3u8:segment_format=mpegts]/tmp/segment_%03d.ts'

但是通过q\:a逃跑是行不通的:

代码语言:javascript
复制
[tee @ 0x7fe897815600] No option found near "q:a=1]/tmp/working.mp3"
[tee @ 0x7fe897815600] Slave muxer #0 failed: Invalid argument, continuing with 1/2 slaves.
[tee @ 0x7fe897815600] No option found near "q:a=0:f=segment:segment_time=10:segment_list=/tmp/segments.m3u8:segment_format=mpegts]/tmp/segment_%03d.ts"
[tee @ 0x7fe897815600] All tee outputs failed.
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Error initializing output stream 0:0 --
Conversion failed!
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-13 18:46:59

如果您只编码一次,就不能有两个q:a值--只有一个编码实例。您可以简单地在一个命令中编码两次并将这两个输出合并。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58841760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档