我有一个问题,这些事情是如何联系起来的,以及它们到底是做什么的。
仅供参考,我对视频播放器,编码和解码有一些经验。
在我的工作中,我从服务器处理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?
请理解我的英语不好,任何答案都将不胜感激。
感谢。
答案 0 :(得分:1)
<强> 1。只有ffmpeg可以解码UDP流(用服务器的ffmpeg编码)吗?
我不这么认为,因为ffmpeg
也可以这样做。
<强> 2。如果可以使用videotoolbox进行解码(我的意思是如果视频工具箱可以替代ffmpeg),那么ffmpeg中的videotoolbox源代码是什么?为什么会这样?
有一种解决方案可以使用tcp socket
从videotoolbox
读取数据并将其传输到ffmpeg
。
此解决方案避免了仅使用vdeotoolbox
时的高CPU使用率,并且还避免了仅使用videotoolbox
的某些错误,例如从套接字读取数据的延迟。
第3。如果videotoolbox可以解码流媒体,这是否也解码本地的H264?或者只能播放流媒体?
ffmpeg
可以同时播放本地和流媒体。 (如果我错了,请纠正我)
<强> 4。 FFmpeg仅使用CPU进行解码(软件解码器)还是hwaccel?
是的,software codec
仅使用videotoolbox
,hardware codec
为options { log_msg_size(16384); };
。