项目场景:
使用ffmpeg拉取rtsp服务器的码流,并且推rtmp流到nginx,web前端使用flv码流进行点播;
拉流以及推流使用的是ffmpeg原生接口;
点播服务器使用是NGINX,并集成了http-flv模块(可以参考我的其他文档。)
问题描述:
ffmpeg打开rtsp的url,从in_stream的码流中,复制所需要的h264编码信息;然后 写入对应的rtmp流(out_stream)中,结果发现写入函数av_interleaved_write_frame一直异常,无法写入?并且错误信息为“ Broke Pipe"? AVStream *in_stream = ifmt_ctx->streams[videoindex];
AVStream *out_stream = avformat_new_stream(ofmt_ctx, in_stream->codec->codec);
......
//复制AVCodecContext的设置(Copy the settings of AVCodecContext)
ret = avcodec_copy_context(out_stream->codec, in_stream->codec);
......
//紧接着调用打开、写入头、设置一些参数、循环读取数据、写入数据
ret = avio_open(&ofmt_ctx->pb, out_filename, AVIO_FLAG_WRITE);
......
ret = avformat_write_header(ofmt_ctx, /*NULL*/&options);
......
av_dump_format(ofmt_ctx, 0, out_filename, 1);
......
while (m_bRun)
{
AVStream *in_stream, *out_stream;
ret = av_read_frame(ifmt_ctx, &pkt);
if (ret < 0)
{
int err_code = ret;
char buf[1024] = {
0 };