既然已经可以通过 RTSP 获取h264 裸流了。那么通过 FFmpeg 将其保存到文件中怎么做呢?
一、首先RTSP获取 h264 裸流
我们上面两篇文章主要讲的是通过 rtsp://Your ip:554/stream_chn0.h265 播放H.265视频流。
PS:我刚试了一下,我的 FFmpeg 程序暂时不支持 h265 ... 之前编译的时候,只提供了 x264没有x265
如果感兴趣参看下面两篇文章添加。
参看:使用VS2015添加对ffmpeg添加h265 支持。
再结合之前讲的,FFmepg 再学习系列,应该是没问题的。不过好久没有弄了,早忘了了。
那现在没有可以播放的 H.264 视频流了啊,怎么办?
有办法之前讲过一篇文章,参看:LIVE555再学习 -- VLC搭建RTSP服务器(转) 用VLC搭建一个不就完了。
当然还可以直接用 live555,参看:LIVE555再学习 -- live555实现RTSP直播服务器 (推荐)
二、FFmpeg 将H.264 裸流保存到文件
这个也好说,之前有讲到,参看:FFmpeg再学习 -- SDL 环境搭建和视频显示
将其改改就可以了。
具体代码如下:
参看:利用ffmpeg将RTSP传输的h264原始码流保存到文件中
- #include "stdafx.h"
- #include <stdio.h>
- #define __STDC_CONSTANT_MACROS
- #ifdef _WIN32
- //Windows
- extern "C"
- {
- #include "libavcodec/avcodec.h"
- #include "libavformat/avformat.h"
- #include "libswscale/swscale.h"
- #include "SDL2/SDL.h"
- };
- #else
- //Linux...
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- #include <libavcodec/avcodec.h>
- #include <libavformat/avformat.h>
- #include <libswscale/swscale.h>
- #include <SDL2/SDL.h>
- #ifdef __cplusplus
- };
- #endif
- #endif
- int main(int argc, char* argv[])
- {