FFMPEG开发之——直播流下载

前言

FFmpeg是一款多媒体视频处理工具,有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。本文主要介绍使用FFMPEG实现多媒体的直播流下载。

直播流

直播流协议

RTMP、RTSP、HTTP协议

RTMP协议

  1. 是流媒体协议
  2. RTMP协议是 Adobe 的私有协议,未完全公开
  3. RTMP协议一般传输的是 flv,f4v 格式流
  4. RTMP一般在 TCP 1个通道上传输命令和数据

RTSP协议

  1. 是流媒体协议
  2. RTSP协议是共有协议,并有专门机构做维护
  3. RTSP协议一般传输的是 ts、mp4 格式的流
  4. RTSP传输一般需要 2-3 个通道,命令和数据通道分离

HTTP协议

  1. 不是是流媒体协议
  2. HTTP协议是共有协议,并有专门机构做维护
  3. HTTP协议没有特定的传输流
  4. HTTP传输一般需要 2-3 个通道,命令和数据通道分离

可用的直播流地址

RTMP协议直播源

  1. 香港卫视:rtmp://live.hkstv.hk.lxdns.com/live/hks

RTSP协议直播源

  1. 珠海过澳门大厅摄像头监控:rtsp://218.204.223.237:554/live/1/66251FC11353191F/e7ooqwcfbqjoo80j.sdp
  2. 大熊兔(点播):rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov

HTTP协议直播源

  1. 香港卫视:http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8
  2. CCTV1高清:http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8
  3. CCTV3高清:http://ivi.bupt.edu.cn/hls/cctv3hd.m3u8
  4. CCTV5高清:http://ivi.bupt.edu.cn/hls/cctv5hd.m3u8
  5. CCTV5+高清:http://ivi.bupt.edu.cn/hls/cctv5phd.m3u8
  6. CCTV6高清:http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8
  7. 苹果提供的测试源(点播):http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear2/prog_index.m3u8

播放软件推荐:VLC

依次选择:媒体->打开网络串流

 

在打开的弹出框选择流媒体,并输入URL地址

 

点击播放后如图所示

 

流媒体下载

打开FFMPEG官网,下载相应的FFMPEG文件(本文以Windows为例)

 

下载后,进行解压

 

将path添加到环境变量

 

使用ffmpeg指令生成指定格式文件

ffmpeg -i "要下载的链接" -c copy "输出文件名.输出容器格式"  

示例

ffmpeg -i http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8 -c copy cctv1.mp4

 

按ctr+C暂停后,播放

 

 

对于使用Spring Boot和FFmpeg推送直播到SRS(Simple Realtime Server)的问题,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了FFmpeg,并且可以在命令行中运行它。 2. 创建一个Spring Boot项目,并添加相关的依赖。在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-ffmpeg</artifactId> <version>4.3.0-1</version> </dependency> ``` 3. 创建一个Controller类,并添加一个接口来处理推送直播的请求。例如: ```java import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class LiveStreamingController { @Value("${ffmpeg.path}") private String ffmpegPath; @GetMapping("/push-live-stream") public String pushLiveStream() { String input = "your_input_file_or_stream"; String output = "rtmp://your_srs_server/live/your_stream_key"; try { ProcessBuilder processBuilder = new ProcessBuilder(ffmpegPath, "-i", input, "-c:v", "libx264", "-preset", "ultrafast", "-c:a", "aac", "-f", "flv", output); Process process = processBuilder.start(); int exitCode = process.waitFor(); if (exitCode == 0) { return "Live stream pushed successfully"; } else { return "Failed to push live stream"; } } catch (Exception e) { e.printStackTrace(); return "Failed to push live stream due to an exception"; } } } ``` 在这个例子中,我们注入了FFmpeg的路径,并创建了一个推送直播的接口。你需要根据自己的实际情况修改输入文件或以及SRS服务器的地址和密钥。 4. 在application.properties文件中配置FFmpeg的路径: ```properties ffmpeg.path=/path/to/ffmpeg/bin/ffmpeg ``` 确保将上述路径替换为你的实际FFmpeg路径。 5. 运行Spring Boot应用程序,并访问`http://localhost:8080/push-live-stream`来触发推送直播的请求。 这样,你就可以使用Spring Boot和FFmpeg直播推送到SRS服务器了。请注意,这只是一个简单的示例,你可能需要根据实际需求进行更多的配置和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值