使用FFmpeg转录网络直播流

爱奇艺万能播放器的最新版本增加了一个播放网络流的功能。不过,入口藏在播放器区域的右键菜单里,不太好找:

找来一个直播流URL,比如东森新闻 http://60.199.188.151/HLS/WG_ETTV-N/index.m3u8,试了一下,还不赖呢!

有时候,看到精彩的直播内容,想把某些片段保存到本地。无奈播放器不提供这样的功能。那么,开个小窗给FFmpeg吧,它可以搞定!

命令行如下:

ffmpeg -i http://60.199.188.151/HLS/WG_ETTV-N/index.m3u8 d:\cap.mp4

这条命令会持续不断地抓取网络视频流,然后写入d:\cap.mp4文件,直到你按下键盘上的“Q”键才停止。如果你就想录制一小段时间(比如60秒),可以在-i参数前加-t参数来控制,如下:

ffmpeg -t 60 -i http://60.199.188.151/HLS/WG_ETTV-N/index.m3u8 d:\cap.mp4

上面例子中的直播流是HTTP协议的。FFmpeg还支持其他什么协议吗?这也简单!在控制台输入ffmpeg -protocols便一目了然了。

不禁又一次暗暗佩服:FFmpeg Holy-High!得意

 

Ps. 有位同学提醒道,应该加上-c:v copy -c:a copy(另一种表达方式是-vcodec copy -acodec copy)来避免转码。吾深以为然!这对于实时采集的场景尤为重要!经测试,效果喜人,FFmpeg的CPU占用从之前的80%降到了1%!!!

完整命令行如下:

ffmpeg -i http://60.199.188.151/HLS/WG_ETTV-N/index.m3u8 -c:v copy -c:a copy -bsf:a aac_adtstoasc d:\cap.mp4

对于使用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服务器了。请注意,这只是一个简单的示例,你可能需要根据实际需求进行更多的配置和处理。
评论 62
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值