当前位置:  开发笔记 > 编程语言 > 正文

FFMPEG:Transmux mpegts到mp4给出错误:muxer不支持非可搜索输出

如何解决《FFMPEG:Transmuxmpegts到mp4给出错误:muxer不支持非可搜索输出》经验,为你挑选了1个好方法。

当管道mpegts到ffmpeg,它应该将其转换为mp4并管道转换为stdout时,ffmpeg说:"muxer不支持非可搜索输出".

经过大量的研究后,我得出的结论是mp4是一种不好的选择,可以通过搜索来进行各种动态转码.所以从本质上说:MP4不能通过ffmpeg进行管道传输,这是有道理的.

但我没有连续的mpegts流,我有5秒钟的块.所以它真的就像:

这是我的1 MB*.ts文件

请从管道读取它,直到你点击EOF

请将它转换为mp4(如果你真的需要寻找,请使用缓冲区)

请将完整的内部mp4缓冲区传输到stdout

我需要这些用于HTML5 MediaSource的mp4块,碎片没有问题,我使用mp4box.js,它就像一个魅力.

问题:

FFMPEG可以做这种内部缓冲吗?

还有更好的选择吗?

本质上:我可以(不知何故)与ffmpeg交互而不使用文件吗?我目前的解决方案适用于文件和轮询新的块,这是丑陋的.

如果您对我的ffmpeg命令感兴趣,请告诉我.



1> aergistal..:

既然您提到了碎片,那么您可以启用它movflags.从每个关键帧开始的片段示例:

ffmpeg -i segment.ts -c copy -movflags frag_keyframe+empty_moov -f mp4 -

具有空moov原子意味着它不需要寻找并因此与管道一起工作.


虽然这在某种程度上有效,但它会混淆插入MediaSource,因为持续时间总是为0,后续的块不能很快插入.这整个mp4的东西是屁股的巨大痛苦... MediaSource!为什么你不支持TS!另一种可能性是使用某种emscripten编译的ffmpeg,它在内存文件系统中有一个虚拟的.这基本上就是我正在寻找的...一种告诉ffmpeg在RAM中使用某些东西的方法,我不需要ffmpeg的流功能,因为我真的只处理5秒的块,这些块本身是独立的彼此.
推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有