使用任何协议/编解码器的实时流媒体如何从端到端工作?
我一直在搜索google,youtube,FFMPEG文档,OBS源代码,堆栈溢出,但仍然无法从视频中了解实时视频流的工作方式。因此,我试图捕获桌面屏幕截图,并将其转换为H.264编码的实时视频流。
我尝试使用FFMPEG将.mp4文件连续发送到RTMP服务器上,但这似乎不起作用,因为它会在每个视频后关闭连接。我还研究了使用ffmpeg concat列表,但这只是结合了视频,无法将实时流读取的视频附加到我的理解中,并且可能不是为此而制作的。
所以我最好的线索来自this stackoverflow answer,它表明:
此编码和转换如何完成?可以使用ffmpeg命令完成所有操作吗?
答案 0 :(得分:0)
自从您提到C#之后,MediaFoundation将是最适合您的解决方案。
您可以检查我的sample(经过全面测试),它基于桌面复制进行桌面捕获。 该示例使用媒体基础将帧编码为H264,并使用Live555实时直播包装在RTP中的输出视频。通过这种方法,我能够达到100FPS。 Live555还支持RTSP,HLS和MPEG。
您还可以检查this one,它基于GDI方法进行桌面捕获。并且h264编码的视频以MPEG容器格式流式传输。
还有更多参考链接。
答案 1 :(得分:0)
如果您需要屏幕截图,则可以使用任何编解码器-H.264,HEVC或mJPEG
基于平台选择输入界面-如v4l2或dshow
通过下面的链接了解特定流方案的cmd用法。
RTMP / RTSP流
[ffmpeg] [1]-https://trac.ffmpeg.org/wiki/StreamingGuide
HLS / DASH流
[mp4Box] [1]-https://gpac.wp.imt.fr/mp4box/
注意:对于HLS / DASH流,您需要设置HTTP服务器-nginx,IIS或Apache服务器。