【音视频研究与实践】FFmpeg的实践 更新中

本文介绍了FFmpeg的功能与用途,包括视频采集、格式转换、抓图及加水印等功能。详细展示了FFmpeg在云服务器集群上的编译过程,涉及NDK安装、环境配置及shell脚本使用等内容。
FFmpeg的实践

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,现在由Michael Niedermayer维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。
    多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。


关于编译成so文件,建议采用放在云端,编译速度才快,假如自己的linux系统,编译至少半小时左右吧,没尝试,但是原理上是需要很长时间的。
譬如:
git clone https://github.com/FFmpeg/FFmpeg.git  
或者七牛的改造 git clone  https://github.com/pili-engineering/pili-ffmpeg.git

如何在云服务器集群中编译FFmpeg?

上传NDK(android-ndk-r10e-linux-x86_64.bin )、FFmpeg

NDK安装

目录给权限:chmod 777 -R ndk

解压:./android-ndk-r10e-linux-x86_64.bin 

环境变量配置:

命令vim ~/.bashrc

添加:

export NDKROOT=/usr/ndk/android-ndk-r10e

export PATH=$NDKROOT:$PATH

更新环境变量:

source ~/.bashrc


1)编写 .android_build  .shshell脚本文件

2)给文件权限:chmod 777 android_build.sh

      dos2unix

3)执行 ./android_build.sh


譬如:

[root@iZ94s4ycnl7Z FFmpeg]# ./configure 


yasm/nasm not found or too old. Use --disable-yasm for a crippled build.

If you think configure made a mistake, make sure you are using the latest
version from Git.  If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "config.log" produced by configure as this will help
solve the problem.
[root@iZ94s4ycnl7Z FFmpeg]# 
[root@iZ94s4ycnl7Z FFmpeg]# ./configure --disable-yasm
install prefix            /usr/local
source path               .
C compiler                gcc
C library                 glibc
ARCH                      x86 (generic)
big-endian                no
runtime cpu detection     yes
yasm                      no
MMX enabled               yes
MMXEXT enabled            yes
3DNow! enabled            yes
3DNow! extended enabled   yes
SSE enabled               yes
SSSE3 enabled             yes
AESNI enabled             yes
AVX enabled               yes
XOP enabled               yes
FMA3 enabled              yes
FMA4 enabled              yes
i686 features enabled     yes
CMOV is fast              yes
EBX available             yes
EBP available             yes
debug symbols             yes
strip symbols             yes
optimize for size         no
optimizations             yes
static                    yes
shared                    no
postprocessing support    no
new filter support        yes
network support           yes
threading support         pthreads
safe bitstream reader     yes
SDL2 support              no
opencl enabled            no
JNI support               no
texi2html enabled         no
perl enabled              yes
pod2man enabled           yes
makeinfo enabled          no
makeinfo supports HTML    no


Enabled programs:
ffmpeg     ffprobe  ffserver


External libraries:
bzlib     libxcb_shape  lzma
iconv     libxcb_shm  xlib
libxcb     libxcb_xfixes  zlib


External libraries providing hardware acceleration:
nvenc


Libraries:
avcodec     avformat  swresample
avdevice     avutil  swscale
avfilter


Enabled decoders:
aac     avrn  fic
aac_fixed     avrp  flac
aac_latm     avs  flashsv
aasc     avui  flashsv2
ac3     ayuv  flic
ac3_fixed     bethsoftvid  flv
adpcm_4xm     bfi  fourxm
adpcm_adx     bink  fraps
adpcm_afc     binkaudio_dct  frwu
adpcm_aica     binkaudio_rdft  g2m
adpcm_ct     bintext  g723_1
adpcm_dtk     bmp  g729
adpcm_ea     bmv_audio  gif
adpcm_ea_maxis_xa     bmv_video  gsm
adpcm_ea_r1     brender_pix  gsm_ms
adpcm_ea_r2     c93  h261
adpcm_ea_r3     cavs  h263
adpcm_ea_xas     ccaption  h263i
adpcm_g722     cdgraphics  h263p
adpcm_g726     cdxl  h264
adpcm_g726le     cfhd  hap
adpcm_ima_amv     cinepak  hevc
adpcm_ima_apc     cljr  hnm4_video
adpcm_ima_dat4     cllc  hq_hqa
adpcm_ima_dk3     comfortnoise  hqx
adpcm_ima_dk4     cook  huffyuv
adpcm_ima_ea_eacs     cpia  iac
adpcm_ima_ea_sead     cscd  idcin
adpcm_ima_iss     cyuv  idf
adpcm_ima_oki     dca  iff_ilbm
adpcm_ima_qt     dds  imc
adpcm_ima_rad     dfa  indeo2
adpcm_ima_smjpeg     dirac  indeo3
adpcm_ima_wav     dnxhd  indeo4
adpcm_ima_ws     dpx  indeo5
adpcm_ms     dsd_lsbf  interplay_acm
adpcm_mtaf     dsd_lsbf_planar  interplay_dpcm
adpcm_psx     dsd_msbf  interplay_video
adpcm_sbpro_2     dsd_msbf_planar  jacosub
adpcm_sbpro_3     dsicinaudio  jpeg2000
adpcm_sbpro_4     dsicinvideo  jpegls
adpcm_swf     dss_sp  jv
adpcm_thp     dst  kgv1
adpcm_thp_le     dvaudio  kmvc
adpcm_vima     dvbsub  lagarith
adpcm_xa     dvdsub  loco
adpcm_yamaha     dvvideo  m101
aic     dxa  mace3
alac     dxtory  mace6
alias_pix     dxv  magicyuv
als     eac3  mdec
amrnb     eacmv  metasound
amrwb     eamad  microdvd
amv     eatgq  mimic
anm     eatgv  mjpeg
ansi     eatqi  mjpegb
ape     eightbps  mlp
apng     eightsvx_exp  mmvideo
ass     eightsvx_fib  motionpixels
asv1     escape124  movtext
asv2     escape130  mp1
atrac1     evrc  mp1float
atrac3     exr  mp2
atrac3p     ffv1  mp2float
aura     ffvhuff  mp3
aura2     ffwavesynth  mp3adu
mp3adufloat     pgmyuv  tmv
mp3float     pgssub  truehd
mp3on4     pictor  truemotion1
mp3on4float     pjs  truemotion2
mpc7     png  truemotion2rt
mpc8     ppm  truespeech
mpeg1video     prores  tscc
mpeg2video     prores_lgpl  tscc2
mpeg4     ptx  tta
mpegvideo     qcelp  twinvq
mpl2     qdm2  txd
msa1     qdraw  ulti
msmpeg4v1     qpeg  utvideo
msmpeg4v2     qtrle  v210
msmpeg4v3     r10k  v210x
msrle     r210  v308
mss1     ra_144  v408
mss2     ra_288  v410
msvideo1     ralf  vb
mszh     rawvideo  vble
mts2     realtext  vc1
mvc1     rl2  vc1image
mvc2     roq  vcr1
mxpeg     roq_dpcm  vmdaudio
nellymoser     rpza  vmdvideo
nuv     rscc  vmnc
on2avc     rv10  vorbis
opus     rv20  vp3
paf_audio     rv30  vp5
paf_video     rv40  vp6
pam     s302m  vp6a
pbm     sami  vp6f
pcm_alaw     sanm  vp7
pcm_bluray     screenpresso  vp8
pcm_dvd     sdx2_dpcm  vp9
pcm_f32be     sgi  vplayer
pcm_f32le     sgirle  vqa
pcm_f64be     sheervideo  wavpack
pcm_f64le     shorten  webp
pcm_lxf     sipr  webvtt
pcm_mulaw     smackaud  wmalossless
pcm_s16be     smacker  wmapro
pcm_s16be_planar     smc  wmav1
pcm_s16le     smvjpeg  wmav2
pcm_s16le_planar     snow  wmavoice
pcm_s24be     sol_dpcm  wmv1
pcm_s24daud     sonic  wmv2
pcm_s24le     sp5x  wmv3
pcm_s24le_planar     srt  wmv3image
pcm_s32be     ssa  wnv1
pcm_s32le     stl  ws_snd1
pcm_s32le_planar     subrip  xan_dpcm
pcm_s64be     subviewer  xan_wc3
pcm_s64le     subviewer1  xan_wc4
pcm_s8     sunrast  xbin
pcm_s8_planar     svq1  xbm
pcm_u16be     svq3  xface
pcm_u16le     tak  xl
pcm_u24be     targa  xma1
pcm_u24le     targa_y216  xma2
pcm_u32be     tdsc  xsub
pcm_u32le     text  xwd
pcm_u8     theora  y41p
pcm_zork     thp  ylc
pcx     tiertexseqvideo  yop
pgm     tiff  yuv4
zero12v     zlib  zmbv
zerocodec


Enabled encoders:
a64multi     ljpeg  ppm
a64multi5     mjpeg  prores
aac     mlp  prores_aw
ac3     movtext  prores_ks
ac3_fixed     mp2  qtrle
adpcm_adx     mp2fixed  r10k
adpcm_g722     mpeg1video  r210
adpcm_g726     mpeg2video  ra_144
adpcm_ima_qt     mpeg4  rawvideo
adpcm_ima_wav     msmpeg4v2  roq
adpcm_ms     msmpeg4v3  roq_dpcm
adpcm_swf     msvideo1  rv10
adpcm_yamaha     nellymoser  rv20
alac     nvenc  s302m
alias_pix     nvenc_h264  sgi
amv     nvenc_hevc  snow
apng     pam  sonic
ass     pbm  sonic_ls
asv1     pcm_alaw  srt
asv2     pcm_f32be  ssa
avrp     pcm_f32le  subrip
avui     pcm_f64be  sunrast
ayuv     pcm_f64le  svq1
bmp     pcm_mulaw  targa
cinepak     pcm_s16be  text
cljr     pcm_s16be_planar  tiff
comfortnoise     pcm_s16le  truehd
dca     pcm_s16le_planar  tta
dnxhd     pcm_s24be  utvideo
dpx     pcm_s24daud  v210
dvbsub     pcm_s24le  v308
dvdsub     pcm_s24le_planar  v408
dvvideo     pcm_s32be  v410
eac3     pcm_s32le  vc2
ffv1     pcm_s32le_planar  vorbis
ffvhuff     pcm_s64be  wavpack
flac     pcm_s64le  webvtt
flashsv     pcm_s8  wmav1
flashsv2     pcm_s8_planar  wmav2
flv     pcm_u16be  wmv1
g723_1     pcm_u16le  wmv2
gif     pcm_u24be  wrapped_avframe
h261     pcm_u24le  xbm
h263     pcm_u32be  xface
h263p     pcm_u32le  xsub
h264_nvenc     pcm_u8  xwd
hevc_nvenc     pcx  y41p
huffyuv     pgm  yuv4
jpeg2000     pgmyuv  zlib
jpegls     png  zmbv


Enabled hwaccels:


Enabled parsers:
aac     dvd_nav  mpegvideo
aac_latm     dvdsub  opus
ac3     flac  png
adx     g729  pnm
bmp     gsm  rv30
cavsvideo     h261  rv40
cook     h263  tak
dca     h264  vc1
dirac     hevc  vorbis
dnxhd     mjpeg  vp3
dpx     mlp  vp8
dvaudio     mpeg4video  vp9
dvbsub     mpegaudio


Enabled demuxers:
aa     flic  mjpeg
aac     flv  mlp
ac3     fourxm  mlv
acm     frm  mm
act     fsb  mmf
adf     g722  mov
adp     g723_1  mp3
ads     g729  mpc
adx     genh  mpc8
aea     gif  mpegps
afc     gsm  mpegts
aiff     gxf  mpegtsraw
aix     h261  mpegvideo
amr     h263  mpjpeg
anm     h264  mpl2
apc     hevc  mpsub
ape     hls  msf
apng     hnm  msnwc_tcp
aqtitle     ico  mtaf
asf     idcin  mtv
asf_o     idf  musx
ass     iff  mv
ast     ilbc  mvi
au     image2  mxf
avi     image2_alias_pix  mxg
avr     image2_brender_pix  nc
avs     image2pipe  nistsphere
bethsoftvid     image_bmp_pipe  nsv
bfi     image_dds_pipe  nut
bfstm     image_dpx_pipe  nuv
bink     image_exr_pipe  ogg
bintext     image_j2k_pipe  oma
bit     image_jpeg_pipe  paf
bmv     image_jpegls_pipe  pcm_alaw
boa     image_pam_pipe  pcm_f32be
brstm     image_pbm_pipe  pcm_f32le
c93     image_pcx_pipe  pcm_f64be
caf     image_pgm_pipe  pcm_f64le
cavsvideo     image_pgmyuv_pipe  pcm_mulaw
cdg     image_pictor_pipe  pcm_s16be
cdxl     image_png_pipe  pcm_s16le
cine     image_ppm_pipe  pcm_s24be
concat     image_qdraw_pipe  pcm_s24le
data     image_sgi_pipe  pcm_s32be
daud     image_sunrast_pipe  pcm_s32le
dcstr     image_tiff_pipe  pcm_s8
dfa     image_webp_pipe  pcm_u16be
dirac     ingenient  pcm_u16le
dnxhd     ipmovie  pcm_u24be
dsf     ircam  pcm_u24le
dsicin     iss  pcm_u32be
dss     iv8  pcm_u32le
dts     ivf  pcm_u8
dtshd     ivr  pjs
dv     jacosub  pmp
dvbsub     jv  pva
dvbtxt     live_flv  pvf
dxa     lmlm4  qcp
ea     loas  r3d
ea_cdata     lrc  rawvideo
eac3     lvf  realtext
epaf     lxf  redspark
ffm     m4v  rl2
ffmetadata     matroska  rm
filmstrip     mgsts  roq
flac     microdvd  rpl
rsd     subviewer1  voc
rso     sup  vpk
rtp     svag  vplayer
rtsp     swf  vqf
sami     tak  w64
sap     tedcaptions  wav
sbg     thp  wc3
sdp     threedostr  webm_dash_manifest
sdr2     tiertexseq  webvtt
segafilm     tmv  wsaud
shorten     truehd  wsd
siff     tta  wsvqa
sln     tty  wtv
smacker     txd  wv
smjpeg     v210  wve
smush     v210x  xa
sol     vag  xbin
sox     vc1  xmv
spdif     vc1t  xvag
srt     vivo  xwma
stl     vmd  yop
str     vobsub  yuv4mpegpipe
subviewer


Enabled muxers:
a64     image2  pcm_s24le
ac3     image2pipe  pcm_s32be
adts     ipod  pcm_s32le
adx     ircam  pcm_s8
aiff     ismv  pcm_u16be
amr     ivf  pcm_u16le
apng     jacosub  pcm_u24be
asf     latm  pcm_u24le
asf_stream     lrc  pcm_u32be
ass     m4v  pcm_u32le
ast     matroska  pcm_u8
au     matroska_audio  psp
avi     md5  rawvideo
avm2     microdvd  rm
bit     mjpeg  roq
caf     mkvtimestamp_v2  rso
cavsvideo     mlp  rtp
crc     mmf  rtp_mpegts
dash     mov  rtsp
data     mp2  sap
daud     mp3  segment
dirac     mp4  singlejpeg
dnxhd     mpeg1system  smjpeg
dts     mpeg1vcd  smoothstreaming
dv     mpeg1video  sox
eac3     mpeg2dvd  spdif
f4v     mpeg2svcd  spx
ffm     mpeg2video  srt
ffmetadata     mpeg2vob  stream_segment
fifo     mpegts  swf
filmstrip     mpjpeg  tee
flac     mxf  tg2
flv     mxf_d10  tgp
framecrc     mxf_opatom  truehd
framehash     null  tta
framemd5     nut  uncodedframecrc
g722     oga  vc1
g723_1     ogg  vc1t
gif     ogv  voc
gsm     oma  w64
gxf     opus  wav
h261     pcm_alaw  webm
h263     pcm_f32be  webm_chunk
h264     pcm_f32le  webm_dash_manifest
hash     pcm_f64be  webp
hds     pcm_f64le  webvtt
hevc     pcm_mulaw  wtv
hls     pcm_s16be  wv
ico     pcm_s16le  yuv4mpegpipe
ilbc     pcm_s24be


Enabled protocols:
async     http  rtmpt
cache     httpproxy  rtp
concat     icecast  srtp
crypto     md5  subfile
data     mmsh  tcp
ffrtmphttp     mmst  tee
file     pipe  udp
ftp     prompeg  udplite
gopher     rtmp  unix
hls


Enabled filters:
abench     cellauto  hue
acompressor     channelmap  hwdownload
acrossfade     channelsplit  hwupload
acrusher     chorus  hysteresis
adelay     chromakey  idet
adrawgraph     ciescope  il
aecho     codecview  inflate
aemphasis     color  interleave
aeval     colorbalance  join
aevalsrc     colorchannelmixer  lenscorrection
afade     colorkey  life
afftfilt     colorlevels  loop
aformat     colorspace  loudnorm
agate     compand  lowpass
ahistogram     compensationdelay  lut
ainterleave     concat  lut2
alimiter     convolution  lut3d
allpass     copy  lutrgb
allrgb     crop  lutyuv
allyuv     crystalizer  mandelbrot
aloop     curves  maskedclamp
alphaextract     datascope  maskedmerge
alphamerge     dcshift  mergeplanes
amerge     dctdnoiz  mestimate
ametadata     deband  metadata
amix     decimate  minterpolate
amovie     deflate  movie
anequalizer     dejudder  negate
anoisesrc     deshake  nlmeans
anull     detelecine  noformat
anullsink     dilation  noise
anullsrc     displace  null
apad     drawbox  nullsink
aperms     drawgraph  nullsrc
aphasemeter     drawgrid  overlay
aphaser     dynaudnorm  pad
apulsator     earwax  palettegen
arealtime     edgedetect  paletteuse
aresample     elbg  pan
areverse     equalizer  perms
aselect     erosion  pixdesctest
asendcmd     extractplanes  prewitt
asetnsamples     extrastereo  psnr
asetpts     fade  qp
asetrate     fftfilt  random
asettb     field  readvitc
ashowinfo     fieldhint  realtime
asidedata     fieldmatch  remap
asplit     fieldorder  removegrain
astats     firequalizer  removelogo
astreamselect     flanger  replaygain
atadenoise     format  reverse
atempo     fps  rgbtestsrc
atrim     framepack  rotate
avectorscope     framerate  scale
avgblur     framestep  scale2ref
bandpass     gblur  select
bandreject     gradfun  selectivecolor
bass     haldclut  sendcmd
bbox     haldclutsrc  separatefields
bench     hdcd  setdar
biquad     hflip  setfield
bitplanenoise     highpass  setpts
blackdetect     histogram  setsar
blend     hqx  settb
bwdif     hstack  showcqt
showfreqs     smptehdbars  tremolo
showinfo     sobel  trim
showpalette     spectrumsynth  unsharp
showspectrum     split  vectorscope
showspectrumpic     ssim  vflip
showvolume     stereotools  vibrato
showwaves     stereowiden  vignette
showwavespic     streamselect  volume
shuffleframes     swaprect  volumedetect
shuffleplanes     swapuv  vstack
sidechaincompress     tblend  w3fdif
sidechaingate     telecine  waveform
sidedata     testsrc  weave
signalstats     testsrc2  xbr
silencedetect     thumbnail  yadif
silenceremove     tile  yuvtestsrc
sine     transpose  zoompan
smptebars     treble


Enabled bsfs:
aac_adtstoasc     imx_dump_header  mpeg4_unpack_bframes
chomp     mjpeg2jpeg  noise
dca_core     mjpega_dump_header  remove_extradata
dump_extradata     mov2textsub  text2movsub
h264_mp4toannexb     mp3_header_decompress  vp9_superframe
hevc_mp4toannexb


Enabled indevs:
dv1394     lavfi  v4l2
fbdev     oss  x11grab_xcb


Enabled outdevs:
fbdev     oss  v4l2


License: LGPL version 2.1 or later
Creating config.mak, config.h, and doc/config.texi...


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值