仅供学习
首先得去liunx安装ssr并搭建服务器,基于ffmpeg进行的推流。
git上拉去源码:
git clone https://github.com/ossrs/srs.git
进入你git到本地的文件地址:
cd ./srs/trunk/
然后编译srs:
./configure && make
编译完成就可以运行srs:
./objs/srs -c conf/srs.conf
可以查看运行状态:
./etc/init.d/srs status
然后浏览器访问:linux的ip+端口(192.168.1.27:8080)
这样就启动成功了。
SRS默认端口是8080,可以修改配置文件更改conf/srs.conf的配置
这样就可以进行推流了
导入maven依赖
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv-platform</artifactId>
<version>1.5.7</version>
</dependency>
可以使用 JavaCV 提供的类和方法来进行对 FFmpeg 的操作,包括视频的读取、解码、编码、剪切、合并、转码等。我这儿就推流。
// 视频源
private static FFmpegFrameGrabber ffmpeg=null;
// 推送
private static FFmpegFrameRecorder recorder=null;
/**
* api进行视频推流
* @param inputUrl 推流输入地址
* @param outputUrl 推流目标地址
*/
public static void startSteam(String inputUrl,String outputUrl){
try {
// 初始化ffmpeg实例
ffmpeg = new FFmpegFrameGrabber(inputUrl);
ffmpeg.start();
// 初始化recoder实例
recorder=new FFmpegFrameRecorder(outputUrl,ffmpeg.getImageWidth(),ffmpeg.getImageHeight());
// 设置格式和编码
recorder.setFormat("flv");
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
// 设置比特率(kbps)
recorder.setVideoBitrate(200);
// 设置声道
recorder.setAudioChannels(1);
// 开始推流
recorder.start();
Frame frame;
while ((frame=ffmpeg.grab())!=null){
recorder.record(frame);
}
}catch (Exception e){
e.printStackTrace();
}finally{// 释放资源
if (recorder!=null){
try {
recorder.close();
recorder.release();
}catch (Exception e){
e.printStackTrace();
}
}
if (ffmpeg!=null){
try {
ffmpeg.close();
ffmpeg.release();
}catch (Exception e){
e.printStackTrace();
}
}
}
}
流的名字随便取,
然后用ffplay.exe拉取
命令:
ffplay.exe rtmp://127.0.0.1:1935/live/home
效果图
成功,(找不到元素)有个报错是因为我没有装音频输出设备。
当然你也可以用VLC视频工具去获取流,然后播放