
ffmpeg--h264
山西茄子
多媒体工程师,从事ffmpeg,gstreamer,视频编码,deepstream等开发,做做笔记。
展开
-
ffmpeg--h264帧内解码
宏块解码函数(Decode)通过帧内预测、帧间预测、DCT反变换等方法解码压缩数据。解码函数是ff_h264_hl_decode_mb()。其中跟宏块类型的不同,会调用几个不同的函数,最常见的就是调用hl_decode_mb_simple_8()。hl_decode_mb_simple_8()的定义是无法在源代码中直接找到的,这是因为它实际代码的函数名称是使用宏的方式写的。hl_decode_转载 2017-03-09 10:02:25 · 2917 阅读 · 0 评论 -
ffmpeg获取源的pix-fmt
最近发下,解析不到源文件的pix-fmt,进入如下部分: if (t >= limit) { av_log(ic, AV_LOG_VERBOSE, "max_analyze_duration %"PRId64" reached at %"PRId64" microseconds st:%d\n", ...原创 2018-04-13 16:12:04 · 5370 阅读 · 0 评论 -
ffmpeg代码分析--h264的GPU加速
硬件选择-hwaccel_device 0{ "hwaccel_device", OPT_VIDEO | OPT_STRING | HAS_ARG |OPT_EXPERT | OPT_SPEC |OPT_INPUT, { .off = OFFSET(hwaccel_devices)...原创 2018-04-18 17:41:24 · 4944 阅读 · 0 评论 -
ffmpeg--avi转码到mp4(aac+h264)源码分享
avi转码到mp4(aac+h264)源码分享看了liuxinhongxin 前辈的源码很受启发,但在播放时头信息会有错误,略作修改,代码如下:#include #include #include #include #include #include #include void pstrcpy(char *buf, int buf_size, const cha转载 2013-03-28 12:27:00 · 2077 阅读 · 0 评论 -
ffmpeg--编码解码h264
YUV转H264代码如下:#define _WIDTH 352 #define _HEIGHT 288 void CEncodeYUVDlg::OnButEncode() { // TODO: Add your control notification handler code here uint8_t *video_outbuf; int...原创 2013-05-16 18:19:34 · 1670 阅读 · 0 评论 -
ffmpeg压缩yuv
以前写过ffmpeg压缩YUV成h264的代码,现在发现压缩成其他格式的流程也是类似的(如h263,mpeg1,mepg2,mpeg4),代码如下:/* * Video encoding example */static void video_encode_example(const char *filename){ AVCodec *codec; AVCo原创 2014-03-08 11:49:56 · 4227 阅读 · 1 评论 -
ffmpeg解码视音频
包含三个例子,解码视频(不转YUV),解码视频(转YUV),解码音频。解码视频(不转YUV)如果有一段不知道编码格式的视频码流,用ffmpeg解码的流程如下: av_register_all(); avformat_network_init(); AVFormatContext * pFormatCtx = avformat_alloc_context(); AVCodec...转载 2014-02-25 12:20:12 · 1049 阅读 · 0 评论 -
ffmpeg多线程编解码
ffmpeg多线程调研结论:ffmpeg配线程数只针对解码,不针对编码。1 解码经调研,ffmpeg对h264, hevc多线程解码,提供配置线程数的接口,如下红色部分, AV_CODEC_CAP_SLICE_THREADS为支持片级多线程,AV_CODEC_CAP_FRAME_THREADS为支持帧级多线程。AVCodec ff_h264_decoder = { .n原创 2016-06-07 15:41:42 · 15318 阅读 · 0 评论 -
ffmpeg转码封装
不同格式之间的转换肯定会涉及解码,编码,ffmpeg对编解码的封装为AVCodec(定义在avcodec.h),以h264的编解码为例:AVCodecff_libx264_encoder = { .name ="libx264", .long_name =NULL_IF_CONFIG_SMALL("libx264 H.264 / AVC /原创 2016-10-15 09:46:03 · 790 阅读 · 0 评论 -
h264解码之环路滤波
环路滤波(Loop Filter)部分 FFmpeg的H.264解码器调用decode_slice()函数完成了解码工作。这些解码工作可以大体上分为3个步骤:熵解码,宏块解码以及环路滤波。 环路滤波主要用于滤除方块效应。decode_slice()在解码完一行宏块之后,会调用loop_filter()函数完成环路滤波功能。loop_filter()函数会遍历该行宏块中的每一转载 2016-09-09 18:09:56 · 3440 阅读 · 1 评论 -
ffmpeg--解析h264
ff_h264_parserff_h264_parser是FFmpeg的H.264解析器对应的AVCodecParser结构体。它的定义位于libavcodec\h264_parser.c,如下所示。AVCodecParser ff_h264_parser = { .codec_ids = {AV_CODEC_ID_H264 }, .priv_data_size转载 2017-02-18 15:56:11 · 8895 阅读 · 0 评论 -
ffmpeg--解码h264
H.264解码器(Decoder)在初始化的时候调用了ff_h264_decode_init(),ff_h264_decode_init()又调用了下面几个函数进行解码器汇编函数的初始化工作(仅举了几个例子):ff_h264dsp_init():初始化DSP相关的汇编函数。包含了IDCT、环路滤波函数等。ff_h264qpel_init():初始化四分之一像素运动补偿相关的汇编函数。f转载 2017-02-18 16:54:28 · 3782 阅读 · 0 评论 -
ffmpeg-gpu加速
转码性能的官网描述:https://developer.nvidia.com/nvidia-video-codec-sdk1 一些测出来的结果: h264_nvenc不支持crf。设置了qp后,设置码率无效。原创 2018-05-09 10:01:21 · 2085 阅读 · 0 评论