H264 编码视频流 FFMPEG C++
h264 encode video stream ffmpeg c++
>我正在尝试开发一个从网络摄像头捕获视频的实时流媒体应用程序,将其编码为 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->video_codec 生成为 MPEG 编解码器。我尝试将文件扩展名更改为:
const char *filename = "rtsp://127.0.0.1:7003/live.264";
const char *filename = "rtsp://127.0.0.1:7003/live.h264";
以及一堆其他扩展。
如何生成 H264 流?
根据文档,您需要将输出格式传递给avformat_alloc_output_context2
。
引用(方括号中的内容是我的):
[第二个参数是] 用于分配上下文的格式,如果使用 NULL format_name 和文件名代替
此参数是指向类型 AVOutputFormat 的指针。
或者,您可以继续传递NULL
并使用 H264 作为格式名称来推断输出。
无论哪种方式,我认为您都需要将编码过程与流协议分开。
这种关注点分离很有用,就像您发现要使用不同的协议来获取流一样,编码代码不需要知道它。
相关文章:
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- FFMPEG配置文件级别id大小无效
- FFMpeg库:如何在音频文件中精确查找
- OpenCV RTP-Stream with FFMPEG
- FFmpeg——使用硬件加速进行视频解码
- 如何在 C/C++ 中使用 ffmpeg 的黑框 avfilter
- 在 GLFW 窗口中显示 FFMPEG 解码帧
- FFMPEG:sws_scale返回错误:切片参数 0, 2160 无效
- 为什么有些延迟加载 DLL 会立即使用 FFMPEG 卸载?
- 将FFMpeg AVFrame对象从C++应用程序流式传输到Python的最佳方法?
- 面临分段故障 使用 ffmpeg 读取视频时,因为"pFormatCtx-> streams [i]-> codecpar"的地址0x00
- 将 FFMPEG 帧写入 png/jpeg 文件
- FFMPEG,C++,内存泄漏,我做错了什么?
- 如何在 c++ 中使用 ffmpeg 获取 DirectShow 设备列表?
- 矛盾的未解决的外部符号+未使用的库与VS2017和FFMPEG 4
- FFmpeg av_read_frame从音频流返回数据包
- 使用ffmpeg时如何提高图像导出/提取速度?
- FFmpeg原始视频大小参数
- 用FFMPEG读取每帧时间码