标签: hls

使用 h265 编解码器生成 hls 流

我正在尝试将h264视频转换为使用h265编解码器的 hls 流。由于这bitmovin文章指出,我们需要使用fragmented mp4hls/h265流工作在Safari。

  1. 我可以使用此命令正确转换h264h265

    ffmpeg -i input.mp4 -c:v libx265 -tag:v hvc1 out.mp4
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我可以使用此命令将输入视频 ( h264)转换为 hls ( fragmented mp4)

    ffmpeg -y -i input.mp4 \
        -c copy -hls_segment_type fmp4 -hls_time 6 -hls_list_size 10 \
        -hls_flags delete_segments+append_list+split_by_time \ 
        -hls_playlist_type vod manifest.m3u8
    
    Run Code Online (Sandbox Code Playgroud)

现在,当我通过指定使用上述命令时h265,输出 hls 流在 Safari 中不起作用。它抛出这个错误

Plugin Handled Load
Run Code Online (Sandbox Code Playgroud)

命令

ffmpeg -y -i input.mp4 \
    -vf scale=640:360 -c:v libx265 -tag:v hvc1 -c:a copy \ …
Run Code Online (Sandbox Code Playgroud)

ffmpeg streaming h.265 hls

10
推荐指数
1
解决办法
5072
查看次数

RTSP -> HLS 使用 FFMPEG

我正在使用 FFMPEG 将我的 rtsp 流转换为 HLS 流,以便它可以使用播放器 js 在我网站上的所有浏览器上播放。如果与 rtsp 流的互联网连接断开一分钟,我就会遇到 FFMPEG 死机的问题。有没有办法让它重新连接?我已经尝试在 -i 标志之前使用 -reconnect 标志,但我发现没有找到该命令。

ffmpeg -i rtsp://rtspstreamaddress/1 -fflags flush_packets -max_delay 2 -flags -global_header -hls_time 2 -hls_list_size 3 -vcodec copy -y /var/www/video.m3u8

然后我有一个使用 playwerjs 来显示实时流的网站。如何确保流保持正常运行,而无需手动登录 VPS 并重新运行脚本。

debian ffmpeg rtsp hls

7
推荐指数
1
解决办法
9645
查看次数

ffmpeg HLS 播放列表没有从头开始

我正在尝试拍摄 5 分钟的视频文件并生成单文件HTTP Live Stream 播放列表和.ts文件。从 iOS 5 开始,播放列表文件格式可以支持字节范围而不是单独的文件,这是我的用例的一个很好的目标。但是,当我运行我的ffmpeg命令时,结果.m3u8播放列表中的第一个条目不会从(甚至接近)字节 0 开始。

例如:

ffmpeg -i input -hls_flags single_file out.m3u8
Run Code Online (Sandbox Code Playgroud)

产生这样的播放列表:

#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:11
#EXT-X-MEDIA-SEQUENCE:63
#EXTINF:1.376367,
#EXT-X-BYTERANGE:568324@63107840
out.ts
#EXTINF:1.334667,
#EXT-X-BYTERANGE:235564@63676164
out.ts
#EXTINF:1.918589,
#EXT-X-BYTERANGE:343288@63911728
out.ts
#EXTINF:10.427078,
#EXT-X-BYTERANGE:3311996@64255016
out.ts
#EXTINF:5.672333,
#EXT-X-BYTERANGE:52828@67567012
out.ts
#EXT-X-ENDLIST
Run Code Online (Sandbox Code Playgroud)

请注意,第一个EXT-X-BYTERANGE条目不是@0——它在 68 MB.ts文件中大约有 63 MB 。实际上,当将播放列表加载到<video>标签中并使用 Safari 打开 HTML 时,视频播放从输入视频的结尾开始大约 20 秒,而不是从 0 开始,并且无法更早地进行清理。

为什么ffmpeg制作了不包含所有视频的播放列表?当我观看.ts播放列表旁边生成的文件时,所有视频内容都存在。

我在 Linux 下最近的ffmpeg …

ffmpeg streaming hls

6
推荐指数
1
解决办法
4662
查看次数

如何从实时 rtsp 流生成多比特率的 HLS 内容?

我正在从实时 rtsp 流中生成单比特率实时 hls 内容。我正在使用以下命令

ffmpeg -v verbose -i rtsp://127.0.0.1:8080/test.sdp \
 -vcodec libx264 -acodec aac -ac 1 -strict -2 -crf 18 -profile:v baseline \
 -maxrate 400k -bufsize 1835k -pix_fmt yuv420p -flags -global_header \
 -hls_time 10 -hls_list_size 3 -hls_wrap 4 -hls_flags delete_segments \
 -start_number 1 /usr/local/apache-tomcat-7.0.53/webapps/ROOT/hls/index1.m3u8
Run Code Online (Sandbox Code Playgroud)

如何修改上述 ffmpg 命令以生成多个比特率输出内容?请帮我。

ffmpeg rtsp hls

5
推荐指数
1
解决办法
2万
查看次数

通过 http 使用 ffmpeg 广播屏幕

这些隔离的日子里,我打算将我的桌面分享给朋友们,向他们解释什么是 git 实践。问题是:

  • 我使用 FreeBSD。
  • 我们落后于 NAT。但我已经为这些目的配置了带有 VPN (Wireguard) 的 VPS。
  • 我想使用免费且简单(“无趣”)的软件。

我决定使用的是共享我的桌面并将ffmpeg -f x11grab输出流到任何端口。由于我们可以在一个虚拟网络中,朋友们可以使用任何 VLC、MPV 或网络浏览器毫无问题地观看此流。当我了解到 ffmpeg 无法直接输出到 http 时,问题就出现了。我尝试了很多解决方案,例如通过 rtmp 发送到 YouTube Live Streaming(开销,而不是免费服务)以及使用 HLS 协议和 HTTP 服务器进行分割和共享,并在 HLS 处停止。

我的 ffmpeg 启动:

ffmpeg -f x11grab -video_size 1920x1080 -i :0 -c:v h264 -f hls -hls_time 1 -g 15 stream.m3u8
Run Code Online (Sandbox Code Playgroud)

以及我正在测试的 mpv:

mpv --no-cache --no-resume-playback stream.m3u8
Run Code Online (Sandbox Code Playgroud)

我发现有大约 10-15 秒的延迟。即使我将视频比特率设置为半兆字节,也会有类似的延迟(当然质量也很差),因此这可能意味着问题不在于带宽[而且我什至没有开始在比我的本地更远的地方广播它个人电脑!]。

我找到了一个SO 答案,其中用户说 HLS 是低延迟的错误协议。我阅读了很多博客、维基百科文章和 ffmpeg 维基百科(StreamingGuide),但找不到解决方案。我怎样才能减少延迟,或者我可以使用什么软件(最好是 ffmpeg)让我的朋友像 Discord 和 Skype 那样以几秒的延迟看到我的桌面?值得一提的是:我不需要好的质量,滴也可以,因为我要共享一个终端窗口。

ffmpeg streaming video-streaming hls

5
推荐指数
0
解决办法
2515
查看次数

标签 统计

ffmpeg ×5

hls ×5

streaming ×3

rtsp ×2

debian ×1

h.265 ×1

video-streaming ×1