iOS

时间:2016-07-07 16:07:54

标签: ffmpeg avplayer decoding decoder

我有一个问题,这些事情是如何联系起来的,以及它们到底是做什么的。

仅供参考,我对视频播放器,编码和解码有一些经验。

在我的工作中,我从服务器处理udp流,并使用ffmpeg将其解码并使用openGL绘制它。并且还使用ffmpeg进行视频播放。

这些是问题......

1。只有ffmpeg可以解码UDP流(用服务器的ffmpeg编码)吗?

我找到了一些关于 videotoolbox 的有用信息,它可以解码iOS中的硬件加速流。那么我还能用videotoolbox解码来自服务器的流媒体吗?

2。如果可以使用videotoolbox进行解码(我的意思是如果视频工具箱可以替代ffmpeg),那么ffmpeg中的videotoolbox源代码是什么?为什么会这样?

在我的解码器中,我从流媒体制作AVCodecContext,它有hwaccel和hwaccel_context字段,它们都设置为空。我认为这个videotoolbox是一种API,可以帮助ffmpeg使用iOS的hwaccel。但现在看起来并不正确......

第3。如果videotoolbox可以解码流媒体,这是否也解码本地的H264?或者只能播放流媒体?

AVPlayer是播放视频的好工具,但如果视频工具箱可以取代这个AVPlayer那么,有什么好处呢?还是不可能?

4。 FFmpeg仅使用CPU进行解码(软件解码器)还是hwaccel?

当我使用ffmpeg播放器播放视频时,CPU使用率超过100%并且这是否意味着此ffmpeg仅使用软件解码器?或者有办法使用hwaccel?

请理解我的英语不好,任何答案都将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:1)

<强> 1。只有ffmpeg可以解码UDP流(用服务器的ffmpeg编码)吗?

我不这么认为,因为ffmpeg也可以这样做。

<强> 2。如果可以使用videotoolbox进行解码(我的意思是如果视频工具箱可以替代ffmpeg),那么ffmpeg中的videotoolbox源代码是什么?为什么会这样?

有一种解决方案可以使用tcp socketvideotoolbox读取数据并将其传输到ffmpeg

此解决方案避免了仅使用vdeotoolbox时的高CPU使用率,并且还避免了仅使用videotoolbox的某些错误,例如从套接字读取数据的延迟。

第3。如果videotoolbox可以解码流媒体,这是否也解码本地的H264?或者只能播放流媒体?

ffmpeg可以同时播放本地和流媒体。 (如果我错了,请纠正我)

<强> 4。 FFmpeg仅使用CPU进行解码(软件解码器)还是hwaccel?

是的,software codec仅使用videotoolboxhardware codecoptions { log_msg_size(16384); };