视频播放备忘录(一)

前些日子,KK在逛某个bt发布站的时候看到一位热心的发布者在资源内容介绍里写了一些关于视频格式选择的内容,KK看完后发现谬误连连,一时头脑发热,抛下两句冷言冷语扬长而去。事后想想,毕竟作者出发点是好的,KK这样冷嘲热讽实在有点过分了,谁都是从不懂到懂的。与其装13,不如来点实在的,于是KK就写了这篇文章,与各位来聊一下电脑上(主要指windows操作系统下)播放常见视频格式时所遇到的一些技术细节和问题,希望对大家有所帮助。

1. 基本概念:
播放器之所以能让一个视频在电脑上同时呈现画面和声音甚至字幕,是因为许多“小家伙”在后台辛勤工作的结果,这些“小家伙”就是解码器和分离器(其实还有视频和音频渲染器等等,不过这并不是本文的重点)。整个视频播放的过程简单来说大概是这样的:分离器将视频分离为视频部分和音频部分(当然某些高级的格式还带有字幕,甚至多条视频音频),然后视频和音频经过对应的解码器解码,通过视频,音频渲染器呈现出来。下图是一个叫做GraphStudio的工具,用它加载视频文件后可以清晰的看到这个视频在后台经过了哪些处理。

说到底,大多数播放器只是一个前端,它通过调用各种解码器,分离器以及渲染器来播放视频文件。

在windows下绝大多数的播放器都是基于DirectShow这个媒体框架的,但是跨平台的播放器一般不使用DirectShow(比如quicktime,realplayer),而是使用它们自己的媒体后端。不过由于mplayer是开源的播放器,所以一些经过改进的windows版本是支持directshow的。(关于DirectShow,KK的理解不是很深刻,上面那段可以会有谬误,如果有了解这方面的朋友请指正)

2. 格式:
各位看新番,看dvd/bd rip,看各种剧,看电影,看预告片,甚至看在线视频时都会碰到各式各样的视频格式,有avi,mp4,mkv,wmv,mov,mpg,rm,rmvb,flv,ogm等等等。以前这些格式往往都需要对应的播放器才能播放,比如mov必须用quicktime,rm必须用realplayer。而现在出现了各种所谓的万能播放器,几乎所有格式通吃。说到底并不是播放器NB了,而是这些格式有了对应的分离器,使得各种播放器可以调用,比如以前所谓的让windows media player播放rm格式的插件,说白了就是一个rm和rmvb格式的DirectShow分离器而已。

各种格式只是不同的封装形式即不同的媒体容器,大家可以将这些格式想象成不同的便当盒,有些便当盒比较小,只能装下饭和菜(视频和音频),有些除了饭菜还能装下筷子(字幕),高级便当盒是分层的,可以装很多不同的菜(多音轨,多视频轨)。至于饭菜的好坏优劣,那不是盒子所能决定的,所以说格式与视频质量的好坏并没有直接关系,真正决定视频质量好坏的是视频编码。

3. 编码解码:
只有分离器,没有解码器,是无法完成一个视频的播放的,这里给大家看一个文件名[POPGO][Mouryou_no_Hako][02][720P][BluRay][x264_aac][GB][46EBA9AC].mkv
各大字幕组在出片的时候都会用类似的一串东西来作为文件名,这已经是约定俗成的东西了,其中[x264_aac]就是指这个文件的视频和音频编码(这里要指出,x264只是一个编码器,它是用来做H.264/avc视频编码的,将x264来标注视频编码略有不妥,嘛…人家做字幕也不容易,这种细节就算了)。可以看出,这是一个mkv封装的,以h.264作为视频编码,aac作为音频编码的视频文件,由于mkv可以内挂字幕,所以文件里可能还包含字幕。那么如果要播放这个文件,除了需要mkv分离器(Haali,Gabest)还需要H.264解码器(ffmpeg,coreavc等等)以及aac解码器。缺少任何一种解码器,那么播放时不是没画面就是没声音。

现在介绍一下一些常用的编码方式:vcd用的是mpeg1视频编码(现在大部分的galgame的片头片尾动画仍然在用mpeg1编码),dvd用的mpeg2视频编码,早期电影的dvdrip用的都是Divx视频编码,后来改用开源的Xvid,而蓝光现在大部分用的是H.264编码(据说早期的蓝光仍然用的mpeg2)。而各大字幕组常用的视频编码基本上就是H.264,real video。

简而言之,只要装了对应的分离器,解码器,任何DirectShow播放器都可以播放相应的格式。如果你的操作系统是win xp,你可以到C:\Program Files\Windows Media Player  下面找到一个wmplayer2.exe ,这东西就是windows media player 6.4,十几年前的老古董了,基本就是个DirectShow播放器的空壳子,只有5K,但是只要你装了正确的解码器和分离器,它照样什么都可以放。

无法直接截图,只能拍照了,这里放的是RMVB

如果将以上内容看明白了,那么基本上不会有什么视频文件会难倒你了,碰到不清楚什么编码的文件,用相关的工具分析一下就一目了然了(比如mediainfo)。

但是如何让视频放得合理,放得安心,放得舒服呢?KK会在下次和大家继续讨论。

最后附上KK文章里所用到的小工具:MediaInfo 和 GraphStudio

大家有兴趣可以猜猜题图中放了那些片子,用了哪些播放器~


和邪社官方Telegram通知群:https://t.me/hexieshe_cn

和邪社官方Telegram粉丝群:https://t.me/hexieshe_chat

116 条回复 A 作者 M 管理员
  1. 深夜来上课

    • @2-D,
      借用个沙发,详细写写这片名的内涵。
      “[POPGO][Mouryou_no_Hako][02][720P][BluRay][x264_aac][GB][46EBA9AC].mkv”
      【popgo】是字幕组名
      【720P】(压缩的的分辨率)1280*720常见的还有【1080P】【480p】
      【bluray】指片源是蓝光【x264_aac】
      x264是视频压缩码 aac是指音频压缩码
      【GB】是指简体中文
      [46EBA9AC]是CRC码很有用,大家要是遇到视频播放花屏,可以用“RapidCRC”检查CRC有没有错。没有错的话,大概就是播放器问题了,解决方法是多备几个绿色的播放器。

  2. 支持KK文章。

    個人比較喜歡的容器順序:MP4,avi,mkv,討厭容器,ts

    個人比較喜歡的視頻編碼:H.264,DviX/XviD,悲劇解碼:WMV9

    個人比較喜歡的音樂編碼:AC3,DTS,MP3,悲劇解碼:AAC_5.1CH

    另外放流的人分不清楚x264和H.264的區別以至於拿x264當做編碼tag來命名文件已經是氾濫的現象了。

    • @RedBlaze, 很少人能说清楚H.264和H264的区别,更别说x264和H.264了,

    • @collinyea, H.264是编码方式,x264是开源编码器,H264我也不知道是啥…求解~

    • @KK, 查了一下,好像有*.h264這麼一種後綴名。不過是不被推薦的格式。

    • @KK, 很多人会把x264,x.264,H264,H.264混淆(其实我也不敢说自己完全搞清楚了,以下如果有说的不对的地方还请高手指教)
      简单来说:
      x264:x264就是采用H.264标准的 编码器/编码格式
      X.264:个人表示貌似没有这个东西……
      h264:一个文件格式,H.264编码的未经过封包的源格式
      H.264:这个应该不用解释了,最大的范畴

      所以说,写H.264基本上是没什么错的,大家都是采用这个标准的,另外H.264这个H严格来说应该是要大写的……人家是规范嘛

    • @collinyea, 那個,恕我寡聞,H.264和H264的區別我還真不知道,求解釋。

    • @RedBlaze, 恩,喜好基本一致~

  3. 拜见KK……这次走在视频的康庄大道上了

  4. KK 你其实还可以让大家猜猜 题图里放的都是那些作品的片段……

    • @Jimmy, 就上面第2个不太确定,是穿越时空的少女?

    • @菊花党党魁, 上面第三个(就是最小那个)是什么?
      第二个乍一看以为是夏日战争的夏希出浴镜头,考据后发现没这个镜头

    • @菊花党党魁, 对的

    • @Jimmy, 恩,这就加上。话说一共7个播放器,其实我更想让大家猜是哪7个播放器…

    • @KK, Mplayer QuickTime KM WMP Winamp 其他就不明了 GOM? QQ?….

    • @Jimmy, 详细答案我会在下次公布的-_____________-

    • @Jimmy,
      一:XX百合作,二:穿越时空的少女,三:…
      四:星际牛仔(KK看片还真内涵!赞个) 五:没看过。莫非是新房片
      六:5CM 七:矮瓜和铁通

    • @fan,
      5不就是AB么!!

    • @雙身人,
      看细好像是,难道是音无同学的

  5. 第一幅图 用的都是什么播放器? 只认识几个

    • @Fomalhaut,

      mpc系;图标熟,不肯定,老版本QQ? ; winamp; quicktime
      不知,GOM?; kmp ; mplayer

  6. 说到各式跟质量没关系,让我想到以前我都一直以为MP4都很差,比rmvb,AVI之类的差,知道后来看到某字幕组做的总大小9G的MF各式MP4的我才彻底改观了···
    不过还没看到.flv的有多么厉害的效果出现过···
    KK说没有XP,正好我用的是,想说正好最近开放了贴图功能,结果今天要用才知道只是加入外连图片而已。我也没有网络相册,还是不弄了。
    顺带一提,我按照KK说的看到了,实体大小是4.53KB

    • @kousyoutou, MP4作為一種封裝格式還是相當優秀的。

      我之所以把它列作首選格式,不僅僅在於他本身對各種視頻音頻的良好支持,還在于他的競爭對手總是有各種不爭氣。ts在封VC-1編碼時,我的解碼總是出問題以至於光有聲音沒圖像。MKV在封DTS音軌時我的解碼器又有問題。至於AVI,廉頗老矣,都不用多說,不過兼容性倒是不錯。

      至於RMVB,不多做評價,不到沒的選擇,不拿RMVB做收藏。

    • @RedBlaze, MKV封DTS来说,其实不算MKV本身的问题,应该是分离器的问题了。

    • @RedBlaze,
      是你的解码器有问题还是就是有问题

    • @kpt, 分離器x2+解碼器x2四種組合都不行,但是我依舊不能確定是不是分離器或解碼器不行,畢竟軟件有bug是很正常的事情。但是出於眼不見為凈的考慮,我刪除了機子里所有ts格式的影片,反正我對電影的依賴度不大,動畫才是最重要的。而動畫,日本方面現在放流基本上都是mp4+H.264+AAC。

    • @kousyoutou, RV编码太老了,新的RV其实也是采用的H.264标准的,我不知道为什么那么多人还是抱着RealVideo不放。

    • @collinyea, 第一,RV知名度高,第二,ERP压RMVB非常简单

    • @kousyoutou,
      ACFUN上有720P甚至2880P的视频…
      不过不知道是FLV还是MP4了

  7. media player classic,windows media player,winamp,quicktime,realplayer,KMplayer,Mplayer
    就一个不太确定

    • @锋子, 很接近了,果然还是有高手的

    • @KK, 很接近的话,难道不是kmplayer而是potplayer?好些都能换皮,很难说呢

  8. 刚刚回复的突然不见了
    播放器:media player calssic,windows media player,Winamp,quicktime,realplayer,KMplayer,Mplayer
    有一个不太确定

  9. 咱对KK上面说的做几句旁注吧,不对请指正:
    1.用MPEG1做galgame出了游戏引擎外,另外重要一点是MPEG1可以被各个系统自带的解码器很好的支持,而不会出现问题。
    2.VMR9 EVR 还有新兴的MadVR渲染器可以用D3D来渲染,而不是直接调用DirectShow
    PS.感觉KK好像是用K-LITE的感觉,因为这两个工具都是K-LITE集成的。

    • @lizky, 关于1我完全同意。
      关于2,你仔细看我的GraphStudio截图,最后视频渲染器就是VMR(当然也可能是VMR7)但是调用D3D就不是DirectShow了吗?或许只是渲染方式变了,但是整个媒体框架并没有变吧?这牵涉到调用系统API的知识,我就不太懂了。

      PS:我的确用的是K-lite~~

    • @KK, D3D和DirectShow是DIRECTX里面的两个不同组件

  10. 只看出KM,QUIKCTIME,WMP,WINNAP

  11. 受益了谢谢KK!!

  12. mplayer的解码器是ffmpeg,但是必然性的不支持direct show渲染,于是加入了direct show渲染的就叫ffdshow
    MPC-HC+ffdshow+haali spliter+ac3fliter+xvid飘过

    • @Edison, ac3fliter是我最不爽的音頻解碼器,這句話可以追溯到我4年前我大三那陣子了,各種莫名問題。現在就用winDVD,cyberlink,或者FFdshow的spdif輸出,現在我一直在期待一個可以spdif直輸AAC的解碼器。不過貌似誰都沒興趣做。

    • @RedBlaze, 自己做

    • @RedBlaze, AC3FLITER可以输出SPDIF啊!不过俺穷人,没条件,耳机党就行了……

    • @Edison, 不是,那個時候我還沒有SPDIF的音響(大學宿舍里誰放5.1啊),那個時候主要是5.1的矩陣上總是有問題。嘛反正我已經不用AC3filter很多年

  13. GraphStudio ——— 这个是啥?!干吗用的..

  14. MPC,WMP12,winamp,QT
    real?(不确定,很久没看过real了),Kmplayer,Mplayer

  15. 想问下如何在win7下用vobsub

    • @death, 播放器一般都有内建的字母加载功能,要加载双字幕用ffdshow加载就够了,不过话说我也不知道VOBSUB咋用,MPC-HC加外部滤镜都没用

    • @Edison, 把同与视频同文件名的字幕放在同一目录下看看

    • @death, 你要先说清楚是什么播放器先。一般都要在滤镜里面加载VOBSUB。同时VSFitter滤镜有两个,一个是普通的,一个是自动加载版。这两个要分清楚

  16. – -某些发布网站上 那些XXXXX的 天天抱怨:” 这MP4怎么这么小啊 会不会不清晰啊 “ ” mkv比MP4清晰多了 怎么不放MKV的啊“ 乱七八糟的 一堆误人子弟的 然后还有不懂装懂的 说的可正经了 说了一堆没用的 – -||||||| 真受不了那群人

  17. ╮(╯_╰)╭这是个无解的问题。。简直无法想象爱装X的人不存在的世界
    关于这篇文真是受教了。。又学多一点,感谢KK君的指教

  18. @KK, 基本正解。DShow实际上是一套视频处理的规范,主要包括两点:
    1. 在视频处理过程中存在什么样的角色(分离器splitter,解码器encoder,渲染器render)
    2. 各个角色之间如何相互协作:这是通过一系列预先定义好的COM接口来进行的。

    DShow的意义就在于任何人都可以根据它指定的规范来编写程序负责视频播放中一个或多个角色,然后和已经有的别人或者自己的DShow模块合作完成视频的播放过程。DShow是本身没有什么东西可以被“调用”的。就算整个的“播放框架”也只是一个按DShow规范实现的模块而已。(windows本身对这个播放框架有一个实现,你当然也可以自己另写一个。)

    所以回到渲染器的事情上来,VMR7/9都是符合DShow规范的渲染器。至于渲染器本身用什么办法把画面呈现出来,甚至你的渲染器到底会不会呈现画面,那就不是DShow关心的事情了。

    • @tomoyo, encoder 是解码器?那请问 decoder 是神马?

    • @tomoyo, encoder是编码器,解码器应为decoder

  19. MPC,WMP,Winamp,Quicktime,Mplayer,KMplayer,那满地番茄酱的是啥播放器实在是不知

    • @crossline, 我也是,那个东东实在看不出,应该没用故

    • @crossline, 都知道WMP啊,晕,我对WMP的图标还停留在老的那个,原来是WMP。。。

  20. 表示文盲的很 囧rz

  21. MPC、WMP、KMP、MPlayer、Winamp(雾)、GOMPlayer(雾)、最后一个悟不出……

    • @伯翎飞云, 左下角那个是gomplayer?剩下那个是QuickTime

  22. x264和H264的关系好比当年的divx和xvid……这里弄错了

    • @路人, 到底是谁弄错
      大哥,不懂不要装懂,谢谢
      另外,没有H264这种说法
      官方定义的标准是H.264,又称AVC
      而x264是支持该标准的一个编码器,在普通民用中,x264目前是最优秀的支持H.264标准的编码器
      *.h264大多是H.264的RAW格式文件,就是因为怕引起歧义,所以不推崇以*.h264来作为H.264的RAW文件.大多数情况会使用*.264作为后缀名

    • @路人,
      关于divx和xvid,有兴趣的人可以去查黑历史(很精彩的哟

    • @路人, 怎么都是路人?一个人自问自答自己反驳自己?????

    • @kpt, 额…是路人甲和路人乙的关系 =。=

  23. 电脑烂 一般都下RMVB的路过

  24. 知道吗,第一张图我猛地一看,以为是一个女的,扭着身子,屁股对着屏幕,一只手在后面撩起裙子,内裤露出

  25. Candy☆Boy,穿越时空的少女,不知,cowboy bebop
    AB,秒速,钢炼

    谁能告诉我穿越时空的少女旁边的一片红的是什么动画啊??

    • @afeiliya, 虽说我也没看过,也猜不出来。但是你可以从播放器里显示的单词找到线索…………= =

    • @afeiliya,
      看画风,怀疑是新房片,难道是“吸血鬼联盟”?

  26. 20-24分钟,体积100-180M的情况下,RMVB的表现是很不错的。
    比较喜欢MKV H.264 的视频,声音就随意些了。没音响 / 。\

  27. x264是H.264标准的一种开源实现
    视频编码来说,它更应该叫做AVC1(注意看作者贴的mediainfo的图里面也是这么写的)

    • @WG,
      Some software programs (such as VLC media player) internally identify this standard as AVC1
      注意是”some”

  28. 曾经把几个爱情动作片像这样摆开了一起看

  29. DMG的视频用KMP一直都是播放没声音.求解= =

  30. 专业

  31. 正中间那个不会是心灵之窗吧

    • @@_@, 握爪,我也认为那是《心灵之窗》,人物的形态和上色相较于抄来的秒五背景显得太过于粗糙了……

    • @CCD, 播放器里显示出片名了,是秒速

    • @CCD, 新海诚看到你这句话要哭死了…

    • @KK, 我狗眼瞎掉了!!!!!立即翻出秒五复习10遍+面壁半个月……大神莫要杀我T T

  32. 我只懂,rvmb、MKV用电脑看。MP4、ts、DVD、BD可以直接塞进PS3。

  33. 又见KK~鼓掌~

  34. 难得在和谐社看到篇技术贴,哇塞,楼上威武。

    此贴应该转CB

  35. 学习了~技术文

  36. 路过,学习。发现我居然看完了一个技术文

  37. 其实完全不必关心格式,编码方式才是关键,使用文件头辨识文件的操作系统根本没有后缀名(扩展名)的概念
    很不喜欢某些被列在 ffmpeg 耻辱柱上的播放器(国产为主,国际知名的也有)
    Linux 上还是 mplayer 和 VLC 更好用
    据说世界三大播放器是 WMP 、 quicktime 、 VLC ,其他什么的都排不上名次(有待考证)

    • @Wheat0r,
      怎么能不关心,不然你用什么分离器
      难道你喜欢视频和音频都分开以RAW的方式存储?

    • @路人, 纳尼,我为什么打上去的是“格式”,本来是打后缀名的,从我后面的文字也能看出来,前面笔误。
      更加美好的应该是不管什么格式都在文件的固定区域(第xx字节处)写入文件构成的信息,从而可以使用通用分离器……

  38. 扫盲贴,必须up

    期待下集

  39. real stream 很黑的,各位不要萌它
    wmv 、 mov 这号完全不开放的东西也相当烂
    比较喜欢 Matroska 的容器,当然 ogg 类的开源容器和相应编码方式也很好

  40. 哦哦哦我竟然把第一段的windows看成了windchaos…….难不成….我已经把KK和windchaos组成CP了!!!

  41. 原来标题上的那些乱码 是用来检测CRC的

  42. 一直在在用MPC+K-LIE CODE,感觉还不错~

  43. 貌似应该是那贴吧 dmhy上的?

  44. 为什么没人猜第一个播放器是MPC-HC

  45. 求教各位大神一个视频压制的问题-0-
    我用mediacoder想把一些BDrip的资源搞成360pix高的h.264+aac编码格式扔到手机上硬解播放,问题是只要碰到FLAC音轨就会出现问题,不是声音不同步就是最后几秒的声音没掉,个人推测是解码器或是分离的问题,但折腾了很久也没能解决,各位有没有什么解决思路呢?
    PS:只有来源的音频是FLAC格式才会出现问题,其他格式一切正常= =|||

    • @PandaL, 哦对了我转的是单音轨的NCOP和NCED

  46. 技术日志收藏了..

  47. 我觉得用x264来代替H.264作为视频的编码格式没什么问题
    因为H.264有许多种编码器,而不同编码器所带来的效果是不同的
    x264作为最常用也可以说是效果最好的编码器,用它来标可以让下载者知道用了什么编码器

  48. H.264是一个规范,ITU-T H.264是它的文档编号,后来估计作者懒得再命名,就直接用这个了。

  49. MPC-HC(大几率K-Lite带的?) WMP12 不认识*2 PD10 KMP MPlayer(都写了,orz……

  50. 话说没TMT3?BDMV不二之选啊

  51. KMplayer. 路过

  52. 顺便vista路过

    (当然不是这台。。。)

  53. 使用perian + qt + vlc + plex + mplayer 的无硬件加速解码怨念水果党飘过。。。

  54. 围观各位大神。。。
    虽说不是完全不懂,但还有好多理解不能的。。。

  55. 问下KK,能教教视频解码器的设置吗?
    我的本本能用WMP硬解,KMP就不行了。

    • @蓝色风铃, KMP硬解不行涉及到视频传送滤镜的问题,KMP的默认设置里面,视频经过分离解码后还要传输给视频传送滤镜进行处理,这个滤镜相当于FFDSHOW RAW滤镜。然后再传输给渲染器,要用KMP硬解的话,就要关掉这个传送滤镜才能硬解,一般来说,启用超级速度模式,设置好支持硬解的滤镜并在对应的滤镜里面开启硬解模式。这样KMP就能硬解了。所以,个人觉得KMP弄硬解是一件比较麻烦的视频,习惯KMP而且要硬解的话,比较推荐同门的POTPLAYER。

    • @lizky, 我用win7codecs关闭了Windows解码器,H264选择ffdshow DXVA。KMPlayer选择ffdshow DXVA,开启超级速度模式,依然无法使用DXVA解码器

  56. …路过一只

  57. 用风雷,一般都可以解码。偶尔会死

  58. 好吧,你赢了~~~~完全看不懂

  59. assay abirbalk 3

  60. mplayer和ffmpeg不分家,ffmpeg在windows上的就是ffdshow(修改了代码,使用directshow),ffmpeg那帮人做了n多开源解码器,开源实现,但是还有很多封闭格式无法解决,所以就只能调用类似于rv3040这种外挂解码器。甚至mplayer嵌套了wine代码,为的就是在linux平台使用windows的解码器进行播放(很神奇吧~!)。linux上vo众多,常用的是xv,x11,vdpau,但是即使是没有图形界面,用命令行也可以看电影(直接操作显存,牛叉叉,framebutter),但是至今没有搞清楚mkv是怎么嵌套字体文件和封面图片的。
    windows上,能播放影片就好,不要折腾太多,容易死机……

欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论