做拉流播放器第一個想到就是,.,..FFmpeg沒錯 我也是用強大的他它來做的.但是我用的不是 cmd 調用 而是用的強大的FFmpeg.AutoGen
FFmpeg.AutoGen
這個是C# 一個自動生成FFmpeg的C#庫,它之強大令人側目,但是文檔資料非常少,它能用C# 辦到一切C++原生ffmpeg的功能
,或許說用C#來實現了一遍ffmpeg ?!?,不同於外部命令調用 它直接用指針來操縱流 上的一段代碼
這是一段 轉碼過程
public H264VideoStreamEncoder(Stream stream, int fps, Size frameSize) { _stream = stream; _frameSize = frameSize; var codecId = AVCodecID.AV_CODEC_ID_H264; _pCodec = ffmpeg.avcodec_find_encoder(codecId); if (_pCodec == null) throw new InvalidOperationException("Codec not found."); _pCodecContext = ffmpeg.avcodec_alloc_context3(_pCodec); _pCodecContext->width = frameSize.Width; _pCodecContext->height = frameSize.Height; _pCodecContext->time_base = new AVRational {num = 1, den = fps}; _pCodecContext->pix_fmt = AVPixelFormat.AV_PIX_FMT_YUV420P; ffmpeg.av_opt_set(_pCodecContext->priv_data, "preset", "veryslow", 0); ffmpeg.avcodec_open2(_pCodecContext, _pCodec, null).ThrowExceptionIfError(); _linesizeY = frameSize.Width; _linesizeU = frameSize.Width / 2; _linesizeV = frameSize.Width / 2; _ySize = _linesizeY * frameSize.Height; _uSize = _linesizeU * frameSize.Height / 2; }
拉流案例
http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4
這個是網上找的
再來一段 香港衛視的 rtmp的 網上找的
rtmp://live.hkstv.hk.lxdns.com/live/hks
來再個 香港衛視的hls
http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8
再來一個 rtsp 的
rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
winform顯示
最后呈現UI上我是用Graphics 在PictureBox 繪制的
以上是 FFmpeg.AutoGen 的github地址
https://github.com/Ruslan-B/FFmpeg.AutoGen
鏈接: https://pan.baidu.com/s/1OMQPnd09KwcF92xVW0d60g 提取碼: mdf3