FFMPEG命令将视频流复用到HLS fMP4中

问题描述

我一直试图将我的IP摄像机输出显示在网页上,以便在iThing(ipad或iphone)上查看

我在下面的视频标签中显示下面的输出

<video id='hls-example'  class="video-js vjs-default-skin" width="400" height="300" controls>
       <source type="application/x-mpegURL" src="http://127.0.0.1/wordpress/prog_index.m3u8">
</video>

我使用ffmpeg进行多路复用/转换(我的术语可能不正确)摄像机的http流(不是RTSP流)。

我已经尝试了以下多个命令,并且某些命令在PC / Chrome上可以运行,但是它们在ipad / safari或chrome上都无法运行。

所有文件都在网络服务器上的正确位置生成,以便可以显示它们

ffmpeg -i http://username:password@192.168.102.92/ISAPI/Streaming/channels/102/httpPreview  -force_key_frames "expr:gte(t,n_forced*2)" -sc_threshold 0 -s 640x480 -c:v libx264 -b:v 1536k -c:a copy -hls_time 6 -hls_playlist_type vod -hls_segment_type fmp4 -hls_segment_filename "fileSequence%d.m4s" -hls_wrap 3 prog_index.m3u8
ffmpeg -i http://username:password@192.168.102.92/ISAPI/Streaming/channels/102/httpPreview  -force_key_frames "expr:gte(t,n_forced*2)" -sc_threshold 0 -s 640x480 -c:v libx264 -b:v 1536k -c:a copy -hls_time 6 -hls_playlist_type vod -hls_segment_type fmp4 -hls_segment_filename "fileSequence%d.m4s" -hls_list_size 10 prog_index.m3u8
ffmpeg -i http://username:password@192.168.102.92/ISAPI/Streaming/channels/102/httpPreview  -force_key_frames "expr:gte(t,n_forced*2)" -sc_threshold 0 -s 640x480 -b:v 1536k -c:a copy -hls_time 6  -hls_segment_type fmp4 -hls_segment_filename "fileSequence%d.m4s" -hls_list_size 10 prog_index.m3u8
ffmpeg -i http://username:password@192.168.102.92/ISAPI/Streaming/channels/102/httpPreview -force_key_frames "expr:gte(t,n_forced*2)" -sc_threshold 0 -s 640x480 -b:v 1536k -c:a copy -hls_time 3 -hls_flags delete_segments -hls_segment_type fmp4 -hls_segment_filename "fileSequence%d.m4s" prog_index.m3u8

有人可以指出我在哪里出错,我认为这是FFMPEG cmd吗?

解决方法

由于-hls_playlist_type vod参数,第一条命令和第二条命令可能不起作用。 VOD是为静态文件制作的。由于您具有IP摄像机LiveStream,因此可能会引起问题。如果您想要完整的历史记录(在特定点启动流并保留整个历史记录,直到编码停止),则应改用EVENT。如果您只想直播,请删除该参数。

第二,所有命令都会复制音频流。由于您已经进行了视频编码,因此音频编码不会占用更多的CPU负载。因此,我还建议对音频重新编码。这使FFmpeg可以完美地创建HLS段。 -c:a aac -b:a 128k -ac 2将是一个很好的开始。

Apple还提供tools(mediastreamvalidator和hlsreport),用于验证您的HLS流(您需要Mac才能运行此工具)。有关如何使用它们的更多详细信息:https://www.martin-riedl.de/2018/09/09/hls-stream-validation/

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...