6款良心本地视频播放器,功能强大还完全免费

虽然现在很多人更习惯直接在线看视频,但相信一定还有很多和我一样更喜欢找质量更优质的资源下载到本地观看。在本地上看,就需要一个播放器才可以。

而系统自带的播放功能实在太拉胯了(支持的格式少,有些甚至需要付费才可以使用),所以这种情况我们就很有必要另外安装一个更好用的本地视频播放器。

下面,我将给大家盘点下,在众多本地视频播放器里,都有哪些播放器是强大而又良心的?一共筛选了6款,相信这份名单即使是老/司/.机也不会有多少反对的声音。


1、MPC-HC(点这下

对于懂行的朋友来说,MPC-HC绝对可以称得上是神级播放器。它的全称是“Media Player Classic Home Cinema”,最早是作为Windows Media Player(WMP)的同人作品开发出来的。然而,它却大大地超越了后者。

​MPC-HC体积及资源占用很小,响应迅速,能播放网上几乎全部主流的音频视频格式,兼容性非常好,适合低配置老电脑上。

根据简单的比较,在同一台电脑上用 PotPlayer、QQ影音 以及 MPC-HC 播放同一部影片,基本上 MPC-HC 的资源占用都会节省不少。

2、VLC(点这下

VLC 是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。

​它可播放大多数格式,无需安装编解码器包;完全免费,无广告,无跟踪行为;能播放任何内容,和potplayer一样,加速不变声,并可以播放不完整的AVI文件。

​3、MPV(点这下

MPV是基于MPlayer和mplayer2的媒体播放器。它支持多种视频文件格式,音频和视频编解码器以及字幕类型。特殊输入URL类型可用于从磁盘文件以外的各种来源读取输入。根据平台,支持各种不同的视频和音频输出方法。

mpv具有基于OpenGL,Vulkan和D3D11的视频输出,能够实现发烧友喜爱的许多功能,例如使用流行的高质量算法进行视频缩放,色彩管理,帧定时,插值,HDR等。

虽然mpv力求极简主义并且不提供真正的GUI,但它在视频顶部有一个小控制器用于基本控制。另外它还可以利用所有平台上的大多数硬件解码 API。硬件解码可以在运行时按需启用。

总结:简单、简洁、但也很强大。

​4、PotPlayer(点这下

对于一般的用户来说,其实要求并不多,只要这个播放器能播放的格式多、打开速度快、运行时占用资源小、没有广告,那就是最好的了。

而PotPlayer就是这样的一款软件,点这下最新版

无论你在网上任何地方搜“Windows上好用的视频播放器”,那PotPlayer都一定榜上有名。这不是大家为了恰饭而推荐的,而是因为它真的好用。

​PotPlayer的优势在于强大的内置解码器,而且能做到0.2-12倍的倍数播放的同时,还可以做到变速不变声,这对要刷课的学生党来说,好用和实用程度懂的都懂。

另外如果你也嫌弃原生皮肤有点古板、想换个帅气的皮肤,可以参考下面的操作去更换,配得好颜值相当高,而且不同皮肤的功能按钮也各有特色。

我也给大家准备了几款:点这下,更换后的预览上两张大家参考下。

​在PC端如果要装一个本地视频播放器,个人还是比较推荐PotPlayer的,毕竟它各方面都蛮强大,还支持一定程度的界面美化。

5、MPlayer WW编译版(点这下

MPlayer 是一款开源的多媒体播放器,以 GNU 通用公共许可证发布,多平台支持。MPlayer 是建基于命令行界面,在各操作系统可选择安装不同的图形界面。

而MPlayer WW 则是由william0wang编译的版本。相对原版,WW版对低配电脑支持比较好,占用系统资源低,Lite 版本的压缩包只有 9M 大小,解压缩后 30M,无需安装。首次使用即支持大多数视频格式。

​6、QQ影音(点这下

QQ影音是鹅厂出品的,算是鹅厂所有产品里最良心的产品了吧(说的是鹅厂的产品里)。界面简洁、无广告,支持大部分的主流视频格式。

Ps:QQ影音在前几天(22年6月14日),鹅厂下架了它所有的版本,不知道是不是要此告别舞台,但作为本地播放器,它下不下架对使用影响也不会有多少。

​7、其他的播放器

除了上面提到的6款,其实还有一些其他的表现也还不错的播放器,比如迅雷影音、爱奇艺万能联播、完美解码...这些就不一一介绍了,有兴趣的话自己去搜索吧。


总结来说,上面提到的几款可能是本地视频播放器这个领域里最好的几个了吧?如果你也习惯在本地播放上看视频,相信看完这篇文章后你应该不会再缺好用、无广告、解码能力又强大...的视频播放器了。所以,如果觉得有用,随手点个赞呀?

<think>好的,我现在需要帮助用户解决在C#中读取CSV文件到DataTable时避免乱码的问题。首先,我得回忆一下用户提供的引用内容,看看有什么可以参考的。用户提到了引用1中的手动读取方法,引用2中的OLEDB方法,引用3的编码设置,还有引用4关于Excel版本的问题,不过CSV可能不需要考虑Excel驱动。 首先,用户的问题是如何避免乱码。乱码通常是因为编码不一致导致的,所以需要确保读取时使用正确的编码。引用1中的代码使用了StreamReader和UTF-8编码,而引用3提到使用GB2312编码导出。所以可能的解决方案包括正确设置读取时的编码,比如UTF-8或者GB2312,具体取决于CSV文件的编码方式。 用户可能不知道CSV文件的具体编码,所以需要指导他们如何确定编码,或者提供通用的方法。例如,使用Encoding.Default可能会根据系统设置来读取,但可能有风险。更好的做法是让用户检查文件的编码,或者在代码中自动检测编码。不过自动检测可能比较复杂,对于新手来说,可能更倾向于直接指定正确的编码。 引用1中的手动读取方法通过逐行处理CSV,分割列并添加到DataTable。这种方法的好处是控制力强,可以处理不同的分隔符,并且容易调整编码。引用2中的OLEDB方法使用了Jet引擎,但可能需要注意驱动是否安装,比如在较新的系统中可能需要安装Access Database Engine,尤其是在64位系统上。此外,引用4提到的ACE.OLEDB问题,可能也需要用户安装相应的驱动,但CSV可能不需要,但需要确认连接字符串是否正确。 所以,解决方案可能有两条路径:手动读取和使用OLEDB。用户需要避免乱码,所以在手动读取时,指定正确的编码是关键。例如,使用StreamReader并传入正确的编码,如UTF-8或GB2312。在引用1中,使用了UTF-8,但可能有些CSV文件是ANSI编码(比如GB2312),这时候需要调整编码参数。 另外,在引用3中,导出时使用了GB2312编码,这说明在读取时如果文件是GB2312,也需要用同样的编码读取。因此,解决方案需要明确指定编码,并可能提供两种方法:手动读取和OLEDB方法,同时处理编码问题。 对于手动读取的方法,步骤大致是:创建DataTable,读取文件流,使用StreamReader指定编码,处理表头,然后逐行读取数据。需要注意分割符的正确性,比如用户代码中使用的是空格分隔符,但CSV通常是逗号分隔,可能需要用户根据实际情况调整。 对于OLEDB方法,连接字符串中的CharacterSet设置可能影响编码,比如在引用2中设置为UNICODE,这可能需要确认是否正确。另外,OLEDB读取可能更简便,但需要依赖系统组件,可能在部署时需要注意。 总结,给出两种方法,并强调编码设置的重要性。同时提醒用户根据CSV的实际编码调整StreamReader的编码参数,或检查OLEDB连接字符串的CharacterSet。此外,处理可能的异常,比如文件不存在,或者权限问题,但用户主要关心乱码,所以重点在编码部分。 最后,生成相关问题,可能涉及其他编码问题、处理复杂CSV结构(如包含引号或换行符)、性能优化等。</think>以下是如何在C#中读取CSV文件并避免乱码的两种解决方案,结合代码实现和关键注意事项: --- ### **方案一:手动逐行读取(推荐灵活控制)** ```csharp public DataTable ReadCsvToDataTable(string filePath, Encoding encoding) { DataTable dt = new DataTable(); string[] separators = { "," }; //根据实际分隔符调整,例如制表符用"\t" using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { using (StreamReader sr = new StreamReader(fs, encoding)) //关键编码设置 { //读取表头 string headerLine = sr.ReadLine(); if (headerLine != null) { string[] headers = headerLine.Split(separators, StringSplitOptions.RemoveEmptyEntries); foreach (string header in headers) { dt.Columns.Add(new DataColumn(header.Trim())); } } //逐行读取数据 while (!sr.EndOfStream) { string dataLine = sr.ReadLine(); string[] rowData = dataLine.Split(separators, StringSplitOptions.None); dt.Rows.Add(rowData.Select(x => x.Trim()).ToArray()); //去空格 } } } return dt; } ``` #### **调用示例** ```csharp //若文件编码为UTF-8 DataTable dt1 = ReadCsvToDataTable("data.csv", Encoding.UTF8); //若文件编码为GB2312(常见于Windows系统生成的CSV) DataTable dt2 = ReadCsvToDataTable("data.csv", Encoding.GetEncoding("GB2312")); ``` --- ### **方案二:使用OLEDB引擎(需安装驱动)** ```csharp public DataTable ReadCsvByOleDb(string filePath, string fileName) { string connectionString = $@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source={Path.GetDirectoryName(filePath)}; Extended Properties='Text;HDR=Yes;FMT=Delimited;CharacterSet=65001;'"; //65001对应UTF-8 using (OleDbConnection conn = new OleDbConnection(connectionString)) { conn.Open(); OleDbDataAdapter adapter = new OleDbDataAdapter($"SELECT * FROM {fileName}", conn); DataTable dt = new DataTable(); adapter.Fill(dt); return dt; } } ``` #### **注意事项** 1. **编码设置** - 手动读取方案通过`StreamReader`的编码参数直接控制(如`Encoding.UTF8`或`GB2312`)[^1][^3] - OLEDB方案通过`CharacterSet=65001`指定UTF-8编码,若要使用GBK可改为`CharacterSet=936` 2. **依赖组件** - OLEDB方案需安装[Microsoft Access Database Engine](https://www.microsoft.com/en-us/download/details.aspx?id=54920),尤其是64位系统[^4] --- ### **避免乱码的核心步骤** 1. **确认文件实际编码** - 用记事本打开CSV → 另存为 → 查看"编码"下拉框中的默认选项 2. **统一编码配置** - 读取时使用的编码必须与文件保存的编码一致 3. **特殊字符处理** - 若数据含逗号或换行符,需用双引号包裹字段(可通过正则表达式增强解析逻辑) ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值