我正在尝试将h264视频转换为使用h265编解码器的 hls 流。由于这bitmovin文章指出,我们需要使用fragmented mp4的hls/h265流工作在Safari。
我可以使用此命令正确转换h264为h265
ffmpeg -i input.mp4 -c:v libx265 -tag:v hvc1 out.mp4
Run Code Online (Sandbox Code Playgroud)我可以使用此命令将输入视频 ( 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 将我的 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 并重新运行脚本。
我正在尝试拍摄 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 …
我正在从实时 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 命令以生成多个比特率输出内容?请帮我。
这些隔离的日子里,我打算将我的桌面分享给朋友们,向他们解释什么是 git 实践。问题是:
我决定使用的是共享我的桌面并将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 那样以几秒的延迟看到我的桌面?值得一提的是:我不需要好的质量,滴也可以,因为我要共享一个终端窗口。