关于-RTSP推流方案, ffmpeg 视频转 m3u8

参考文章

https://zhuanlan.zhihu.com/p/668110375
增加fmpeg 执行单个视频推流

ffmpeg -re -stream_loop -1 -i 你视频的文件名 -c copy -f rtsp rtsp://127.0.0.1:8554/video

https://blog.csdn.net/EthanCo/article/details/125321957

Windows下安装使用ffmpeg

https://zhuanlan.zhihu.com/p/118362010

ffmpeg 视频转 m3u8

ffmpeg 视频转 m3u8
要使用FFmpeg将视频转换为M3U8格式,你需要先将视频分片,然后创建一个M3U8播放列表文件。以下是一个基本的命令行示例,它将一个视频文件分割成多个视频分片,并生成相应的M3U8文件:

ffmpeg -i input.mp4 -codec: copy -start_number 0 -hls_time 10 -hls_list_size 0 -f hls output.m3u8

参数解释:

-i input.mp4: 输入视频文件。

-codec: copy: 复制编码以减少转换时间。

-start_number 0: 每个分片的起始数字。

-hls_time 10: 每个分片的时长(秒)。

-hls_list_size 0: 播放列表中的条目数,0表示无限制。

-f hls: 输出格式为HLS。

output.m3u8: 输出的M3U8文件名。

这个命令会生成output.m3u8文件和对应的视频分片文件,分片的命名通常是这样的:output-0.ts, output-1.ts, output-2.ts等。

ffmpeg 实时采集摄像头 windows

在Windows上使用FFmpeg实时采集摄像头的基本命令如下:

ffmpeg -f dshow -i video="摄像头名称" -f sdl "摄像头名称"

确保替换摄像头名称为你的摄像头设备名称。你可以通过运行以下命令来查找摄像头名称:

ffmpeg -list_devices true -f dshow -i dummy

这将列出所有可用的设备,包括摄像头。
如果你想将视频保存到文件,可以添加输出文件路径:

ffmpeg -f dshow -i video="摄像头名称" output.mp4

如果你想要更多的控制,比如设置帧率、分辨率或者去除默认的音频采集,可以使用更多的选项:

ffmpeg -f dshow -video_size 1280x720 -framerate 30 -i video="摄像头名称" -an output.mp4

在这个例子中,-video_size 设置了视频的分辨率为1280x720,-framerate 设置了帧率为30,-an 表示去除音频。

ffmpeg 实时采集桌面 windows

ffmpeg -f gdigrab -i desktop output.mp4
ffmpeg -f gdigrab -video_size 2560x1440 -framerate 30 -i desktop output3.mp4

ffmpeg将rtsp流转成m3u8 windows

要在Windows上使用FFmpeg将RTSP流转换成M3U8,你可以使用以下命令行指令。请确保你已经下载并安装了FFmpeg,并且RTSP流地址是可以访问的。
再将

ffmpeg -i "rtsp://your_rtsp_stream_address" -codec: copy -start_number 0 -hls_time 10 -hls_list_size 0 -f hls "output.m3u8"
ffmpeg -i "rtsp://localhost/live" -codec: copy -start_number 0 -hls_time 10 -hls_list_size 0 -f hls "test.m3u8"

这里是命令参数的简要说明:

-i “rtsp://your_rtsp_stream_address”:指定RTSP流的输入地址。
-codec: copy:复制编解码器,不进行转码。
-start_number 0:设置HLS播放列表中第一个文件的序列号为0。
-hls_time 10:每10秒生成一个新的HLS切片。
-hls_list_size 0:设置播放列表中保存的切片数量无限制。
-f hls:输出格式为HLS。
“output.m3u8”:输出文件的名称。
请将"rtsp://your_rtsp_stream_address"替换为你的实际RTSP流地址。输出的M3U8文件和对应的切片文件会在当前目录生成。

直播功能实现

1.先要有个rtsp流

在这里插入图片描述

2.再通过ffmpeg将rtsp流转成m3u8

ffmpeg -i "rtsp://your_rtsp_stream_address" -codec: copy -start_number 0 -hls_time 10 -hls_list_size 0 -f hls "output.m3u8"
ffmpeg -i "rtsp://localhost/live" -codec: copy -start_number 0 -hls_time 10 -hls_list_size 0 -f hls "test.m3u8"

3.将生成得m3u8文件放到nginx里面(生成的时候指定好目录就可以了)

在这里插入图片描述

4.通过vlc播放器就可以播放了(直播会有延迟)

http://localhost/test/test.m3u8
在这里插入图片描述

在这里插入图片描述

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
作为一名AI语言模型,我无法进行实战操作。但我可以为您提供相关的思路和技术方案: 1. RTSPRTMP RTSP是实时传输协议,而RTMP是实时消息传输协议。它们都是用于实时传输音视频的协议,但是它们的传输方式不同。RTSP是基于TCP的协议,而RTMP是基于TCP或UDP的协议。 要将RTSP换为RTMP,您需要使用一个换器。其中一个常用的换器是FFmpegFFmpeg是一个开源的多媒体框架,可以处理各种音视频格式,并且支持将RTSP换为RTMP。 以下是使用FFmpeg将RTSP换为RTMP的命令: ffmpeg -i rtsp://xxx.xxx.xxx.xxx:554/xxx -c copy -f flv rtmp://xxx.xxx.xxx.xxx/live/xxx 其中,rtsp://xxx.xxx.xxx.xxx:554/xxx是RTSP的地址,rtmp://xxx.xxx.xxx.xxx/live/xxx是RTMP的地址。 2. RTSPM3U8 M3U8是一种基于HTTP的协议,它是一种多媒体播放列表,用于指定媒体文件的播放顺序和位置。要将RTSP换为M3U8,您需要使用一个换器,如FFmpeg。 以下是使用FFmpeg将RTSP换为M3U8的命令: ffmpeg -i rtsp://xxx.xxx.xxx.xxx:554/xxx -c:v libx264 -c:a aac -hls_time 10 -hls_list_size 6 -hls_wrap 10 -start_number 1 /var/www/html/live/xxx.m3u8 其中,rtsp://xxx.xxx.xxx.xxx:554/xxx是RTSP的地址,/var/www/html/live/xxx.m3u8是M3U8的地址。 3. 集成到Java应用程序中 要将上述换器集成到Java应用程序中,您可以使用Java的ProcessBuilder类来执行命令行命令。以下是一个示例代码: String command = "ffmpeg -i rtsp://xxx.xxx.xxx.xxx:554/xxx -c copy -f flv rtmp://xxx.xxx.xxx.xxx/live/xxx"; ProcessBuilder processBuilder = new ProcessBuilder(command.split(" ")); processBuilder.redirectErrorStream(true); Process process = processBuilder.start(); InputStream inputStream = process.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = bufferedReader.readLine()) != null) { System.out.println(line); } process.waitFor(); 要将RTSP换为M3U8,您可以使用类似的代码,只需更改命令即可。 以上是一个基本的思路和技术方案,具体实现还需要根据您的具体需求进行调整。希望能对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值