gpt4 book ai didi

c# - 流式视频(C#使用FFmpeg AutoGen)发送多个数据请求

转载 作者:行者123 更新时间:2023-11-30 18:19:58 30 4
gpt4 key购买 nike

我编写了一个视频生成器,可以为 h264 格式 (mp4) 的视频提供版权。当我从我的 Azure 服务流式传输视频时,我看到以下网络流量:

enter image description here

我使用的 AVCodecContext 布局如下:

AVCodec* videoCodec = ffmpeg.avcodec_find_encoder(AVCodecID.AV_CODEC_ID_H264)
AVCodecContext* videoCodecContext = ffmpeg.avcodec_alloc_context3(videoCodec);
videoCodecContext->bit_rate = 400000;
videoCodecContext->width = 1280;
videoCodecContext->height = 720;
videoCodecContext->gop_size = 12;
videoCodecContext->max_b_frames = 1;
videoCodecContext->pix_fmt = videoCodec->pix_fmts[0];
videoCodecContext->codec_id = videoCodec->id;
videoCodecContext->codec_type = videoCodec->type;
videoCodecContext->time_base = new AVRational
{
num = 1,
den = 30
};

ffmpeg.av_opt_set(videoCodecContext->priv_data, "preset", "ultrafast");

我还尝试通过 AVDictionary 为 avformat_write_header() 设置“movflags”选项,但随后 av_write_trailer() 返回 -2,导致文件未完成写入。

我不知道如何解决这个问题。使用 Windows Movie Maker 生成的视频可以完美流式传输。

我知道这与 mdat 和 mov 位置有关。

此外,这似乎只发生在 Google Chrome 中。

最佳答案

好的,明白了。我一直在先写视频帧,然后再写音频帧。相反,您必须并排编写它们,以便 faststart 实际工作并允许视频流式传输。

因此,写入特定数量的音频,然后通过检查时基与当前写入索引来确定是否应写入视频帧。

example将向您展示它是如何完成的。

此外,要使视频和音频流具有准确的 PTS/DTS 值,请查看 this问题。

关于c# - 流式视频(C#使用FFmpeg AutoGen)发送多个数据请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38011263/

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