修正 GeForce Experience 录制的影片上传 Youtube 后颜色变暗的问题

nVidia 的 GeForce Experience 有内建游戏录影的功能,只要按 Alt + F9 就会直接开始录影,再按一次 Alt + F9 即可停止录影并储存影片。

GeForce Experience 录制的影片在 Windows 下播放很正常,但是把影片上传到 Youtube 之后画面会变暗,导致一些细节看不清楚!

我有在这篇文章找到了原因,以及解决方法:

NVIDIA Shadowplay 录制影片上传后颜色偏暗的解决方法 - 知乎

文章里有一些名词我看不懂,不过大致上了解是因为 GeForce Experience 没有把正确的影片编码资讯写入到影片档的 Metadata 区段!

解决的方法就是使用 ffmpeg 来修正影片档的编码资讯,指令如下:

ffmpeg -i "source_file.mp4" -bsf:v h264_metadata=video_full_range_flag=1 -color_primaries bt709 -color_trc bt709 -colorspace bt709 -c:v copy -c:a copy "destination_file.mp4"

批次档改写

我将上述文章中的指令改写为批次档,内容如下:

@ECHO OFF

:: ffmpeg.exe 的程式路径
SET EXE="D:\Portable\ffmpeg\ffmpeg.exe"

IF /I not "%~x1" == ".mp4" GOTO ERROR
%EXE% -i "%1" -bsf:v h264_metadata=video_full_range_flag=1 -color_primaries bt709 -color_trc bt709 -colorspace bt709 -c:v copy -c:a copy "%~n1.ffmpeg.mp4"
GOTO EXIT

:ERROR
ECHO Error: Invalid file extension!

:EXIT
PAUSE

请自行下载 ffmpeg.exe (我下载的是 ffmpeg-N-104381-gab79263419-win64-gpl.zip),并修改批次档里的 EXE 参数至你电脑中的 ffmpeg 的程式路径。

批次档可以随便命名,但副档名必须是“.bat”,例如: fix_metadata.batfix_mp4.bat

如何执行?

有三种方式:

1. 命令列模式

进到命令列模式,直接执行:

fix_metadata.bat Filename.mp4

2. 档案拖曳

于档案总管中,将 Filename.mp4 用鼠标左键拖曳给 fix_metadata.bat 去执行 (影片与批次档不在同一个资料夹也可以这样执行):

3. 传送到

fix_metadata.bat 档案放到 Windows 的“SendTo”资料夹 (于档案总管的网址列输入 shell:sendto 可直接进到“SendTo”资料夹),在影片档点鼠标右键,选传送到 fix_metadata.bat:

用以上任何一种方式执行成功,ffmpeg 会在影片的同一个资料夹产生一个 Filename.ffmpeg.mp4 档案,这就是修正过编码资讯的影片档,要上传到 Youtube 请改为上传这个档案。

修正前后比较

修正亮度前的影片

修正亮度后的影片

应该看得出差异吧? 播放影片后是有差异的,是吧?

执行过程

附上我的 ffmpeg 执行过程:

ffmpeg version N-104381-gab79263419-20211018 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 10-win32 (GCC) 20210408
  configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --enable-libvmaf --enable-vulkan --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-avisynth --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libglslang --enable-libgme --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libmfx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --disable-vaapi --enable-libvidstab --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp --extra-version=20211018
  libavutil      57.  7.100 / 57.  7.100
  libavcodec     59. 12.100 / 59. 12.100
  libavformat    59.  6.100 / 59.  6.100
  libavdevice    59.  0.101 / 59.  0.101
  libavfilter     8. 14.100 /  8. 14.100
  libswscale      6.  1.100 /  6.  1.100
  libswresample   4.  0.100 /  4.  0.100
  libpostproc    56.  0.100 / 56.  0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'E:\Videos\test.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2021-10-18T11:44:23.000000Z
    date            : 2021
  Duration: 00:00:43.05, start: 0.000000, bitrate: 16686 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt470m, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 16483 kb/s, 60 fps, 60 tbr, 90k tbn (default)
    Metadata:
      creation_time   : 2021-10-18T11:44:23.000000Z
      handler_name    : VideoHandle
      vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 194 kb/s (default)
    Metadata:
      creation_time   : 2021-10-18T11:44:23.000000Z
      handler_name    : SoundHandle
      vendor_id       : [0][0][0][0]
Output #0, mp4, to 'test.ffmpeg.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    date            : 2021
    encoder         : Lavf59.6.100
  Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 16483 kb/s, 60 fps, 60 tbr, 90k tbn (default)
    Metadata:
      creation_time   : 2021-10-18T11:44:23.000000Z
      handler_name    : VideoHandle
      vendor_id       : [0][0][0][0]
  Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 194 kb/s (default)
    Metadata:
      creation_time   : 2021-10-18T11:44:23.000000Z
      handler_name    : SoundHandle
      vendor_id       : [0][0][0][0]
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 2583 fps=0.0 q=-1.0 Lsize=   86536kB time=00:00:43.03 bitrate=16473.7kbits/s speed= 150x
video:85443kB audio:1020kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.084271%

参考网页

  1. No comments yet.

  1. No trackbacks yet.

return top

%d 位部落客按了赞: