/ffmpeg-win32

Cross-building ffmpeg for Windows

Primary LanguageC#GNU Lesser General Public License v3.0LGPL-3.0

NuGet packages for LGPL FFmpeg

Build Status

This project contains build scripts which create NuGet packages of a LGPL build of FFmpeg. You can use it together with FFmpeg.AutoGen to use FFmpeg from your .NET Core projects.

How are you building?

The Windows builds are built from the source tarballs published by ffmpeg, and cross-compiled on Ubuntu 14.04. All files in the NuGet package are built on Travis and published from there.

At the time of writing, ffmpeg is not linked with any of the external libraries (but that could be changed by a pull request), but hardware acceleration is enabled.

ffmpeg is built with this command line:

./configure --arch=x86_64 --target-os=mingw32 --cross-prefix=x86_64-w64-mingw32- --disable-static --enable-shared --enable-version3 --enable-cuda --enable-cuvid --enable-dxva2

What's included?

  • External libraries: schannel, xlib
  • External libraries providing hardware acceleration: cuda, dxva2, nvenc, cuvid
  • Libraries: avcodec, avformat, swresample, avdevice, avutil, swscale, avfilter
  • Enabled decoders: aac, aac_fixed, aac_latm, aasc, ac3, ac3_fixed, adpcm_4xm, adpcm_adx, adpcm_afc, adpcm_aica, adpcm_ct, adpcm_dtk, adpcm_ea, adpcm_ea_maxis_xa, adpcm_ea_r1, adpcm_ea_r2, adpcm_ea_r3, adpcm_ea_xas, adpcm_g722, adpcm_g726, adpcm_g726le, adpcm_ima_amv, adpcm_ima_apc, adpcm_ima_dat4, adpcm_ima_dk3, adpcm_ima_dk4, adpcm_ima_ea_eacs, adpcm_ima_ea_sead, adpcm_ima_iss, adpcm_ima_oki, adpcm_ima_qt, adpcm_ima_rad, adpcm_ima_smjpeg, adpcm_ima_wav, adpcm_ima_ws, adpcm_ms, adpcm_mtaf, adpcm_psx, adpcm_sbpro_2, adpcm_sbpro_3, adpcm_sbpro_4, adpcm_swf, adpcm_thp, adpcm_thp_le, adpcm_vima, adpcm_xa, adpcm_yamaha, aic, alac, alias_pix, als, amrnb, amrwb, amv, anm, ansi, ape, ass, asv1, asv2, atrac1, atrac3, atrac3al, atrac3p, atrac3pal, aura, aura2, avrn, avrp, avs, avui, ayuv, bethsoftvid, bfi, bink, binkaudio_dct, binkaudio_rdft, bintext, bmp, bmv_audio, bmv_video, brender_pix, c93, cavs, ccaption, cdgraphics, cdxl, cfhd, cinepak, clearvideo, cljr, cllc, comfortnoise, cook, cpia, cscd, cyuv, dca, dds, dfa, dirac, dnxhd, dpx, dsd_lsbf, dsd_lsbf_planar, dsd_msbf, dsd_msbf_planar, dsicinaudio, dsicinvideo, dss_sp, dst, dvaudio, dvbsub, dvdsub, dvvideo, dxtory, dxv, eac3, eacmv, eamad, eatgq, eatgv, eatqi, eightbps, eightsvx_exp, eightsvx_fib, escape124, escape130, evrc, ffv1, ffvhuff, ffwavesynth, fic, flac, flic, flv, fmvc, fourxm, fraps, frwu, g723_1, g729, gif, gsm, gsm_ms, h261, h263, h263i, h263p, h264, h264_cuvid, hap, hevc, hevc_cuvid, hnm4_video, hq_hqa, hqx, huffyuv, iac, idcin, idf, iff_ilbm, imc, indeo2, indeo3, indeo4, indeo5, interplay_acm, interplay_dpcm, interplay_video, jacosub, jpeg2000, jpegls, jv, kgv1, kmvc, lagarith, loco, m101, mace3, mace6, magicyuv, mdec, metasound, microdvd, mimic, mjpeg, mjpeg_cuvid, mjpegb, mlp, mmvideo, motionpixels, movtext, mp1, mp1float, mp2, mp2float, mp3, mp3adu, mp3adufloat, mp3float, mp3on4, mp3on4float, mpc7, mpc8, mpeg1_cuvid, mpeg1video, mpeg2_cuvid, mpeg2video, mpeg4, mpeg4_cuvid, mpegvideo, mpl2, msa1, msmpeg4v1, msmpeg4v2, msmpeg4v3, msrle, mss1, mss2, msvideo1, mszh, mts2, mvc1, mvc2, mxpeg, nellymoser, nuv, on2avc, opus, paf_audio, paf_video, pam, pbm, pcm_alaw, pcm_bluray, pcm_dvd, pcm_f16le, pcm_f24le, pcm_f32be, pcm_f32le, pcm_f64be, pcm_f64le, pcm_lxf, pcm_mulaw, pcm_s16be, pcm_s16be_planar, pcm_s16le, pcm_s16le_planar, pcm_s24be, pcm_s24daud, pcm_s24le, pcm_s24le_planar, pcm_s32be, pcm_s32le, pcm_s32le_planar, pcm_s64be, pcm_s64le, pcm_s8, pcm_s8_planar, pcm_u16be, pcm_u16le, pcm_u24be, pcm_u24le, pcm_u32be, pcm_u32le, pcm_u8, pcm_zork, pcx, pgm, pgmyuv, pgssub, pictor, pixlet, pjs, ppm, prores, prores_lgpl, psd, ptx, qcelp, qdm2, qdmc, qdraw, qpeg, qtrle, r10k, r210, ra_144, ra_288, ralf, rawvideo, realtext, rl2, roq, roq_dpcm, rpza, rv10, rv20, rv30, rv40, s302m, sami, sanm, scpr, sdx2_dpcm, sgi, sgirle, sheervideo, shorten, sipr, smackaud, smacker, smc, smvjpeg, snow, sol_dpcm, sonic, sp5x, speedhq, srt, ssa, stl, subrip, subviewer, subviewer1, sunrast, svq1, svq3, tak, targa, targa_y216, text, theora, thp, tiertexseqvideo, tiff, tmv, truehd, truemotion1, truemotion2, truemotion2rt, truespeech, tscc2, tta, twinvq, txd, ulti, utvideo, v210, v210x, v308, v408, v410, vb, vble, vc1, vc1_cuvid, vc1image, vcr1, vmdaudio, vmdvideo, vmnc, vorbis, vp3, vp5, vp6, vp6a, vp6f, vp7, vp8, vp8_cuvid, vp9, vp9_cuvid, vplayer, vqa, wavpack, webp, webvtt, wmalossless, wmapro, wmav1, wmav2, wmavoice, wmv1, wmv2, wmv3, wmv3image, wnv1, ws_snd1, xan_dpcm, xan_wc3, xan_wc4, xbin, xbm, xface, xl, xma1, xma2, xpm, xsub, xwd, y41p, ylc, yop, yuv4, zero12v
  • Enabled decoders: a64multi, a64multi5, aac, ac3, ac3_fixed, adpcm_adx, adpcm_g722, adpcm_g726, adpcm_ima_qt, adpcm_ima_wav, adpcm_ms, adpcm_swf, adpcm_yamaha, alac, alias_pix, amv, ass, asv1, asv2, avrp, avui, ayuv, bmp, cinepak, cljr, comfortnoise, dca, dnxhd, dpx, dvbsub, dvdsub, dvvideo, eac3, ffv1, ffvhuff, flac, flv, g723_1, gif, h261, h263, h263p, h264_nvenc, hevc_nvenc, huffyuv, jpeg2000, jpegls, ljpeg, mjpeg, mlp, movtext, mp2, mp2fixed, mpeg1video, mpeg2video, mpeg4, msmpeg4v2, msmpeg4v3, msvideo1, nellymoser, nvenc, nvenc_h264, nvenc_hevc, opus, pam, pbm, pcm_alaw, pcm_f32be, pcm_f32le, pcm_f64be, pcm_f64le, pcm_mulaw, pcm_s16be, pcm_s16be_planar, pcm_s16le, pcm_s16le_planar, pcm_s24be, pcm_s24daud, pcm_s24le, pcm_s24le_planar, pcm_s32be, pcm_s32le, pcm_s32le_planar, pcm_s64be, pcm_s64le, pcm_s8, pcm_s8_planar, pcm_u16be, pcm_u16le, pcm_u24be, pcm_u24le, pcm_u32be, pcm_u32le, pcm_u8, pcx, pgm, pgmyuv, ppm, prores, prores_aw, prores_ks, qtrle, r10k, r210, ra_144, rawvideo, roq, roq_dpcm, rv10, rv20, s302m, sgi, snow, sonic, sonic_ls, srt, ssa, subrip, sunrast, svq1, targa, text, tiff, truehd, tta, utvideo, v210, v308, v408, v410, vc2, vorbis, wavpack, webvtt, wmav1, wmav2, wmv1, wmv2, wrapped_avframe, xbm, xface, xsub, xwd, y41p, yuv4
  • Enabled hwaccels: h264_cuvid, h264_dxva2, hevc_cuvid, mjpeg_cuvid, mpeg1_cuvid, mpeg2_cuvid, mpeg2_dxva2, mpeg4_cuvid, vc1_cuvid, vc1_dxva2, vp8_cuvid, vp9_cuvid, wmv3_dxva2
  • Enabled parsers: aac, aac_latm, ac3, adx, bmp, cavsvideo, cook, dca, dirac, dnxhd, dpx, dvaudio, dvbsub, dvd_nav, dvdsub, flac, g729, gsm, h261, h263, h264, hevc, mjpeg, mlp, mpeg4video, mpegaudio, mpegvideo, opus, png, pnm, rv30, rv40, sipr, tak, vc1, vorbis, vp3, vp8, vp9, xma
  • Enabled demuxers: , aa, aac, ac3, acm, act, adf, adp, ads, adx, aea, afc, aiff, aix, amr, anm, apc, ape, apng, aqtitle, asf, asf_o, ass, ast, au, avi, avr, avs, bethsoftvid, bfi, bfstm, bink, bintext, bit, bmv, boa, brstm, c93, caf, cavsvideo, cdg, cdxl, cine, concat, data, daud, dcstr, dfa, dirac, dnxhd, dsf, dsicin, dss, dts, dtshd, dv, dvbsub, dvbtxt, dxa, ea, ea_cdata, eac3, epaf, ffm, ffmetadata, filmstrip, flac, flic, flv, fourxm, frm, fsb, g722, g723_1, g729, genh, gif, gsm, gxf, h261, h263, h264, hevc, hls, hnm, ico, idcin, idf, iff, ilbc, image_bmp_pipe, image_dds_pipe, image_dpx_pipe, image_exr_pipe, image_j2k_pipe, image_jpeg_pipe, image_jpegls_pipe, image_pam_pipe, image_pbm_pipe, image_pcx_pipe, image_pgm_pipe, image_pgmyuv_pipe, image_pictor_pipe, image_png_pipe, image_ppm_pipe, image_psd_pipe, image_qdraw_pipe, image_sgi_pipe, image_sunrast_pipe, image_tiff_pipe, image_webp_pipe, image_xpm_pipe, image2, image2_alias_pix, image2_brender_pix, image2pipe, ingenient, ipmovie, ircam, iss, iv8, ivf, ivr, jacosub, jv, live_flv, lmlm4, loas, lrc, lvf, lxf, m4v, matroska, mgsts, microdvd, mjpeg, mjpeg_2000, mlp, mlv, mm, mmf, mov, mp3, mpc, mpc8, mpegps, mpegts, mpegtsraw, mpegvideo, mpjpeg, mpl2, mpsub, msf, msnwc_tcp, mtaf, mtv, musx, mv, mvi, mxf, mxg, nc, nistsphere, nsv, nut, nuv, ogg, oma, paf, pcm_alaw, pcm_f32be, pcm_f32le, pcm_f64be, pcm_f64le, pcm_mulaw, pcm_s16be, pcm_s16le, pcm_s24be, pcm_s24le, pcm_s32be, pcm_s32le, pcm_s8, pcm_u16be, pcm_u16le, pcm_u24be, pcm_u24le, pcm_u32be, pcm_u32le, pcm_u8, pjs, pmp, pva, pvf, qcp, r3d, rawvideo, realtext, redspark, rl2, rm, roq, rpl, rsd, rso, rtp, rtsp, sami, sap, sbg, scc, sdp, sdr2, sds, sdx, segafilm, shorten, siff, sln, smacker, smjpeg, smush, sol, sox, spdif, srt, stl, str, subviewer, subviewer1, sup, svag, swf, tak, tedcaptions, thp, threedostr, tiertexseq, tmv, truehd, tta, tty, txd, v210, v210x, vag, vc1, vc1t, vivo, vmd, vobsub, voc, vpk, vplayer, vqf, w64, wav, wc3, webm_dash_manifest, webvtt, wsaud, wsd, wsvqa, wtv, wv, wve, xa, xbin, xmv, xvag, xwma, yop, yuv4mpegpipe
  • Enabled muxers: , a64, ac3, adts, adx, aiff, amr, apng, asf, asf_stream, ass, ast, au, avi, avm2, bit, caf, cavsvideo, crc, dash, data, daud, dirac, dnxhd, dts, dv, eac3, f4v, ffm, ffmetadata, fifo, filmstrip, flac, flv, framecrc, framehash, framemd5, g722, g723_1, gif, gsm, gxf, h261, h263, h264, hash, hds, hevc, hls, ico, ilbc, image2, image2pipe, ipod, ircam, ismv, ivf, jacosub, latm, lrc, m4v, matroska, matroska_audio, md5, microdvd, mjpeg, mkvtimestamp_v2, mlp, mmf, mov, mp2, mp3, mp4, mpeg1system, mpeg1vcd, mpeg1video, mpeg2dvd, mpeg2svcd, mpeg2video, mpeg2vob, mpegts, mpjpeg, mxf, mxf_d10, mxf_opatom, null, nut, oga, ogg, ogv, oma, opus, pcm_alaw, pcm_f32be, pcm_f32le, pcm_f64be, pcm_f64le, pcm_mulaw, pcm_s16be, pcm_s16le, pcm_s24be, pcm_s24le, pcm_s32be, pcm_s32le, pcm_s8, pcm_u16be, pcm_u16le, pcm_u24be, pcm_u24le, pcm_u32be, pcm_u32le, pcm_u8, psp, rawvideo, rm, roq, rso, rtp, rtp_mpegts, rtsp, sap, scc, segment, singlejpeg, smjpeg, smoothstreaming, sox, spdif, spx, srt, stream_segment, swf, tee, tg2, tgp, truehd, tta, uncodedframecrc, vc1, vc1t, voc, w64, wav, webm, webm_chunk, webm_dash_manifest, webp, webvtt, wtv, wv, yuv4mpegpipe
  • Enabled protocols: async, cache, concat, crypto, data, ffrtmphttp, file, ftp, gopher, hls, http, httpproxy, https, icecast, md5, mmsh, mmst, pipe, prompeg, rtmp, rtmps, rtmpt, rtmpts, rtp, srtp, subfile, tcp, tee, tls_schannel, udp, udplite
  • Enabled filters: abench, abitscope, acompressor, acrossfade, acrusher, adelay, adrawgraph, aecho, aemphasis, aeval, aevalsrc, afade, afftfilt, aformat, agate, ahistogram, ainterleave, alimiter, allpass, allrgb, allyuv, aloop, alphaextract, alphamerge, amerge, ametadata, amix, amovie, anequalizer, anoisesrc, anull, anullsink, anullsrc, apad, aperms, aphasemeter, aphaser, apulsator, arealtime, aresample, areverse, aselect, asendcmd, asetnsamples, asetpts, asetrate, asettb, ashowinfo, asidedata, asplit, astats, astreamselect, atadenoise, atempo, atrim, avectorscope, avgblur, bandpass, bandreject, bass, bbox, bench, biquad, bitplanenoise, blackdetect, blend, bwdif, cellauto, channelmap, channelsplit, chorus, chromakey, ciescope, codecview, color, colorbalance, colorchannelmixer, colorkey, colorlevels, colorspace, compand, compensationdelay, concat, convolution, copy, crop, crystalizer, curves, datascope, dcshift, dctdnoiz, deband, decimate, deflate, dejudder, deshake, detelecine, dilation, displace, drawbox, drawgraph, drawgrid, dynaudnorm, earwax, ebur128, edgedetect, elbg, equalizer, erosion, extractplanes, extrastereo, fade, fftfilt, field, fieldhint, fieldmatch, fieldorder, firequalizer, flanger, format, fps, framepack, framerate, framestep, gblur, gradfun, haldclut, haldclutsrc, hdcd, hflip, highpass, histogram, hqx, hstack, hue, hwdownload, hwmap, hwupload, hwupload_cuda, hysteresis, idet, il, inflate, interleave, join, lenscorrection, life, loop, loudnorm, lowpass, lut, lut2, lut3d, lutrgb, lutyuv, mandelbrot, maskedclamp, maskedmerge, mergeplanes, mestimate, metadata, midequalizer, minterpolate, movie, negate, nlmeans, noformat, noise, null, nullsink, nullsrc, overlay, pad, palettegen, paletteuse, pan, perms, pixdesctest, premultiply, prewitt, psnr, qp, random, readeia608, readvitc, realtime, remap, removegrain, removelogo, replaygain, reverse, rgbtestsrc, rotate, scale, scale2ref, select, selectivecolor, sendcmd, separatefields, setdar, setfield, setpts, setsar, settb, showcqt, showfreqs, showinfo, showpalette, showspectrum, showspectrumpic, showvolume, showwaves, showwavespic, shuffleframes, shuffleplanes, sidechaincompress, sidechaingate, sidedata, signalstats, silencedetect, silenceremove, sine, smptebars, smptehdbars, sobel, spectrumsynth, split, ssim, stereotools, stereowiden, streamselect, swaprect, swapuv, tblend, telecine, testsrc, testsrc2, threshold, thumbnail, tile, transpose, treble, tremolo, trim, unsharp, vectorscope, vflip, vibrato, vignette, volume, volumedetect, vstack, w3fdif, waveform, weave, xbr, yadif, yuvtestsrc, zoompan
  • Enabled bsfs: aac_adtstoasc, chomp, dca_core, dump_extradata, extract_extradata, h264_mp4toannexb, hevc_mp4toannexb, imx_dump_header, mjpeg2jpeg, mjpega_dump_header, mov2textsub, mp3_header_decompress, mpeg4_unpack_bframes, noise, remove_extradata, text2movsub, vp9_superframe
  • Enabled indevs: dshow, gdigrab, lavfi, vfwcap
  • Enabled outdevs: (none)

A note about the external dependencies

Most ffmpeg dependencies should be fairly trivial to cross-build on Ubuntu - feel free to send a PR that enables that. GNU TLS (gnutls) is probably the most complex dependency. Building ffmpeg with gnutls support is not a requirement per se on Windows, as ffmpeg will use Windows built-in APIs to perform cryptography.