把自定义的muxer加入ffmpeg源码
来源:互联网 发布:淘宝网电动工具 编辑:程序博客网 时间:2024/05/18 00:55
.简介:把上一篇文章中的muxer加入ffmpeg源码中去,使可以用命令行方式调用自定义的muxer
第一步:
在libavformat目录下新建mkmuxer.c和mkmuxer.h,代码如下:
mkmuxer.c:
/**实现一个自己的muxer(只为了熟悉框架,这个muxer其实是yuv,muxer)*作者:缪国凯(MK)*821486004@qq.com*2015-6-2*/#include "mkmuxer.h"int mk_write_header(AVFormatContext *fmt){//这些地方就可以加入自己的格式定义return 0;}int mk_write_packet(AVFormatContext *fmt, AVPacket *pkt){avio_write(fmt->pb, pkt->data, pkt->size);//简单的用file协议写文件return 0;}int mk_write_trailer(AVFormatContext *fmt){//这些地方就可以加入自己的格式定义return 0;}//#if CONFIG_MK_MUXERAVOutputFormat ff_mk_muxer = {.name= "mk",.long_name= NULL_IF_CONFIG_SMALL("mk (MK Video Container)"),.mime_type= "mkvideo/x-msvideo",.extensions= "mk",.audio_codec = AV_CODEC_ID_NONE,.video_codec = AV_CODEC_ID_RAWVIDEO,//这里先用ffmpeg自带的yuv编码器,以后改成自己的.subtitle_codec = AV_CODEC_ID_NONE,.flags= AVFMT_NOTIMESTAMPS,.priv_data_size = 0,.write_header = mk_write_header,.write_packet = mk_write_packet,.write_trailer = mk_write_trailer,};//#endif
mkmuxer.h:
/**实现一个自己的muxer(只为了熟悉框架,这个muxer其实是yuv,muxer)*作者:缪国凯(MK)*821486004@qq.com*2015-6-2*/#ifndef AVFORMAT_MKMUXER_H#define AVFORMAT_MKMUXER_H#include "avformat.h"int mk_write_header(AVFormatContext *fmt);int mk_write_packet(AVFormatContext *fmt, AVPacket *pkt);int mk_write_trailer(AVFormatContext *fmt);#endif /* AVFORMAT_RAWENC_H */
第二步:
在libavformat下的allformats.c的av_register_all里加入:REGISTER_MUXER (MK, mk);//add ByMK for mk muxer
第三步:
在libavformat目录下的makefile文件的# muxers/demuxers后加入:OBJS-$(CONFIG_MK_MUXER) += mkmuxer.o
第四步:
在ffmpeg根目录的config.h里加入:
#define CONFIG_MK_MUXER 1
DE m4v raw MPEG-4 video E matroska Matroska D matroska,webm Matroska / WebM E md5 MD5 testing D mgsts Metal Gear Solid: The Twin Snakes DE microdvd MicroDVD subtitle format DE mjpeg raw MJPEG video E mk mk (MK Video Container)</span> E mkvtimestamp_v2 extract pts as timecode v2 format, as defined by mkvtoolnix再试一下命令:ffmpeg -i test.avi -y test.mk。
拿结果改为yuv后缀,用播放器试试。
成功!OK,大功告成。
原理在上一篇的博文中已经讲到了,下一步,实现自己的demuxer。
0 0
- 把自定义的muxer加入ffmpeg源码
- 把自定义的demuxer加入ffmpeg源码
- 把自定义的decoder加入ffmpeg源码
- 把自定义的demuxer加入ffmpeg源码
- 把自定义encoder加入ffmpeg源码
- 把自定义encoder加入ffmpeg源码
- ffmpeg用代码实现自己的muxer
- ffmpeg用代码实现自己的muxer
- ffmpeg demuxer and muxer document
- ffmpeg实例muxer/demuxer小结
- 把系统通知控件加入到你的源码中
- 最简单的基于FFmpeg的封装格式处理:视音频复用器(muxer)
- 最简单的基于FFmpeg的封装格式处理:视音频复用器(muxer)
- 最简单的基于FFmpeg的封装格式处理:视音频复用器(muxer)
- 最简单的基于FFmpeg的封装格式处理:视音频复用器(muxer)
- 最简单的基于FFmpeg的封装格式处理:视音频复用器(muxer)
- 最简单的基于FFmpeg的封装格式处理:视音频复用器(muxer)
- 最简单的基于FFmpeg的封装格式处理:视音频复用器(muxer)
- SVG(Scalable Vector Graphics)可缩放矢量图形
- 是否有初始化列表、参数是否为引用时调用构造函数和析构函数的执行顺序
- Windows Server2008 开启多用户远程链接
- jquery的$.extend和$.fn.extend作用及区别
- SQL查询入门(上篇) 原理型
- 把自定义的muxer加入ffmpeg源码
- 【牛腩新闻发布系统】——表格边框显示问题
- 智能指针总结
- 考生心得:SAT阅读考试常见问题解答
- Eclipse全局搜索
- 【基础练习】【快速幂】codevs3500 快速幂入门题解
- git工程的readme的常用排版命令
- bzoj 2434 [Noi2011]阿狸的打字机 [AC自动机+树状数组]
- centos 系统安装KVM