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

2020-03-01 231浏览

  • 1.य़ᳺॠ਴ ఉᑮࣁ FFmpeg ᐒ‫܄‬՗‫ف‬ᳪ‫ڊک‬ਹԏ᪠ ‫ྏڝ‬ OnVideo ᘶ‫ڠݳ‬তՈ̵FFmpeg Developer
  • 2.
  • 3.
  • 4.
  • 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.html•https://trac.ffmpeg.org• IRCӣय़᷇᭲ #ffmpeg-devel̵#ffmpeg̵ #libav-user
  • 10.Patch ᓕቘ • ෯դᎱପ SVN ᓕቘ • դᎱପ Git ᓕቘ maintainer contributor • patch‫ݎ‬ᭆᛗ maillist • patch‫ڜ‬ᤒ patchwork • դᎱᶉா༄ၥ Coverity • ‫ۑ‬ᚆᛔۖ۸ၥᦶ FATE 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 filter_frame resample/rescale utils
  • 16.FFmpeg ཛྷࣘᕟ౮ format • • AVFormat AVStream stream • AVCodec codec • AVFrame frame pb 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 ୏‫ݎ‬ [ፗඎӨᅩඎࢩᔰ] • - MPDtype: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 • .long_name • .priv_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 • }; = "dash", = NULL_IF_CONFIG_SMALL("Dynamic Adaptive Streaming over HTTP"), = &dash_class, = 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.௛ᕮ • ᵱᥝๅग़ጱ݇Ө • ᨯሠጱ‫ݶ‬෸੒ᛔ૩‫ݶ‬໏Ԟտ൉ṛҁದ๞̵ஞฬ҂ • ‫ݢ‬զๅग़ጱԧᥴ‫ڹ‬ဠ
  • 30.