将网络摄像头视频流式传输到网站

将网络摄像头视频流式传输到网站

我正在尝试构建一个系统,以便将视频从网络摄像头传输到网站,我对视频处理还不熟悉,但到目前为止,我已经了解到我需要使用FFmpeg libAWS-S3存储桶和hls.js在 .m3u8 的帮助下读取 .ts 文件。我对如何实施有一些想法,我正在寻找反馈和最佳实践来实现它。

主意:

系统上运行的python脚本将原始mp4文件发送到云端进行处理:

例如:ffmpeg -f dshow -s 640x480 -r 30 -vcodec mjpeg -i video="Integrated Webcam" output2.mp4该命令可以用来生成mp4文件,可以发送到云端进行处理。

疑问 1:我认为在系统上构建 m3u8 文件是没有意义的(ffmpeg -i output1.mp4 -c:v libx264 -x264opts keyint=60:no-scenecut profile_720p_.m3u8找不到可以直接从网络摄像头生成 m3u8 的命令),因为随着 .ts 文件不断生成,m3u8 文件也会不断更新(我不确定如何使用 .m3u8 进行直播,客户端是否不断请求和更新 m3u8 文件以了解新的 ts 地址)。此外,除了上传 mp4 文件,我是否可以直接上传 ts 文件并动态生成 m3u8 文件,因为这是一个直播,我可以使用它-hls_list_size 2来限制 .ts

一旦 mp4 文件到达云端,我计划使用它ffmpeg -i output1.mp4 -c:v libx264 -x264opts keyint=60:no-scenecut -hls_flags append_list profile_720p_.m3u8来生成 ts 和 m3u8 文件,如下所示:

ffmpeg -i output1.mp4 -c:v libx264 -x264opts keyint=60:no-scenecut -hls_flags append_list  profile_720p_.m3u8
ffmpeg -i output2.mp4 -c:v libx264 -x264opts keyint=60:no-scenecut -hls_flags append_list  profile_720p_.m3u8
ffmpeg -i output3.mp4 -c:v libx264 -x264opts keyint=60:no-scenecut -hls_flags append_list  profile_720p_.m3u8

疑问2:即使使用-hls_flags append_list,我也可以继续生成ts文件,但m3u8文件只会针对最后一个命令进行更新;例如,在对output1.mp4 m3u8文件运行上述命令后,将具有segments-0.ts到segments-5.ts,但在对output2.mp4 m3u8文件运行上述命令后,只有segments-5.ts到segments-10.ts,而不是segments-0.ts到segments-10.ts,因为我正在寻找直播,所以这不会是一个大问题。

我来这里寻求帮助来澄清与 FFmpeg 相关的疑问。

相关内容