第一基础知识要打牢,老师课堂讲的知识肯定不够,自己多搜搜一些视频教学资源。我那些年就是看https://www.coursera.org/、慕课网、极客学院,现在网上免费资源比我们那个时候好太多了
自己课余多做一些个人项目,没思路就在github上找,看看别人是怎么实现的,能学习技术的同时还能带来成就感,兴趣是最好的老师。
另外平时要多参加一些大型比赛,这些将是你实习面试进大厂的重要筹码。
第一基础知识要打牢,老师课堂讲的知识肯定不够,自己多搜搜一些视频教学资源。我那些年就是看https://www.coursera.org/、慕课网、极客学院,现在网上免费资源比我们那个时候好太多了
自己课余多做一些个人项目,没思路就在github上找,看看别人是怎么实现的,能学习技术的同时还能带来成就感,兴趣是最好的老师。
另外平时要多参加一些大型比赛,这些将是你实习面试进大厂的重要筹码。
厉害,博客地址多少我关注一波
付费的哦
@stella20212021 那应该是被电信ban了
WIFI和手机是不是同一个运营商?都电信还是移动?
@1016686656 你要建什么网站。简单的话,wordpress了解下
最后搞了好久,发现SRS拉过来的流含有类型为Data的帧。
Stream #0:0: Data: none
Stream #0:1: Audio: aac (LC), 48000 Hz, stereo, fltp, 163 kb/s
Stream #0:2: Video: h264 (High), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 2560 kb/s, 60 fps, 60 tbr, 1k tbn
这个需要加个判断,record的时候把非音频和图片的帧都过滤掉。
if(frame.streamIndex != grabber.getVideoStream()
&& frame.streamIndex != grabber.getAudioStream()) {
continue;
}
完工,奥力给
用SRS搭建一个流媒体服务器。然后使用javacv 的 FFmpegFrameGrabber
从SRS上拉流 ,并使用FFmpegFrameRecorder
录制mp4。代码如下:
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(srcUri);
grabber.setOption("threads", "1");
// 设置缓存大小,提高画质、减少卡顿花屏
grabber.setOption("buffer_size", "1024000");
// 读写超时,适用于所有协议的通用读写超时
grabber.setOption("rw_timeout", "15000000");
// 探测视频流信息,为空默认5000000微秒
grabber.setOption("probesize","15000000");
// 解析视频流信息,为空默认5000000微秒
grabber.setOption("analyzeduration", "15000000");
// rtmp拉流缓冲区,默认3000毫秒
grabber.setOption("rtmp_buffer", "1000");
String outputVideoUrl = "d:\\out.mp4";
new FFmpegFrameRecorder(outputVideoUrl, grabber.getImageWidth(),grabber.getImageHeight(),
grabber.getAudioChannels());
recorder.start();
Frame frame;
// 录制10秒视频
int duration = 10 * 1000 * 1000;
long start = grabber.getTimestamp()
while((frame = grabber.grab()) != null){
if(grabber.getTimestamp() - start > duration) {
break;
}
recorder.record(frame);
}
但是当读到图片帧的时候会报下面的错误
org.bytedeco.javacv.FFmpegFrameRecorder$Exception: avcodec_send_frame() error -541478725: Error sending a video frame for encoding.
奇怪的很。用其他流媒体服务器,node-media-server 就不报错
加个好友一起学习