ffmpeg 源码分析

ffmpeg读取文件调用栈
avpriv_open (filename=0x4f136d8 "1.h264", flags=32896) (libavutil/file_open.c:84)
#1 0x63446c
file_open(h=0x4f136a0, filename=0x4f136d8 "1.h264", flags=1) (libavformat/file.c:223)
#2 0x61e7e9
ffurl_connect(uc=0x4f136a0, options=0x28fa8c) (libavformat/avio.c:209)
#3 0x61ee5d
ffurl_open_whitelist(puc=0x28f9d8, filename=0x4f129c6 "1.h264", flags=1, int_cb=0x4f133b8, options=0x28fa8c, whitelist=0x0, blacklist=0x0, parent=0x0) (libavformat/avio.c:347)
#4 0x622043
ffio_open_whitelist(s=0x4f12f30, filename=0x4f129c6 "1.h264", flags=1, int_cb=0x4f133b8, options=0x28fa8c, whitelist=0x0, blacklist=0x0) (libavformat/aviobuf.c:1046)
#5 0x60b6d4
io_open_default(s=0x4f12f20, pb=0x4f12f30, url=0x4f129c6 "1.h264", flags=1, options=0x28fa8c) (libavformat/options.c:112)
#6 0x60c746
init_input(s=0x4f12f20, filename=0x4f129c6 "1.h264", options=0x28fa8c) (libavformat/utils.c:415)
#7 0x60caf5
avformat_open_input(ps=0x28faf4, filename=0x4f129c6 "1.h264", fmt=0x0, options=0x4f12c34) (libavformat/utils.c:529)
#8 0x40a628
open_input_file(o=0x28fba8, filename=0x4f129c6 "1.h264") (ffmpeg_opt.c:997)
#9 0x412ac1
open_files(l=0x4f12a4c, inout=0x13b3c97 <groups+215> "input", open_file=0x409f3e <open_input_file>) (ffmpeg_opt.c:3135)
#10 0x412c1f
ffmpeg_parse_options(argc=9, argv=0x4f12a90) (ffmpeg_opt.c:3175)
#11 0x425ef9
main(argc=9, argv=0x4f12a90) (ffmpeg.c:4564)






ffmpeg 创建udp socket调用栈
ff_socket (af=2, type=2, proto=0) (libavformat/network.c:175)
#1 0x64a3e8
udp_socket_create(h=0x6ce09a0, addr=0x28dd68, addr_len=0x28dd64, localaddr=0x0) (libavformat/udp.c:389)
#2 0x64b08a
udp_open(h=0x6ce09a0, uri=0x6ce09d8 "udp://192.168.1.101:8001?fifo_size=0", flags=2) (libavformat/udp.c:822)
#3 0x61e7e9
ffurl_connect(uc=0x6ce09a0, options=0x28e794) (libavformat/avio.c:209)
#4 0x61ee5d
ffurl_open_whitelist(puc=0x6ce0804, filename=0x28ebe0 "udp://192.168.1.101:8001?fifo_size=0", flags=2, int_cb=0x6ce07a0, options=0x28e794, whitelist=0x0, blacklist=0x0, parent=0x6ce0780) (libavformat/avio.c:347)
#5 0x64814a
rtp_open(h=0x6ce0780, uri=0x6ce07b8 "rtp://192.168.1.101:8001", flags=2) (libavformat/rtpproto.c:384)
#6 0x61e7e9
ffurl_connect(uc=0x6ce0780, options=0x4f1ce44) (libavformat/avio.c:209)
#7 0x61ee5d
ffurl_open_whitelist(puc=0x28f9c8, filename=0x4f129e1 "rtp://192.168.1.101:8001", flags=2, int_cb=0x65d5d98, options=0x4f1ce44, whitelist=0x0, blacklist=0x0, parent=0x0) (libavformat/avio.c:347)
#8 0x622043
ffio_open_whitelist(s=0x65d5910, filename=0x4f129e1 "rtp://192.168.1.101:8001", flags=2, int_cb=0x65d5d98, options=0x4f1ce44, whitelist=0x0, blacklist=0x0) (libavformat/aviobuf.c:1046)
#9 0x6220c0
avio_open2(s=0x65d5910, filename=0x4f129e1 "rtp://192.168.1.101:8001", flags=2, int_cb=0x65d5d98, options=0x4f1ce44) (libavformat/aviobuf.c:1060)
#10 0x410207
open_output_file(o=0x28fba8, filename=0x4f129e1 "rtp://192.168.1.101:8001") (ffmpeg_opt.c:2423)
#11 0x412ac1
open_files(l=0x4f12a40, inout=0x13b3ce1 <groups+289> "output", open_file=0x40e90d <open_output_file>) (ffmpeg_opt.c:3135)
#12 0x412c90
ffmpeg_parse_options(argc=9, argv=0x4f12a90) (ffmpeg_opt.c:3189)
#13 0x425ef9
main(argc=9, argv=0x4f12a90) (ffmpeg.c:4564)






ffmpeg udp 发送调用栈
udp_write (h=0x6d309a0, buf=0x6d2d160 "\200`\ayR\353\062\246\370\245蜒<\005d^狙\001仨絿\003勠\302\060\242\206ゃ\242\167N\305\001咆r\177t单&\037`焊\316 \026菕N鎒沄B豕\321\066\203\vj\001&nPc郅 D弞耢啻簏L詛]\242\240舍\352%\026葑=$i姺岸寭\242\332RM、&惋9\376oJ'\022鷻舞娗\335\020滖C蛎+d銶mΖ<j佯\027\252)\032\025\215\063稴\242<銩\213\001瑺搚r(戅\331\060\025\203=菋QG\024\251\370\332o塌昕7艣\256)1xzZM\366\r 垎P\306>芬\232\005", size=1472) (libavformat/udp.c:1124)
#1 ??
0x0061ef38 in retry_transfer_wrapper (h=0x6d309a0, buf=0x6d2d160 "\200`\ayR\353\062\246\370\245蜒<\005d^狙\001仨絿\003勠\302\060\242\206ゃ\242\167N\305\001咆r\177t单&\037`焊\316 \026菕N鎒沄B豕\321\066\203\vj\001&nPc郅 D弞耢啻簏L詛]\242\240舍\352%\026葑=$i姺岸寭\242\332RM、&惋9\376oJ'\022鷻舞娗\335\020滖C蛎+d銶mΖ<j佯\027\252)\032\025\215\063稴\242<銩\213\001瑺搚r(戅\331\060\025\203=菋QG\024\251\370\332o塌昕7艣\256)1xzZM\366\r 垎P\306>芬\232\005", size=1472, size_min=1472, transfer_func=0x64b823 <udp_write>) (libavformat/avio.c:378)
#2 ??
0x0061f12e in ffurl_write (h=0x6d309a0, buf=0x6d2d160 "\200`\ayR\353\062\246\370\245蜒<\005d^狙\001仨絿\003勠\302\060\242\206ゃ\242\167N\305\001咆r\177t单&\037`焊\316 \026菕N鎒沄B豕\321\066\203\vj\001&nPc郅 D弞耢啻簏L詛]\242\240舍\352%\026葑=$i姺岸寭\242\332RM、&惋9\376oJ'\022鷻舞娗\335\020滖C蛎+d銶mΖ<j佯\027\252)\032\025\215\063稴\242<銩\213\001瑺搚r(戅\331\060\025\203=菋QG\024\251\370\332o塌昕7艣\256)1xzZM\366\r 垎P\306>芬\232\005", size=1472) (libavformat/avio.c:429)
#3 ??
0x00648876 in rtp_write (h=0x6d30780, buf=0x6d2d160 "\200`\ayR\353\062\246\370\245蜒<\005d^狙\001仨絿\003勠\302\060\242\206ゃ\242\167N\305\001咆r\177t单&\037`焊\316 \026菕N鎒沄B豕\321\066\203\vj\001&nPc郅 D弞耢啻簏L詛]\242\240舍\352%\026葑=$i姺岸寭\242\332RM、&惋9\376oJ'\022鷻舞娗\335\020滖C蛎+d銶mΖ<j佯\027\252)\032\025\215\063稴\242<銩\213\001瑺搚r(戅\331\060\025\203=菋QG\024\251\370\332o塌昕7艣\256)1xzZM\366\r 垎P\306>芬\232\005", size=1472) (libavformat/rtpproto.c:546)
#4 ??
retry_transfer_wrapper (h=0x6d30780, buf=0x6d2d160 "\200`\ayR\353\062\246\370\245蜒<\005d^狙\001仨絿\003勠\302\060\242\206ゃ\242\167N\305\001咆r\177t单&\037`焊\316 \026菕N鎒沄B豕\321\066\203\vj\001&nPc郅 D弞耢啻簏L詛]\242\240舍\352%\026葑=$i姺岸寭\242\332RM、&惋9\376oJ'\022鷻舞娗\335\020滖C蛎+d銶mΖ<j佯\027\252)\032\025\215\063稴\242<銩\213\001瑺搚r(戅\331\060\025\203=菋QG\024\251\370\332o塌昕7艣\256)1xzZM\366\r 垎P\306>芬\232\005", size=1472, size_min=1472, transfer_func=0x648577 <rtp_write>) (libavformat/avio.c:378)
#5 ??
ffurl_write (h=0x6d30780, buf=0x6d2d160 "\200`\ayR\353\062\246\370\245蜒<\005d^狙\001仨絿\003勠\302\060\242\206ゃ\242\167N\305\001咆r\177t单&\037`焊\316 \026菕N鎒沄B豕\321\066\203\vj\001&nPc郅 D弞耢啻簏L詛]\242\240舍\352%\026葑=$i姺岸寭\242\332RM、&惋9\376oJ'\022鷻舞娗\335\020滖C蛎+d銶mΖ<j佯\027\252)\032\025\215\063稴\242<銩\213\001瑺搚r(戅\331\060\025\203=菋QG\024\251\370\332o塌昕7艣\256)1xzZM\366\r 垎P\306>芬\232\005", size=1472) (libavformat/avio.c:429)
#6 ??
0x00621902 in io_write_packet (opaque=0x6d2d760, buf=0x6d2d160 "\200`\ayR\353\062\246\370\245蜒<\005d^狙\001仨絿\003勠\302\060\242\206ゃ\242\167N\305\001咆r\177t单&\037`焊\316 \026菕N鎒沄B豕\321\066\203\vj\001&nPc郅 D弞耢啻簏L詛]\242\240舍\352%\026葑=$i姺岸寭\242\332RM、&惋9\376oJ'\022鷻舞娗\335\020滖C蛎+d銶mΖ<j佯\027\252)\032\025\215\063稴\242<銩\213\001瑺搚r(戅\331\060\025\203=菋QG\024\251\370\332o塌昕7艣\256)1xzZM\366\r 垎P\306>芬\232\005", buf_size=1472) (libavformat/aviobuf.c:852)
#7 ??
0x0061fba0 in writeout (s=0x6d2d7a0, data=0x6d2d160 "\200`\ayR\353\062\246\370\245蜒<\005d^狙\001仨絿\003勠\302\060\242\206ゃ\242\167N\305\001咆r\177t单&\037`焊\316 \026菕N鎒沄B豕\321\066\203\vj\001&nPc郅 D弞耢啻簏L詛]\242\240舍\352%\026葑=$i姺岸寭\242\332RM、&惋9\376oJ'\022鷻舞娗\335\020滖C蛎+d銶mΖ<j佯\027\252)\032\025\215\063稴\242<銩\213\001瑺搚r(戅\331\060\025\203=菋QG\024\251\370\332o塌昕7艣\256)1xzZM\366\r 垎P\306>芬\232\005", len=1472) (libavformat/aviobuf.c:153)
#8 0x61fc70
flush_buffer(s=0x6d2d7a0) (libavformat/aviobuf.c:170)
#9 ??
0x0061fe3c in avio_write (s=0x6d2d7a0, buf=0x6b307c0 "<\005d^狙\001仨絿\003勠\302\060\242\206ゃ\242\167N\305\001咆r\177t单&\037`焊\316 \026菕N鎒沄B豕\321\066\203\vj\001&nPc郅 D弞耢啻簏L詛]\242\240舍\352%\026葑=$i姺岸寭\242\332RM、&惋9\376oJ'\022鷻舞娗\335\020滖C蛎+d銶mΖ<j佯\027\252)\032\025\215\063稴\242<銩\213\001瑺搚r(戅\331\060\025\203=菋QG\024\251\370\332o塌昕7艣\256)1xzZM\366\r 垎P\306>芬\232\005", size=1460) (libavformat/aviobuf.c:217)
#10 ??
0x0074bd29 in ff_rtp_send_data (s1=0x64e5900, buf1=0x6b307c0 "<\005d^狙\001仨絿\003勠\302\060\242\206ゃ\242\167N\305\001咆r\177t单&\037`焊\316 \026菕N鎒沄B豕\321\066\203\vj\001&nPc郅 D弞耢啻簏L詛]\242\240舍\352%\026葑=$i姺岸寭\242\332RM、&惋9\376oJ'\022鷻舞娗\335\020滖C蛎+d銶mΖ<j佯\027\252)\032\025\215\063稴\242<銩\213\001瑺搚r(戅\331\060\025\203=菋QG\024\251\370\332o塌昕7艣\256)1xzZM\366\r 垎P\306>芬\232\005", len=1460, m=0) (libavformat/rtpenc.c:343)
#11 ??
nal_send (s1=0x64e5900, buf=0x6c9d5dc "d^狙\001仨絿\003勠\302\060\242\206ゃ\242\167N\305\001咆r\177t单&\037`焊\316 \026菕N鎒沄B豕\321\066\203\vj\001&nPc郅 D弞耢啻簏L詛]\242\240舍\352%\026葑=$i姺岸寭\242\332RM、&惋9\376oJ'\022鷻舞娗\335\020滖C蛎+d銶mΖ<j佯\027\252)\032\025\215\063稴\242<銩\213\001瑺搚r(戅\331\060\025\203=菋QG\024\251\370\332o塌昕7艣\256)1xzZM\366\r 垎P\306>芬\232\005", size=65267, last=1) (libavformat/rtpenc_h264_hevc.c:169)
#12 0x7aaeb5
ff_rtp_send_h264_hevc(s1=0x64e5900, buf1=0x6c98020 "", size=87215) (libavformat/rtpenc_h264_hevc.c:203)
#13 0x74c839
rtp_write_packet(s1=0x64e5900, pkt=0x28f3c8) (libavformat/rtpenc.c:580)
#14 0x627519
write_packet(s=0x64e5900, pkt=0x28f3c8) (libavformat/mux.c:772)
#15 0x628de2
av_interleaved_write_frame(s=0x64e5900, pkt=0x0) (libavformat/mux.c:1271)
#16 0x4182d7
write_packet(of=0x4c0ce40, pkt=0x28f658, ost=0x6ea0840) (ffmpeg.c:764)
#17 0x418603
output_packet(of=0x4c0ce40, pkt=0x28f658, ost=0x6ea0840) (ffmpeg.c:835)
#18 0x41d630
do_streamcopy(ist=0x4c05420, ost=0x6ea0840, pkt=0x28f9c0) (ffmpeg.c:1992)
#19 0x41f90f
process_input_packet(ist=0x4c05420, pkt=0x28f9c0, no_eof=0) (ffmpeg.c:2578)
#20 0x4254ed
process_input(file_index=0) (ffmpeg.c:4244)
#21 0x42578f
transcode_step() (ffmpeg.c:4332)
#22 0x4258ae
transcode() (ffmpeg.c:4386)
#23 0x425ff2
main(argc=9, argv=0x4c02a90) (ffmpeg.c:4591)




ffmpeg 文件读取调用栈
file_read (h=0x3a36a0, buf=0x3a39e0 "", size=32768) (libavformat/file.c:113)
#1 0x61ef38
retry_transfer_wrapper(h=0x3a36a0, buf=0x3a39e0 "", size=32768, size_min=1, transfer_func=0x63416d <file_read>) (libavformat/avio.c:378)
#2 0x61f080
ffurl_read(h=0x3a36a0, buf=0x3a39e0 "", size=32768) (libavformat/avio.c:411)
#3 0x6218d9 io_read_packet(opaque=0x3a3960, buf=0x3a39e0 "", buf_size=32768) (libavformat/aviobuf.c:846)
#4 0x620c4f fill_buffer(s=0x3aba00) (libavformat/aviobuf.c:540)
#5 0x620f54
avio_read(s=0x3aba00, buf=0x3abae0 "\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\272\r瓠\27 (libavformat/aviobuf.c:634)
#6 0x61dc18
av_probe_input_buffer2(pb=0x3aba00, fmt=0x3a2f24, filename=0x3a29c6 "1.h264", logctx=0x3a2f20, offset=0, max_probe_size=1048576) (libavformat/format.c:314)
#7 0x60c7a2
init_input(s=0x3a2f20, filename=0x3a29c6 "1.h264", options=0x28fa8c) (libavformat/utils.c:420)
#8 0x60caf5
avformat_open_input(ps=0x28faf4, filename=0x3a29c6 "1.h264", fmt=0x0, options=0x3a2c34) (libavformat/utils.c:529)
#9 0x40a628
open_input_file(o=0x28fba8, filename=0x3a29c6 "1.h264") (ffmpeg_opt.c:997)
#10 0x412ac1
open_files(l=0x3a2a4c, inout=0x13b3c97 <groups+215> "input", open_file=0x409f3e <open_input_file>) (ffmpeg_opt.c:3135)
#11 0x412c1f
ffmpeg_parse_options(argc=9, argv=0x3a2a90) (ffmpeg_opt.c:3175)
#12 0x425ef9
main(argc=9, argv=0x3a2a90) (ffmpeg.c:4564)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值