- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的应用程序中使用了 FFMPEg 代码,我需要为我的程序获取 FLV 数据包。为此,我使用 avcodec_encode_video2()。我的问题是该函数创建了 AVPacket 数据包,它不保留完整的 FLV 格式,只有它的主体。但我仍然需要它的标题。通常另一个函数 (av_write_frame()) 可以做到这一点。我不能在我的应用程序中使用 av_write_frame(),因为它不符合我的要求。所以也许有人知道 ffmpeg 库中的一个函数,它可以将 FLV header 添加到通过 avcodec_encode_video2() 创建的数据包中。
最佳答案
FLV header 本身相对简单。
可以使用以下代码对其进行建模:
/* FLV file header */
#define FLV_SIGNATURE "FLV"
#define FLV_VERSION ((uint8)0x01)
#define FLV_FLAG_VIDEO ((uint8)0x01)
#define FLV_FLAG_AUDIO ((uint8)0x04)
typedef struct __flv_header {
uint8_t signature[3]; /* always "FLV" */
uint8_t version; /* should be 1 */
uint8_t flags;
uint32_t offset; /* always 9 */
} flv_header;
flags
字段是一个位掩码,告诉文件是否拥有视频、音频或两者兼有。例如,如果您的文件有音频和视频,则其值为 5。
offset
字段以大端编码,在小端平台上由值 150994944 表示。
uint_8 buffer[9] = {0x46, 0x4c, 0x56, 0x01, 0x05, 0x00, 0x00, 0x00, 0x09};
关于FFMPEG:AVPacket 的 FLV header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10754047/
嗨,我正在尝试使用 OpenMax 组件和来自 GitHub 的 hello_video 示例解码视频. 我只需编辑 video.c 并替换 AVFormat 上的“main frame while”
我现在正在处理一个 FFmpeg 项目,我必须存储 AVPacket 的数据来自av_read_frame , 并将数据填充到新的 AVPacket用于后续解码。 这是我的问题:当我尝试新建和释放 A
我正在使用 ffmpeg 编码器生成 AVPackets,现在我想将它们通过 UDP 发送到另一台计算机并在那里显示它们。问题是我不知道如何将数据包转换为字节并返回。我尝试用此方法复制包: AVPac
我正在使用 android NDK 和 FFmpeg native 库开发解码器。我已经使用 Android 工具为项目提供了原生支持,并且我在 videodecoder.cpp 文件中有 C 代码。
我有一个基于 Qt 的桌面应用程序,它从网络获取声音流并使用 QAudioOutput 播放它.我想为用户提供音量控制,以便他可以降低音量。我的代码如下所示: float volume_control
我正在使用 ffmpeg 对视频帧进行编码库,生成 AVPacket带有压缩数据。 感谢最近关于 S/O 的一些建议,我正在尝试使用 WebRTC 通过网络发送该帧。图书馆 libdatachanne
我想制作一个 AVPacket 的拷贝,以便以后在需要时对其进行解码。 AVPacket来自音频流。 av_dup_packet 似乎不起作用。 AVPacket 复制构造函数不起作用。 创建我自己的
我有一个存储在 char * 中的压缩图像,我想将它放回 AVPacket,以便我可以将它放入 ffmpeg 解码器。有人可以展示如何做到这一点吗?任何示例或教程将不胜感激。 提前致谢 最佳答案 我向
我在我的应用程序中使用了 FFMPEg 代码,我需要为我的程序获取 FLV 数据包。为此,我使用 avcodec_encode_video2()。我的问题是该函数创建了 AVPacket 数据包,它不
有没有办法在解码之前将一些用户私有(private)数据附加到 AVPacket 以匹配输入 AVPacket 和解码输出 AVFrame?某种AVFrame::opaque。 具体来说,h264 码
我的程序从网络接收 aac 音频流,并使用 ffmpeg 解码流,所以我必须将流数据打包到 AVPacket 结构,我使用局部变量来执行此操作,代码如下: bool OnRecvAACStream(c
我想编写一个必须通过QT UdpSocket 接收udp 数据包的应用程序,数据包由元数据和视频组成。 视频数据与来自 ffmpeg udp 的相同溪流。 我把这个数据包和选择的视频数据分开了,现在我
我编写了一个代码来读取编码域中的视频,并能够检索帧的大小和持续时间等信息。 AVPacket 类由一个变量作为数据组成。我可以阅读它,但由于它是一个咬数组,我不能以可读格式使用它。我想用这个数据与另一
我正在使用 ffmpeg 库。我想知道一个数据包可以占用多少内存。 我调试检查 AVPacket 上的成员,它们似乎都不合理,例如 AVPacket.size,ec。 最佳答案 如果您提供自己的数据缓
有可能知道一个 AVFrame 有多少个 AVPackets 吗? 我想实现一个用户可以反向播放视频的功能。 由于某些原因,我不想将临时数据放在本地文件中,所以我想直接通过 AVPacket 实现它。
我正在使用 FFMPEG 解码 H264 流,我的代码如下 AVFormatContext *pFormatCtx = NULL; AVCodecContext *pCodecCtx = NULL;
我正在开发一种工具,它从网络接收 h.264 实时流(发送方是硬件编码器),缓冲最后 x 分钟并在触发时创建最后 x 分钟的视频文件。 我的工具能够接收实时流,还可以使用 boost::seriali
我希望能够打开带有视频文件的流,并在解码器中发送我自己的数据包,其中包含我以前使用相同编解码器从不同流中存储的数据。就像在解码器中伪造我自己的数据包一样。 我的方法是使用 H.265 将帧编码为数据包
我正在开发使用 FFMPEG API 发送 mpeg2ts 流的应用程序。(avio_open、avformat_new_stream 等) 问题是应用程序已经具有 AAC-LC 音频,因此不需要对音
我在这里指的是这个线程: Muxing AVPackets into mp4 file 那边的问题与我的问题基本相同,第一个答案看起来很有希望。 用户 pogorskiy 提供的源代码(某种伪)似乎完
我是一名优秀的程序员,十分优秀!