我正在开发一个实时流媒体应用程序,它可以将视频从网络摄像头中捕获到H264视频流,并使用rtsp将其发送到设备,我已经查找了一些示例并找到了以下示例:FFMPEG发送RTSP编码流C++
我一直用它作为我的程序的参考。
无论如何,我一直在使用AVCodec类型"MPEG",我一直在尝试更改文件名扩展,并尝试了使用avformat_alloc_output_context2的不同方法
以下是有关守则:
const char *filename = "rtsp://127.0.0.1:7003/live.sdp";
AVOutputFormat *fmt;
AVFormatContext *oc;
AVStream *video_st;
AVCodec *video_codec;
video_st = NULL;
av_register_all();
avformat_network_init();
// format context:
avformat_alloc_output_context2(&oc,NULL,"rtsp",filename);调用avformat_alloc_output_context2后,生成oc->oformat->视频编解码器作为MPEG编解码器。我尝试过将文件扩展名更改为:
const char *filename = "rtsp://127.0.0.1:7003/live.264";
const char *filename = "rtsp://127.0.0.1:7003/live.h264";还有一些其他的扩展。
如何生成H264流?
发布于 2014-12-26 11:03:44
根据文献资料,您需要将输出格式传递给avformat_alloc_output_context2。
引用(方括号内的内容):
第二个参数是用于分配上下文的格式,如果使用空format_name和文件名代替。
此参数是指向AVOutputFormat类型的指针。
或者,您可以继续传递NULL并使用H264作为格式名推断输出。
不管怎样,我认为您需要将编码过程从流协议中分离出来。
这种关注点的分离很有用,就好像您想要使用不同的协议来获取流一样,编码代码不需要知道它。
https://stackoverflow.com/questions/27656101
复制相似问题