using FFmpeg.AutoGen;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace FFmpegAPI方式拉流
{
public unsafe class tstRtmp
{
/// <summary>
/// 显示图片委托
/// </summary>
/// <param name="bitmap"></param>
public delegate void ShowBitmap(Bitmap bitmap);
/// <summary>
/// 执行控制变量
/// </summary>
bool CanRun;
/// <summary>
/// 对读取的264数据包进行解码和转换
/// </summary>
/// <param name="show">解码完成回调函数</param>
/// <param name="url">播放地址,也可以是本地文件地址</param>
public unsafe void Start(ShowBitmap show, string url)
{
CanRun = true;
try
{
Console.WriteLine(@"Current directory: " + Environment.CurrentDirectory);
Console.WriteLine(@"Runnung in {0}-bit mode.", Environment.Is64BitProcess ? @"64" : @"32");
//FFmpegDLL目录查找和设置
FFmpegBinariesHelper.RegisterFFmpegBinaries();
#region ffmpeg 初始化
// 初始化注册ffmpeg相关的编码器
ffmpeg.av_register_all();
ffmpeg.avcodec_register_all();
ffmpeg.avformat_network_init();
Console.WriteLine($"FFmpeg version info: {ffmpeg.av_version_info()}");
#endregion
}
catch (Exception ee)
{
}
try
{
//#region ffmpeg 日志
设置记录ffmpeg日志级别
//ffmpeg.av_log_set_level(ffmpeg.AV_LOG_VERBOSE);
//av_log_set_callback_callback logCallback = (p0, level, format, vl) =>
//{
// if (level > ffmpeg.av_log_get_level()) return;
// var lineSize = 10