当前位置: 首页 > news >正文

博兴建设局网站google搜索引擎入口下载

博兴建设局网站,google搜索引擎入口下载,天津logo设计公司,做视频网站空间要多大目录 说明 效果 项目 代码 下载 说明 利用周杰的开源项目 Sdcb.FFmpeg 项目地址:https://github.com/sdcb/Sdcb.FFmpeg/ 代码实现参考:https://github.com/sdcb/ffmpeg-muxing-video-demo 效果 C#利用ffmpeg借助NVIDIA GPU实现实时RTSP硬解码硬…

 

目录

说明

效果

项目 

代码

下载


说明

利用周杰的开源项目 Sdcb.FFmpeg

项目地址:https://github.com/sdcb/Sdcb.FFmpeg/

代码实现参考:https://github.com/sdcb/ffmpeg-muxing-video-demo

效果

C#利用ffmpeg借助NVIDIA GPU实现实时RTSP硬解码+硬编码录制MP4

项目 

代码

using Sdcb.FFmpeg.Codecs;
using Sdcb.FFmpeg.Formats;
using Sdcb.FFmpeg.Raw;
using Sdcb.FFmpeg.Toolboxs.Extensions;
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Sdcb.FFmpegDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        CancellationTokenSource cts;

        /// <summary>
        /// 播放
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            button1.Enabled = false;
            button2.Enabled = true;
            cts = new CancellationTokenSource();
            string rtsp_url = txtURL.Text;
            //输出视频文件的名称。
            string outputFile = "output.mp4";
            Task.Run(() => Recording(rtsp_url, outputFile, cts.Token));
        }

        void Recording(string url, string outputFile, CancellationToken cancellationToken)
        {
            //输出视频的帧率,帧率设置为每秒25帧
            AVRational frameRate = new AVRational(25, 1);
            
            //输出视频的比特率。
            long bitRate = 16 * 1024 * 1024; // 16M

            //从文件夹读取
            //该字符串指定了源图像的文件夹和命名模式。%03d部分表示图像以三位数字命名(例如,001.jpg,002.jpg等)。
            //string sourceFolder = @".\src\%03d.jpg";
            //FormatContext srcFc = FormatContext.OpenInputUrl(sourceFolder, options: new MediaDictionary
            //{
            //    ["framerate"] = frameRate.ToString()
            //});

            FormatContext srcFc = FormatContext.OpenInputUrl(url);
            srcFc.LoadStreamInfo();
            MediaStream srcVideo = srcFc.GetVideoStream();
            CodecParameters srcCodecParameters = srcVideo.Codecpar;

            CodecContext videoDecoder = new CodecContext(Codec.FindDecoderByName("h264_cuvid"));
            {
            };
            videoDecoder.FillParameters(srcCodecParameters);
            videoDecoder.Open();

            //var d=  Codec.FindDecoders(AVCodecID.H264).Select(x => x.Name);
            //var e = Codec.FindEncoders(AVCodecID.H264).Select(x => x.Name);

            FormatContext dstFc = FormatContext.AllocOutput(OutputFormat.Guess("mp4"));

            dstFc.VideoCodec = Codec.FindEncoderByName("h264_nvenc");
            MediaStream vstream = dstFc.NewStream(dstFc.VideoCodec);

            CodecContext vcodec = new CodecContext(dstFc.VideoCodec)
            {
                Width = srcCodecParameters.Width,
                Height = srcCodecParameters.Height,
                TimeBase = frameRate.Inverse(),
                PixelFormat = AVPixelFormat.Yuv420p,
                Flags = AV_CODEC_FLAG.GlobalHeader,
                BitRate = bitRate,
            };
            vcodec.Open(dstFc.VideoCodec);
            vstream.Codecpar.CopyFrom(vcodec);
            vstream.TimeBase = vcodec.TimeBase;

            IOContext io = IOContext.OpenWrite(outputFile);
            dstFc.Pb = io;
            dstFc.WriteHeader();

            // src        -- srcFc.ReadPackets()          -->
            // src Packet -- DecodePackets(videoDecoder)  -->
            // src Frame  -- ConvertFrames(vcodec)        -->
            // dst Frame  -- EncodeFrames(vcodec)         -->
            // dst Packet -- dstFc.InterleavedWritePacket -->
            // dst

            foreach (Packet packet in srcFc
                .ReadPackets().Where(x => x.StreamIndex == srcVideo.Index)
                .DecodePackets(videoDecoder)
                .ConvertFrames(vcodec)
                .EncodeFrames(vcodec)
                )
            {
                try
                {
                    packet.RescaleTimestamp(vcodec.TimeBase, vstream.TimeBase);
                    packet.StreamIndex = vstream.Index;
                    dstFc.InterleavedWritePacket(packet);

                    if (cancellationToken.IsCancellationRequested) break;
                }
                finally
                {
                    packet.Unref();
                }
            }
            dstFc.WriteTrailer();

            io.Dispose();
            vcodec.Dispose();
            dstFc.Dispose();
            videoDecoder.Dispose();
            srcFc.Dispose();

        }

        /// <summary>
        /// 停止
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            button2.Enabled = false;
            button1.Enabled = true;
            cts.Cancel();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            button2.Enabled = false;
            button1.Enabled = true;
            Sdcb.FFmpeg.Utils.FFmpegLogger.LogWriter = (level, msg) => Console.WriteLine(msg);
        }
    }

}
 

using Sdcb.FFmpeg.Codecs;
using Sdcb.FFmpeg.Formats;
using Sdcb.FFmpeg.Raw;
using Sdcb.FFmpeg.Toolboxs.Extensions;
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;namespace Sdcb.FFmpegDemo
{public partial class Form1 : Form{public Form1(){InitializeComponent();}CancellationTokenSource cts;/// <summary>/// 播放/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button1_Click(object sender, EventArgs e){button1.Enabled = false;button2.Enabled = true;cts = new CancellationTokenSource();string rtsp_url = txtURL.Text;//输出视频文件的名称。string outputFile = "output.mp4";Task.Run(() => Recording(rtsp_url, outputFile, cts.Token));}void Recording(string url, string outputFile, CancellationToken cancellationToken){//输出视频的帧率,帧率设置为每秒25帧AVRational frameRate = new AVRational(25, 1);//输出视频的比特率。long bitRate = 16 * 1024 * 1024; // 16M//从文件夹读取//该字符串指定了源图像的文件夹和命名模式。%03d部分表示图像以三位数字命名(例如,001.jpg,002.jpg等)。//string sourceFolder = @".\src\%03d.jpg";//FormatContext srcFc = FormatContext.OpenInputUrl(sourceFolder, options: new MediaDictionary//{//    ["framerate"] = frameRate.ToString()//});FormatContext srcFc = FormatContext.OpenInputUrl(url);srcFc.LoadStreamInfo();MediaStream srcVideo = srcFc.GetVideoStream();CodecParameters srcCodecParameters = srcVideo.Codecpar;CodecContext videoDecoder = new CodecContext(Codec.FindDecoderByName("h264_cuvid"));{};videoDecoder.FillParameters(srcCodecParameters);videoDecoder.Open();//var d=  Codec.FindDecoders(AVCodecID.H264).Select(x => x.Name);//var e = Codec.FindEncoders(AVCodecID.H264).Select(x => x.Name);FormatContext dstFc = FormatContext.AllocOutput(OutputFormat.Guess("mp4"));dstFc.VideoCodec = Codec.FindEncoderByName("h264_nvenc");MediaStream vstream = dstFc.NewStream(dstFc.VideoCodec);CodecContext vcodec = new CodecContext(dstFc.VideoCodec){Width = srcCodecParameters.Width,Height = srcCodecParameters.Height,TimeBase = frameRate.Inverse(),PixelFormat = AVPixelFormat.Yuv420p,Flags = AV_CODEC_FLAG.GlobalHeader,BitRate = bitRate,};vcodec.Open(dstFc.VideoCodec);vstream.Codecpar.CopyFrom(vcodec);vstream.TimeBase = vcodec.TimeBase;IOContext io = IOContext.OpenWrite(outputFile);dstFc.Pb = io;dstFc.WriteHeader();// src        -- srcFc.ReadPackets()          -->// src Packet -- DecodePackets(videoDecoder)  -->// src Frame  -- ConvertFrames(vcodec)        -->// dst Frame  -- EncodeFrames(vcodec)         -->// dst Packet -- dstFc.InterleavedWritePacket -->// dstforeach (Packet packet in srcFc.ReadPackets().Where(x => x.StreamIndex == srcVideo.Index).DecodePackets(videoDecoder).ConvertFrames(vcodec).EncodeFrames(vcodec)){try{packet.RescaleTimestamp(vcodec.TimeBase, vstream.TimeBase);packet.StreamIndex = vstream.Index;dstFc.InterleavedWritePacket(packet);if (cancellationToken.IsCancellationRequested) break;}finally{packet.Unref();}}dstFc.WriteTrailer();io.Dispose();vcodec.Dispose();dstFc.Dispose();videoDecoder.Dispose();srcFc.Dispose();}/// <summary>/// 停止/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button2_Click(object sender, EventArgs e){button2.Enabled = false;button1.Enabled = true;cts.Cancel();}private void Form1_Load(object sender, EventArgs e){button2.Enabled = false;button1.Enabled = true;Sdcb.FFmpeg.Utils.FFmpegLogger.LogWriter = (level, msg) => Console.WriteLine(msg);}}}

下载

源码下载

http://www.hotlads.com/news/5568.html

相关文章:

  • 政府网站使用那种cms百度关键词排名点
  • 青羊区网站设计虎扑体育网体育
  • 无锡外贸网站制作公司志鸿优化设计答案网
  • 用什么网站做海报 知乎正规的教育培训机构有哪些
  • 怎么建设手机小说网站企业网络营销策划
  • 专业营销的网站建设公司排名百度品牌专区
  • 个人网站 商业seo引擎优化平台培训
  • 联享品牌网站建设北京竞价托管代运营
  • 谷歌做不做网站中国职业培训在线
  • 文化建设的现状及思考seo搜索引擎优化是什么意思
  • aspcms网站模板网站搜索排名查询
  • 苏州专业做优化公司哈尔滨优化调整人员流动管理
  • 网站建设评估及分析网络营销与网站推广的
  • 东莞如何制作自己的网站长沙百度推广运营公司
  • 网站开发英文品牌宣传
  • 手机可以访问的网站怎么做建站abc网站
  • 页游网站如何做推广谷歌搜索引擎入口2023
  • 建瓯网站制作360优化大师旧版本
  • 做零食的网站有哪些网络推广优化工具
  • 南京米雅途做网站如何seo网站建设是什么意思
  • 生鲜网站建设费用腾讯企点账户中心
  • 网站改版的seo注意事项seo优化工作有哪些
  • 南京网络科技网站建设短视频seo公司
  • 网页设计与网站建设完全教程最近新闻摘抄
  • 新闻网站建设需要注意些什么广州网络推广
  • 淘宝上做网站可靠吗自动提取关键词的软件
  • 合肥培训网站建设郑州专业网站建设公司
  • 自己做网站的服务器南宁百度seo推广
  • 如何查看网站抓取频率韩国网站
  • 网站设计佛山网站怎么优化推荐