ffplay设置解码器播放8k*8k视频;ffmpeg命令补充

4k视频许多人听过,但是8k可能就不太有人接触了,尤其是纵横都是8k分辨率的视频。

这种视频播放器一般是播不了的,如我经常用的MPC-HC播放器(后来得知Windows10自带的“电影和电视”应用可以,而且还流畅,太强大了)。

所以我就用ffplay播放,命令如下:

ffplay.exe -x 960 -y 960 -ss 30 -vcodec hevc_cuvid new.mp4

x指定宽度,y指定高度,ss指定开始时间(秒),重点是vcodec这个参数,这个指定hevc_cuvid解码器,则可以使用GPU加速。我当前不指定的话,如:

ffplay.exe -x 960 -y 960 -ss 30 new.mp4

可以播放,但是仅能播放三秒,然后画面卡住不动,仅有音频在卡顿中继续播放。

通过指定hevc_cuvid,在GPU加速下能播放视频,虽然也略有卡顿。纵横8k分辨率的视频,h265或者是hevc,还是太吃硬件,e5-1650 v4都不能软解,1080TI硬解,使用ffplay,在播放窗口仅有960*960的时候还是略有卡顿。

以上是ffplay对hevc视频硬件加速的记录,如果有非一般的视频,一般播放器无法播放,可以用ffplay验证下视频。

下面是一些别的命令,如去掉音频:

ffmpeg.exe -i 7680_7680.mp4 -map 0:0 -c:v copy new.mp4

map指定仅保留第一条媒体,也就是视频,这样音频就去掉了。

另一例:

ffmpeg -i T.mkv -map 0:0 -map 0:1 -map 0:5 -c:v copy -c:a copy -c:s copy -disposition:s:0 default 02.mkv

这样就可以去除不要的音轨和字幕,保留想要的同时设置该字幕为默认字幕。

另一例:

 ffmpeg.exe -i .\D.mkv -i ..\D\D.srt -map 0:0 -map 0:1 -map 1 -c:v copy -c:a aac -c:s copy -disposition:s:0 default 03.mkv

这里读入原mkv,加入srt字幕,将原来的视频拷贝,音频转aac节省空间,将字幕设置默认。注意-map 1可以加入字幕,否则没有这个参数虽然-i了字幕srt文件,ffmpeg也不会将其合并到视频中。

之前不知道如何指定ffplay的解码器,用下面的命令查看可用的解码器:

ffplay.exe -decoders

得到:

ffplay设置解码器播放8k*8k视频;ffmpeg命令补充_第1张图片

所以我hevc编码的视频选择了hevc_cuvid解码器,这样就能用显卡加速了。原来ffmpeg处理用的hevc_nvenc属于编码器,所以播放命令中不要混淆。

补充:

ffmpeg截取视频,音频视频不重新编码,-ss指定开始时间,-to指定结尾时间,或者不用-to而是用-t指定持续时间:

ffmpeg -i Croatian\ Rhapsody\(LIVE\)\ -\ Maksim\ Mrvica.mkv -c:a copy -c:v copy -ss 00:00:00 -to 00:03:35 test.mkv

没有问题,但是播放的时候发现前面三秒是黑的。Google以下得知ffmpeg切视频时需要关键帧,可能导致差不多十秒左右的视频帧丢失。因此,需要重新编码以解决视频帧丢失问题:

ffmpeg -i Croatian\ Rhapsody\(LIVE\)\ -\ Maksim\ Mrvica.mkv -c:a copy -c:v libx264 -ss 00:00:00 -to 00:03:35 test.mkv

这样就好了。

补充一条抽取视频中的图片序列帧的命令:

ffmpeg -i .\FOV.mp4 image-%5d.jpeg

其他参数不多提,这样可以获取视频中的所有图片帧。

你可能感兴趣的:(FFmpeg)