gpt4 book ai didi

ffmpeg - 使用 ffmpeg 打开 RTMP 文件时崩溃

转载 作者:行者123 更新时间:2023-12-04 23:07:36 24 4
gpt4 key购买 nike

我已经编写了使用 ffmpeg 播放视频的代码。
当我打开 AVI 文件时代码工作正常,但是当我尝试打开 RTMP 提要时出现错误。
utils.c 文件中 utils.c 文件的以下函数中
实用程序.c

int avcodec_parameters_to_context(AVCodecContext *codec,
const AVCodecParameters *par)

{
codec->codec_type = par->codec_type; // crash happens at this line.


}
**par 为 nullptr
这是我的代码
 if (load_frame("rtmp://192.168.1.2/live/sumit", &file_width, &file_height, &myData)) {
std::cout << "file Loaded";
}
load_frame 函数的定义
AVFormatContext *av_format_ctx = avformat_alloc_context();
if (!av_format_ctx) {
std::cout << "could not create a format context\n";
return false;
}

if (avformat_open_input(&av_format_ctx, filename, NULL, NULL) < 0) {
std::cout << "Couldn't open video file\n";
return false;
}
AVCodecParameters* av_codec_params = nullptr;
AVCodec* av_codec = nullptr;
int video_stream_index = -1;
for (unsigned int i = 0; i < av_format_ctx->nb_streams; i++) {
auto stream = av_format_ctx->streams[i];
av_codec_params = av_format_ctx->streams[i]->codecpar;
av_codec = avcodec_find_decoder(av_codec_params->codec_id);

if (!av_codec) {
std::cout << "Couldn't find the codec\n";
continue;
}

if (av_codec_params->codec_type == AVMEDIA_TYPE_VIDEO)
{
video_stream_index = i;
std::cout << "Video stream found" << std::endl;
break;
}

if (video_stream_index < 0)
return false;
}

// set up codec context for the decoder
AVCodecContext* av_codec_ctx = avcodec_alloc_context3(av_codec);
if (!av_codec_ctx) {
std::cout << "Couldn't create AV context";
return false;
}

// this function invokes the error
if (avcodec_parameters_to_context(av_codec_ctx, av_codec_params) < 0) {
std::cout << "Couldn't initialize AVCodecContext";
return false;
}
//////////////////编辑/////////////////////////////////
我正在流式传输一个 mpeg 文件并且 av_format_ctx->nb_streams 返回值为 0 ,为什么它无法找到任何流。
我可以通过 vlc 中的流选项在 vlc 上查看相同的文件。

最佳答案

想想avformat_open_input喜欢 fopen .它将打开一个流/文件,但您仍然没有关于流/文件内容的信息,只有一个句柄可以进行进一步操作。
如果您想实际查看流/文件中的数据,您必须首先阅读标题以确定其中的内容。 avformat_find_stream_info将实现这一点

关于ffmpeg - 使用 ffmpeg 打开 RTMP 文件时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63014332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com