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

标签 html ios video ffmpeg http-live-streaming

我一直在尝试将我的 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将是一个好的开始。
苹果还提供tools (mediastreamvalidator 和 hlsreport)验证您的 HLS 流(您需要 mac 才能运行此工具)。更多使用方法:https://www.martin-riedl.de/2018/09/09/hls-stream-validation/

关于html - FFMPEG 命令将视频流复用到 HLS fMP4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63427653/

相关文章:

javascript - 如果屏幕宽度小于 960 像素,则将屏幕宽度添加到类中

jquery - 单击复选框时更改背景颜色

ios - 从 Xcode 项目中删除单元测试?

iphone - iPad视网膜图像-为什么使用两种不同的图像尺寸?

javascript - HTML5 视频与 JavaScript - 语法困惑

html - HTML5 Web音频API-临时录制声音

html - 居中 2 个可能不会总是同时出现的 CSS

iphone - iOS iPhone 应用程序中的数据核心 Unresolved 问题

android - WebView 不存在 setPluginsEnabled

video - ffmpeg 将 mp4 文件流式传输到 Instagram 直播