ffmpeg example
文章平均质量分 73
用ffmpeg 库书写的简短的测试程序
hjjdebug
西方用26个字母表示世界,计算机用0,1两个数字表示世界,大道至简!
人类用6号元素碳来思考, 计算机用14号元素硅来演算,精妙绝伦!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ffmpeg 中 crc32 源码分析及调试
本文分析了FFmpeg中CRC32的实现原理,通过提取libavformat/crc.c核心代码构建独立测试程序。重点介绍了CRC表的初始化过程(av_crc_init函数)和实际计算流程(av_crc函数),其中表初始化采用多项式0x04C11DB7生成1024项查找表。代码保留了FFmpeg原有架构但简化了宏定义,便于调试理解。测试用例对字符串"hello world"进行CRC32计算,展示实际应用。分析表明该实现通过预计算查表法优化性能,支持32位CRC校验,并保持扩展其他多项式原创 2025-08-22 13:24:23 · 381 阅读 · 0 评论 -
ffmpeg 中 encode_str8 函数的用途及 GET_UTF8 宏的理解
本文分析了FFmpeg中的encode_str8函数和GET_UTF8宏。GET_UTF8宏用于解析UTF-8编码,获取原始Unicode码值,其处理过程包括判断字节前缀、拼接多字节等。UTF-8编码规则包括单字节(0x00-0x7F)和多字节(以110/1110/11110开头)两种形式。encode_str8函数则用于在UTF-8字符串前添加长度标识,当字符串包含多字节字符时,会在开头添加长度和类型标记(如0x15),否则直接添加长度。文章通过分解宏为函数的方式,结合中文字符示例,详细说明了其工作原理。原创 2025-08-20 11:17:07 · 817 阅读 · 0 评论 -
demuxing_decoding.c 解读
demuxing_decoding.c 解读----------------------------------------特点: 能够同时操作音频和视频, 比较接近与实际的碼流. 是常用的格式.程序分析:1. avformat 登场. if (avformat_open_input(&fmt_ctx, src_filename, NULL, NULL) < 0) if (avformat_find_stream_info(fmt_ctx, NULL) < 0)...原创 2022-01-29 15:49:05 · 749 阅读 · 0 评论 -
ffmpeg create_video.c
创建一个原始的视频文件.不足百行代码, 见识一下什么叫yuv420p 原始数据, 直接手工生成.怎样播放视频原始数据.ffplay -f rawvideo -pix_fmt yuv420p -video_size 800x600 video#include <libavutil/imgutils.h>static void fill_yuv_image(uint8_t *data[4], int linesize[4], in原创 2022-02-13 11:27:48 · 567 阅读 · 0 评论 -
creat_audio.c
手工创建一个原始的音频数据,见识一下音频到底是啥样的. 直接上代码. 按S16格式双声道存储.音频本是流,但是由于总要分包,所以有每包采样点数的概念,实际上是frame_size, 这里用nb_samples 表示其它概念: 数据采样格式,通道数,每秒采样率。其中采样率(sample_rate),通道数(channels),数据采样格式(sample_format)构成音频流的三要素.本例中samle_rate:44100,channels:2 sample_format:S16具体领会请看代码.原创 2022-02-15 09:27:30 · 231 阅读 · 0 评论 -
ffmpeg muxing.c 解读
ffmpeg muxing.c 解读------------------------------------------------------------很好的演示代码,生成媒体文件.是音频编码,视频编码,复用的组合体.代码略有名称修改,方面阅读重点关注其pts 及时间方面的操作!程序流程:1. 首先,创建一个avf_ctx, avformat_alloc_output_context2(&avf_ctx, NULL, NULL, filename); 关联了filename...原创 2022-02-15 17:49:16 · 373 阅读 · 0 评论 -
ffmpeg: scaling_video.c , 你学到了什么?
ffmpeg: scaling_video.c , 你学到了什么?从一种视频,scale 到另一种宽高,像素格式的视频代码很少,内容比较简单,分析如下:1. if(av_parse_video_size(&dst_w, &dst_h, dst_size) < 0)dst_size 是输入,形如 w*h, dst_w,dst_h为输出, 整形值, that's easy.2. sws_ctx = sws_getContext(src_w, src_h, src_.....原创 2022-01-29 09:21:23 · 303 阅读 · 0 评论 -
filter_audio.c 解读
filter_audio.c 解读************************************************************演示了一种音频过滤器是如何使用的.初始化一种过滤器图AVFilterGraph filter_graph,对应两种AVFilterContext src_ctx,sink_ctx,生成一个音频frame, err = get_input(frame, i);添加到src ctx, err = av_buffersrc_add_fra原创 2022-02-07 17:58:10 · 622 阅读 · 0 评论 -
encode_audio.c /encode_video.c 解读
encode_audio.c 解读----------------------------------------我们关心的不是二进制数据本身,而是如何构建的channel-layout,sample_smt及采样率Input #0, mp3, from 'audio': Duration: 00:00:05.22, start: 0.000000, bitrate: 64 kb/s Stream #0:0: Audio: mp2, 44100 Hz, stereo, fltp, 64 kb/..原创 2022-01-29 18:06:28 · 967 阅读 · 0 评论 -
decode_audio.c 解读/decode_video.c 解读
decode_audio.c 解读----------------------------------------1. pkt = av_packet_alloc(); //分配一个报2. codec = avcodec_find_decoder(AV_CODEC_ID_AAC); //查找一种codec3. parser = av_parser_init(codec->id); //初始化parser, 针对某种codec的parser4. c = avcodec_alloc_co...原创 2022-01-29 12:47:47 · 1216 阅读 · 0 评论 -
filtering_audio.c/filtering_video.c 解读
filtering_audio.c/filtering_video.c 解读************************************************************filtering_audio.c 也演示了一个利用音频过滤器,进行音频重采样的过程.打开一个碼流文件, ret = open_input_file(argv[1])初始化一个过滤器 ret = init_filters(filter_descr)读取包 ret = av_read原创 2022-02-07 18:01:17 · 506 阅读 · 2 评论 -
remuxing.c 解读
remuxing.c 解读*****************************************这是一个控制在AVFormatContext 下的程序,相较muxing.c, 省略了get_frame 形成frame, 再send_frame,receive_packet的过程. 代之以直接av_read_frame得到包.具体流程分析:一个输入format_context(ifmt_ctx),一个输出format_context(ofmt_ctx).AVFormatContex原创 2022-02-07 15:07:09 · 536 阅读 · 0 评论
分享