我在-f tee上读过书,但我无法思考如何做我想做的事。
我想读取一个音频文件,编码一次,并转储出一个mp3文件以及mp3 HLS段。换句话说,单独的命令是:
$ 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和
$ cat file.wav | ffmpeg -y -i pipe:0 -c:a libmp3lame -q:a 1 /tmp/working.mp3(请注意第二个命令中不同的qscale值)
我不太清楚如何对每个输出应用不同的命令行选项。
编辑:我有点接近解决方案,我想:
$ 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逃跑是行不通的:
[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!发布于 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
https://stackoverflow.com/questions/58841760
复制相似问题