ffmpeg如何通过rtsp获取h264和h265裸流 c++ 不解码
时间: 2023-09-02 15:09:46 浏览: 151
在C++中使用FFmpeg通过RTSP获取H.264和H.265裸流,只需稍微修改之前的示例程序即可。以下是一个示例程序,它演示了如何使用FFmpeg在C++中获取H.264裸流:
```c++
extern "C" {
#include <libavformat/avformat.h>
}
int main(int argc, char* argv[]) {
av_register_all();
avcodec_register_all();
AVFormatContext* format_ctx = nullptr;
if (avformat_open_input(&format_ctx, "rtsp://your_rtsp_stream", nullptr, nullptr) != 0) {
return -1;
}
if (avformat_find_stream_info(format_ctx, nullptr) < 0) {
return -1;
}
int video_index = -1;
for (unsigned int i = 0; i < format_ctx->nb_streams; i++) {
if (format_ctx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
video_index = i;
break;
}
}
if (video_index == -1) {
return -1;
}
AVPacket pkt;
av_init_packet(&pkt);
while (av_read_frame(format_ctx, &pkt) >= 0) {
if (pkt.stream_index == video_index) {
// 这里可以对裸流进行处理,例如保存到本地文件中
}
av_packet_unref(&pkt);
}
avformat_close_input(&format_ctx);
avformat_free_context(format_ctx);
return 0;
}
```
要获取H.265裸流,只需更改AVCodec的查找方式即可。
请注意,此示例代码仅演示了如何获取裸流,您还需要添加错误处理和其他必要的功能,以使代码更加健壮。
阅读全文