没有合适的资源?快使用搜索试试~ 我知道了~
08-04-音视频FLV合成实战1
需积分: 0 0 下载量 170 浏览量
2022-08-04
16:55:22
上传
评论
收藏 981KB PDF 举报
温馨提示
试读
34页
视频FLV合成实战版权归零声学院所有,侵权必究FFmpeg合成流程FFmpeg函数:avformat_write_headerFFmpeg结构体:avforma
资源详情
资源评论
资源推荐
1
⾳
视
频
FL
V
合
成
实
战
版
权
归
零
声
学
院
所
有
,
侵
权
必
究
FF
m
p
eg
合
成
流
程
FF
m
p
eg
函
数
:
a
v
f
or
ma
t
_
wr
i
t
e
_
heade
r
FF
m
p
eg
结
构
体
:
a
v
f
or
ma
t
_
all
o
c
_
output
_
c
o
n
t
e
xt
FF
m
p
eg
结
构
体
:
A
V
O
utput
F
or
ma
t
.
描
述
.
结
构
体
定
义
.
常
⻅
变
量
及
其
作
⽤
FF
m
p
eg
函
数
:
a
v
f
or
ma
t
_
ne
w
_
str
eam
FF
m
p
eg
函
数
:
a
v
_
in
t
e
r
lea
v
ed
_
wr
i
t
e
_
f
r
ame
FF
m
p
eg
函
数
:
a
v
_
c
o
m
p
a
r
e
_
ts
M
edia
I
nf
o
分
析
⽂
件
写⼊
fl
v
m
p
FF
m
p
eg
时
间
戳
详解
.
I
帧
/
P
帧
/
B
帧
.
D
TS
和
P
TS
.
FF
m
p
eg
中
的
时
间
基
与
时
间
戳
.
时
间
基
与
时
间
戳
的
概
念
.
三
种
时
间
基
t
b
r
、
t
bn
和
t
bc
.
内
部
时
间
基
A
V
_
T
IME
_
BA
S
E
.
时
间
值
形式
转
换
.
时
间
基
转
换
函
数
a
v
_
r
e
s
cale
_
q
a
v
_
r
e
s
cale
_
r
nd
.
转
封
装
过
程
中
的
时
间
基
转
换
.
转
码
过
程
中
的
时
间
基
转
换
..
视
频
流
3
ffmpeg
的
Mux
主
要
分
为
三
步
操
作
:
avformat_write_header
:
写
⽂
件
头
av_write_frame/av_interleaved_write_frame
:
写
packet
av_write_trailer
:
写
⽂
件
尾
4
avcodec_parameters_from_context
:
将
AVCodecContext
结
构
体中
码
流
参
数
拷
⻉
到
AVCodecParameters
结
构
体中
,
和
avcodec_parameters_to_context
刚
好
相
反
。
1 int avformat_write_header(AVFormatContext *s, AVDictionary **options
)
2 {
3 int ret = 0;
4 int already_initialized = s->internal->initialized;
5 int streams_already_initialized = s->internal->streams_initializ
ed;
6
7 if (!already_initialized)
8 if ((ret = avformat_init_output(s, options)) < 0)
9 return ret;
10
11 if (!(s->oformat->flags & AVFMT_NOFILE) && s->pb)
12 avio_write_marker(s->pb, AV_NOPTS_VALUE, AVIO_DATA_MARKER_HE
ADER);
13 if (s->oformat->write_header) {
14 ret = s->oformat->write_header(s);
15 if (ret >= 0 && s->pb && s->pb->error < 0)
16 ret = s->pb->error;
17 if (ret < 0)
18 goto fail;
19 flush_if_needed(s);
20 }
21 if (!(s->oformat->flags & AVFMT_NOFILE) && s->pb)
22 avio_write_marker(s->pb, AV_NOPTS_VALUE, AVIO_DATA_MARKER_UN
KNOWN);
23
24 if (!s->internal->streams_initialized) {
25 if ((ret = init_pts(s)) < 0)
26 goto fail;
27 }
28
FFmpeg
函
数
:
avformat_write_header
5
29 return streams_already_initialized;
30
31 fail:
32 if (s->oformat->deinit)
33 s->oformat->deinit(s);
34 return ret;
35 }
最
终
调
⽤
到
复
⽤
器
的
write_header
,
⽐
如
1 AVOutputFormat ff_flv_muxer = {
2 .name = "flv",
3 .long_name = NULL_IF_CONFIG_SMALL("FLV (Flash Video)"),
4 .mime_type = "video/x-flv",
5 .extensions = "flv",
6 .priv_data_size = sizeof(FLVContext),
7 .audio_codec = CONFIG_LIBMP3LAME ? AV_CODEC_ID_MP3 : AV_CODEC
_ID_ADPCM_SWF,
8 .video_codec = AV_CODEC_ID_FLV1,
9 .init = flv_init,
10 .write_header = flv_write_header, //
写
头
部
11 .write_packet = flv_write_packet,
12 .write_trailer = flv_write_trailer, //
写
⽂
件
尾
部
13 .check_bitstream= flv_check_bitstream,
14 .codec_tag = (const AVCodecTag* const []) {
15 flv_video_codec_ids, flv_audio_codec_ids,
0
16 },
17 .flags = AVFMT_GLOBALHEADER | AVFMT_VARIABLE_FPS |
18 AVFMT_TS_NONSTRICT,
19 .priv_class = &flv_muxer_class,
20 };
剩余33页未读,继续阅读
士多霹雳酱
- 粉丝: 21
- 资源: 299
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 【React框架】教程&案例&相关项目资源.docx
- cisco packet 笔记(待整理)
- redis-5.0.13-1.el7.remi.x86-64
- QML构件-数字键盘 代码工程
- 海光平台大数据软件部署、优化指南-海光平台技术培训系列
- 山东大学软件学院算法设计与分析2024年以前的部分往年题总结附答案
- 2023-04-06-项目笔记 - 第一百六十四阶段 - 4.4.2.162全局变量的作用域-162 -2024.06.14
- idea连接mysql数据库.docx
- 基于多线程的非阻塞 socket 编程
- Linux、Mac、Windows、Android、IOS等操作系统开发/调试的案例
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0