gpt4 book ai didi

c++ - 使用 FFmpeg 通过 RTMP 发送 H.264 编码流

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:45:01 26 4
gpt4 key购买 nike

我关注了this将序列图像编码为 h.264 视频。

这是输出我的部分代码:

int srcstride = outwidth*4;
sws_scale(convertCtx, src_data, &srcstride, 0, outheight, pic_in.img.plane, pic_in.img.i_stride);
x264_nal_t* nals;
int i_nals;
int frame_size = x264_encoder_encode(encoder, &nals, &i_nals, &pic_in, &pic_out);
if (frame_size) {
fwrite(nals[0].p_payload, frame_size, 1, fp);
}

这是处理帧并将它们写入文件的循环。

现在,我正在尝试通过 RTMP 流式传输这些编码帧。据我所知,RTMP 的容器是 FLV。所以我使用命令行作为试用:
ffmpeg -i test.h264 -vcodec copy -f flv rtmp://localhost:1935/hls/test

这个适用于流式传输 h.264 编码的视频文件。

但是我如何将它实现为 C++ 代码并在生成帧的同时流式传输,就像我在流式传输我的 Facetime 相机时所做的那样。
ffmpeg -f avfoundation -pix_fmt uyvy422  -video_size 1280x720 -framerate 30 -i "1:0" -pix_fmt yuv420p -vcodec libx264 -preset veryfast -acodec libvo_aacenc -f flv -framerate 30 rtmp://localhost:1935/hls/test

这可能是一个常见且实用的话题。但是我被困在这里好几天了,真的需要一些相关的经验。谢谢!

最佳答案

查找有关 libavformat 的教程(例如 dranger,google it)或更简单,将您的 h.264 流写入 stdio,然后将其通过管道传输到 ffmpeg。

关于c++ - 使用 FFmpeg 通过 RTMP 发送 H.264 编码流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40603809/

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