ffmpeg相关API(2)

av_find_input_format()

cpp 复制代码
/**
 * 根据输入格式的短名称查找AVInputFormat。
*/
ff_const59 AVInputFormat *av_find_input_format(const char *short_name);

avformat_open_input()

cpp 复制代码
/**
 * 打开一个输入流并读取头。编解码器未打开。 * 必须使用avformat_close_input()关闭流。
 *
 * @param ps Pointer to user-supplied AVFormatContext (allocated by avformat_alloc_context).
 *           May be a pointer to NULL, in which case an AVFormatContext is allocated by this
 *           function and written into ps.
 *           Note that a user-supplied AVFormatContext will be freed on failure.
 * @param url 要打开的流的URL。
 * @param fmt If non-NULL, this parameter forces a specific input format.
 *            Otherwise the format is autodetected.
 * @param options  A dictionary filled with AVFormatContext and demuxer-private options.
 *                 On return this parameter will be destroyed and replaced with a dict containing
 *                 options that were not found. May be NULL.
 *
 * @return 0 on success, a negative AVERROR on failure.
 *
 * @note If you want to use custom IO, preallocate the format context and set its pb field.
 */
int avformat_open_input(AVFormatContext **ps, const char *url, ff_const59 AVInputFormat *fmt, AVDictionary **options);

avformat_close_input()

cpp 复制代码
/**
 关闭打开的输入AVFormatContext。释放它和里面的所有东西 并将 *s设置为NULL。
 */
void avformat_close_input(AVFormatContext **s);

av_read_frame()

cpp 复制代码
/**
 * 返回流的下一帧.
 * This function returns what is stored in the file, and does not validate
 * that what is there are valid frames for the decoder. It will split what is
 * stored in the file into frames and return one for each call. It will not
 * omit invalid data between valid frames so as to give the decoder the maximum
 * information possible for decoding.
 *
 * If pkt->buf is NULL, then the packet is valid until the next
 * av_read_frame() or until avformat_close_input(). Otherwise the packet
 * is valid indefinitely. In both cases the packet must be freed with
 * av_packet_unref when it is no longer needed. For video, the packet contains
 * exactly one frame. For audio, it contains an integer number of frames if each
 * frame has a known fixed size (e.g. PCM or ADPCM data). If the audio frames
 * have a variable size (e.g. MPEG audio), then it contains one frame.
 *
 * pkt->pts, pkt->dts and pkt->duration are always set to correct
 * values in AVStream.time_base units (and guessed if the format cannot
 * provide them). pkt->pts can be AV_NOPTS_VALUE if the video format
 * has B-frames, so it is better to rely on pkt->dts if you do not
 * decompress the payload.
 *
 * @return 0 if OK, < 0 on error or end of file
 */
int av_read_frame(AVFormatContext *s, AVPacket *pkt);

av_init_packet()

cpp 复制代码
/**
 * 使用默认值初始化数据包的可选字段。.
 *
 * 注意,这并不涉及data和size成员,它们必须分别初始化。
 *
 * @param pkt packet
 */
void av_init_packet(AVPacket *pkt);

av_packet_unref()

cpp 复制代码
/**
 * 把包擦干净。
 *
 * 取消引用数据包所引用的缓冲区,并重置
 * 其余分组字段设置为它们的默认值。
 *
 * @param pkt The packet to be unreferenced.
 */
void av_packet_unref(AVPacket *pkt);

av_packet_alloc()

cpp 复制代码
/* 分配AVPacket并将其字段设置为默认值。  结果
 * 必须使用av_packet_free()释放结构。
 *
 * @return一个AVPacket,在失败时填充默认值或NULL。
 *
 * @注意,这仅分配AVPacket本身,而不是数据缓冲区。那些
 * 必须通过诸如av_new_packet的其它手段来分配。
 */
AVPacket *av_packet_alloc(void);

av_packet_free()

cpp 复制代码
/**
   释放数据包,如果数据包被引用计数,它将
 * 未引用第一。
 *
 * @param要释放的pkt包。指针将被设置为NULL。
 * @note传递NULL是一个空操作。
 */
void av_packet_free(AVPacket **pkt);
相关推荐
火山上的企鹅8 小时前
QGC二次开发本地媒体浏览实战(二)FFmpeg最小系统实战
qt·ffmpeg·媒体·qgc
王江奎20 小时前
FFmpeg 中编译和使用 soxr 重采样引擎
ffmpeg·音视频
优选资源分享1 天前
小丸工具箱 vR236|ffmpeg 图形化视频压制工具
ffmpeg·音视频
coding_fei2 天前
将FFmpeg集成到aosp
ffmpeg
狄林可2 天前
从付费软件到自主开发:我用AI和FFmpeg实现了一个录屏工具
人工智能·ffmpeg
没有余地 EliasJie3 天前
FFmpeg介绍与ESP32资源受限下的视频流传输优化策略
单片机·物联网·ffmpeg
不想看见4043 天前
Qt+FFmpeg 极简播放器示例【音视频方向简单讲解】
qt·ffmpeg·音视频
郭涤生3 天前
FFmpeg 最常用的 200 条命令分类整理
ffmpeg
yikegis3 天前
TOP 5 在线音频剪辑软件 免费(2026)
人工智能·ffmpeg·音视频·语音识别·学习方法·canva可画
无巧不成书02185 天前
FFmpeg 保姆级安装教程!Windows/macOS/Linux全平台覆盖,
windows·macos·ffmpeg