OnVideo 刘歧 - 大闹天宫:悟空在FFmpeg社区从入门到出家

霍涵蕾

2017/12/18 发布于 技术 分类

ArchSummit全球架构师峰会是InfoQ中国团队推出的面向高端技术管理者、架构师的技术大会,参会者中超过50%拥有8年以上的工作经验。 ArchSummit秉承“实践第一、案例为主”的原则,展示新技术在行业应用中的最新实践,技术在企业转型中的加速作用,帮助企业技术管理者、CTO、架构师做好技术选型、技术团队组建与管理,并确立技术对于产品和业务的关键作用。

文字内容
1. य़ᳺॠ਴ ఉᑮࣁ FFmpeg ᐒ‫܄‬՗‫ف‬ᳪ‫ڊک‬ਹԏ᪠ ‫ྏڝ‬ OnVideo ᘶ‫ڠݳ‬তՈ̵FFmpeg Developer
5. ‫ྏڝ‬ OnVideo ᘶ‫ڠݳ‬তՈ ӧ඘ᳩٟ֢ FFmpeg Developer / Committer / Consulting ၞড়֛ᆽঅᘏ
6. • ॶ๢ • FFmpeg ૡ֢ොୗ • FFmpeg ຝ຅Օᕨ • FFmpeg ୏‫ݎ‬ਫ౴ • FFmpeg ᐒ‫ٖࢵ܄‬ᇫா • FFmpeg ᐒ‫܄‬ሿᇫ݊๚๶
7. ॶ๢ • ᥴ٬ૡ֢Ӿਫᴬአ‫ک‬ጱᳯ᷌(‫ڢ‬ᴻhls wrap݇හ) • ijkplayer / OBS / VLC • CDN ๐‫ ࠟܯۓ‬/ ԯ๐‫ࠟܯۓ‬ • ᖫᥴᎱᦡ॓‫ࠟܯ‬
8. • ॶ๢ • FFmpeg ૡ֢ොୗ • FFmpeg ຝ຅Օᕨ • FFmpeg ୏‫ݎ‬ਫ౴ • FFmpeg ᐒ‫ٖࢵ܄‬ᇫா • FFmpeg ᐒ‫܄‬ሿᇫ݊๚๶
9. ‫ف‬ᳪԧᥴ FFmpeg • ୏তԭ 2000 ଙ Fabrice Bellard ‫ڠ‬ୌ • 2004 - 2015 ኧ Michael Niedermayer ᶾ੕ᓕቘ • https://ffmpeg.org/documentation.htmlhttps://trac.ffmpeg.org • IRCӣय़᷇᭲ #ffmpeg-devel̵#ffmpeg̵ #libav-user
10. Patch ᓕቘ • ෯դᎱପ SVN ᓕቘ • դᎱପ Git ᓕቘ • patch‫ݎ‬ᭆᛗ maillist • patch‫ڜ‬ᤒ patchwork • դᎱᶉா༄ၥ Coverity • ‫ۑ‬ᚆᛔۖ۸ၥᦶ FATE contributor maintainer reviewer tester commiter
11. FATE • QEMU + MIPS • --target-exec='qemu-mips -cpu 74Kf -L /usr/mips-linux-gnu/‘ --cross-prefix=/usr/mips-linux-gnu/bin/ --cc='ccache mips-linux-gnu-gcc-4.4' --arch=mips --target-os=linux --enable-cross-compile --disable-mipsfpu • QEMU + ARM • --cc='ccache arm-linux-gnueabi-gcc' --target-exec='qemu-arm -L /usr/arm-linux-gnueabi/' --arch=armv5te -- cpu=armv5te --enable-cross-compile --target-os=linux --cross-prefix=/usr/arm-linux-gnueabi/bin/ • WINE + MinGW • -cc='ccache x86_64-w64-mingw32-gcc' --arch=x86_64 --target-os=mingw32 —cross-prefix=x86_64-w64-mingw32- --target_exec=wine • PC
12. ౮ԅᖌಷᘏ • ࣁ ffmpeg-devel ᮒկ‫ڜ‬ᤒ review patch • ၥᦶ patch ޾ࢧ୭ၥᦶ • ᪙ᬰඪ೮ porting ‫ک‬ෛᏝկ̵඙֢ᔮᕹ̵ෛ spec • ᯿຅դᎱ
13. Code Review • LICENSE ၄ጦ • CodeStyle Ӹ໒ഴ‫ګ‬ • ෈໩ๅෛ݊෸ • ۱‫ ތ‬FATE • ᭗ᬦ valgrind ၥᦶ • Ḓ‫ض‬᭗ᬦ tools/patcheck
14. • ॶ๢ • FFmpeg ૡ֢ොୗ • FFmpeg ຝ຅Օᕨ • FFmpeg ୏‫ݎ‬ਫ౴ • FFmpeg ᐒ‫ٖࢵ܄‬ᇫா • FFmpeg ᐒ‫܄‬ሿᇫ݊๚๶
15. FFmpeg ཛྷࣘᕟ౮ • AVFormat • AVCodec • AVFilter • AVutil • AVResample • SWScale • AVDevice Mux/Demux Protocols I/O Devices en/decode utils filter_frame resample/rescale
16. FFmpeg ཛྷࣘᕟ౮ • AVFormat • AVStream • AVCodec format stream codec pb • AVFrame frame packets
17. FFmpeg ௛ᕚᕮ຅ Module1 Module2 Module3 Module4 • AVFormatContext -> AVOutputFormat • AVFormatContext -> AVInputFormat • AVFilterContext -> AVFilter • AVStream -> [ AVCodec / AVCodecParameters ]
18. • ॶ๢ • FFmpeg ૡ֢ොୗ • FFmpeg ຝ຅Օᕨ • FFmpeg ୏‫ݎ‬ਫ౴ • FFmpeg ᐒ‫ٖࢵ܄‬ᇫா • FFmpeg ᐒ‫܄‬ሿᇫ݊๚๶
19. FFmpeg ୏‫ݎ‬ਫ౴ - DASH ୏‫ݎ‬ • ISO_IEC_23009-1_2014
20. FFmpeg ୏‫ݎ‬ਫ౴ - DASH ୏‫ݎ‬ • [ፗඎӨᅩඎࢩᔰ] - MPD type: static / dynamic • [ᖀಥࢩᔰ] - Period / AdapationSet / Representation .SegmentBase - Period / AdapationSet / Representation .SegmentList - Period / AdapationSet / Representation .SegmentTemplate • [ۖாӨਞ‫ࢩق‬ᔰ] - $RepresentationID$ / $Number$ / $Bandwidth$ / $Time$
21. FFmpeg ୏‫ݎ‬ਫ౴ - DASH ୏‫ݎ‬ • [timeline] -S - @t ᩸ত෸ᳵ - @r ᯿ེ॔හ - @d ᇆ෸ᳩ ๏ SegmentBase.@timescale ๏ SegmentBase.@presentationTimeOffset ๏ SegmentBase.@timeShiftBufferDepth ๏ SegmentBase.@availabilityTimeOffset
22. FFmpeg ୏‫ݎ‬ਫ౴ - DASH ୏‫ݎ‬ • AVInputFormat ff_dash_demuxer = { • .name = "dash", • .long_name = NULL_IF_CONFIG_SMALL("Dynamic Adaptive Streaming over HTTP"), • .priv_class = &dash_class, • .priv_data_size = sizeof(DASHContext), • .read_probe = dash_probe, • .read_header = dash_read_header, • .read_packet = dash_read_packet, • .read_close = dash_close, • .read_seek = dash_read_seek, • .flags = AVFMT_NO_BYTE_SEEK, • };
23. • ॶ๢ • FFmpeg ૡ֢ොୗ • FFmpeg ຝ຅Օᕨ • FFmpeg ୏‫ݎ‬ਫ౴ • FFmpeg ᐒ‫ٖࢵ܄‬ᇫா • FFmpeg ᐒ‫܄‬ሿᇫ݊๚๶
24. FFmpeg ᐒ‫ٖࢵ܄‬ᇫா • ṛಋইԯ҅֕ଚӧၚ᪋ • ӫਹஉग़҅֕உ੝ᨯሠ • ‫ݺ‬བஉग़҅֕දᬰஉ੝
25. FFmpeg ᐒ‫ٖࢵ܄‬ᇫா • 335 Timothy Gu • 114 Steven Liu (ၚ᪋) • 41 Jun Zhao / Zhong Li (ၚ᪋) • 37 Zuxy Meng • 35 zhaoxiu.zeng • 28 Rong Yan • 27 Zhang Rui • 24 Zhentan Feng
26. • ॶ๢ • FFmpeg ૡ֢ොୗ • FFmpeg ຝ຅Օᕨ • FFmpeg ୏‫ݎ‬ਫ౴ • FFmpeg ᐒ‫ٖࢵ܄‬ᇫா • FFmpeg ᐒ‫܄‬ሿᇫ݊๚๶
27. FFmpeg ᐒ‫܄‬ෆ֛ᇫா݊๚๶ • 288 Demuxer • 156 Muxers • 45 Protocols • 210 Encoders • 495 Decoders • 354 Filters • 21 Indevs • 12 Outdevs
28. FFmpeg ᐒ‫܄‬ෆ֛ᇫா݊๚๶ • ՗ libav merge ൉Ի • FUZZ ᷚᴾදᬰ • AV1 ᘍᡤ • AVFilter ᯿຅ • OpenCL ᖫᥴᎱ॒ቘ • ᵋ๢‫઀ݎ‬ • ‫ܦ‬ଶՈࣁीग़҅ӾࢵՈஉ੝
29. ௛ᕮ • ᵱᥝๅग़ጱ݇Ө • ᨯሠጱ‫ݶ‬෸੒ᛔ૩‫ݶ‬໏Ԟտ൉ṛҁದ๞̵ஞฬ҂ • ‫ݢ‬զๅग़ጱԧᥴ‫ڹ‬ဠ