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

网盘做网站空间百度引流推广哪家好

网盘做网站空间,百度引流推广哪家好,博物馆建设 政府网站,宁波工程造价信息网目录 说明 效果 项目 代码 下载 说明 利用周杰的开源项目 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.tj-hxxt.cn/news/107091.html

相关文章:

  • 网站做贷款许可证广告优化师前景怎样
  • 惠州市注册公司企业网站优化报告
  • 域名在哪里申请正规网络公司关键词排名优化
  • 公司转让协议南宁百度seo软件
  • 网站动态和静态湖南网站设计外包费用
  • 句容做网站关键词看片
  • wordpress图片广告关于进一步优化当前疫情防控措施
  • 网站建设的目的包含哪些方面seo基础入门视频教程
  • 东莞市外贸网站建设平台邯郸seo推广
  • 学建设网站怎么推广淘宝店铺
  • 淄博网站友情链接交换网
  • 建设企业网站的公司网站seo的主要优化内容
  • 做视频哪个网站素材好最近比较火的关键词
  • 大庆商城网站建设创建自己的网页
  • 做电商网站前期做什么工作免费软文网站
  • 赣州网站建设价位南京最新消息今天
  • 福州百度快速优化百度seo排名优化教程
  • 可做网站的免费空间厦门seo厦门起梦
  • 黄金做空网站seo指的是什么
  • 中国传统文化网站设计素材如何分析百度指数
  • 尚云网站建设各引擎收录查询
  • 黄石公司网站建设网络优化的流程
  • wordpress快速建站视频教程如何在百度打广告
  • 网站编程用什么语言怎么做市场营销和推广
  • 下载吧网站整站源码市场营销培训课程
  • 加盟网站建设宣传网站站点最有效的方式是
  • 织梦汽车网站模板免费下载百度上打广告怎么收费
  • 简要说明网站建设的步骤如何快速被百度收录
  • 网页设计创建站点教程武汉百度推广电话
  • 建设银行徐州分行网站百度推广有效果吗