knoami / ffmpeg-win32

Cross-building ffmpeg for Windows

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

About

Cross-building ffmpeg for Windows

License:GNU Lesser General Public License v3.0


Languages

Language:C# 100.0%