如何在转换数字视频时获得良好的质量?

如何在转换数字视频时获得良好的质量?

我带上了我的旧 NV-GS500 松下摄像机;为了最终将我们所有的录音转换成数字媒体。

到目前为止,事情进展顺利:

  • 在 Ubuntu 16.04 上,我只需通过 DV/firewire 电缆连接设备和笔记本电脑即可
  • 仅使用标准设置(我没有选择任何输出格式;只是选择“单一”无限文件)...基诺为我创建了一个 capture.dv 文件
  • 这创建了一个约 8 GB 的文件,用于存放 40 分钟的视频……我同意
  • 然后我使用一个小脚本将ffmpeg -i infile -pix_fmt yuv420p -crf 23 outfiledv 文件转换为 mp4

但遗憾的是,mp4 的质量并不那么令人信服。特别是在快速移动时,有很多像素化的东西。

因此,我想改善整个事情。现在我发现基诺实际上是“死了”;我想知道什么工具组合可以给我带来良好的质量;尽可能容易。

更新:上面已经给出了 ffmpeg 的完整命令,下面是我运行该命令时收到的输出:

> ffmpeg -i capture001.dv -pix_fmt yuv420p -crf 23 测试.mp4

ffmpeg 版本 2.8.10-0ubuntu0.16.04.1 版权所有 (c) 2000-2016 FFmpeg 开发人员
  使用 gcc 5.4.0 构建(Ubuntu 5.4.0-6ubuntu1~16.04.4)20160609
  配置:--prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --启用 libmodplug --启用 libmp3lame --启用 libopenjpeg --启用 libopus --启用 libpulse --启用 librtmp --启用 libschroedinger --启用 libshine --启用 libsnappy --启用 libsoxr --启用 libspeex --启用 libssh --启用 libtheora --启用 libtwolame --启用 libvorbis --启用 libvpx --启用 libwavpack --启用 libwebp --启用 libx265 --启用 libxvid --启用 libzvbi --启用 openal --启用 opengl --启用 x11grab --启用 libdc1394 --启用 libiec61883 --启用 libzmq --启用 frei0r --启用 libx264 --启用 libopencv
  警告:库配置不匹配
  avcodec 配置:--prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --启用-libgsm --启用-libmodplug --启用-libmp3lame --启用-libopenjpeg --启用-libopus --启用-libpulse --启用-librtmp --启用-libschroedinger --启用-libshine --启用-libsnappy --启用-libsoxr --启用-libspeex --启用-libssh --启用-libtheora --启用-libtwolame --启用-libvorbis --启用-libvpx --启用-libwavpack --启用-libwebp --启用-libx265 --启用-libxvid --启用-libzvbi --启用-openal --启用-opengl --启用-x11grab --启用-libdc1394 --启用-libiec61883 --启用-libzmq --启用-frei0r --启用-libx264 --启用-libopencv --enable-version3 --disable-doc --disable-programs --disable-avdevice --disable-avfilter --disable-avformat --disable-avresample --disable-postproc --disable-swscale --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libvo_aacenc --enable-libvo_amrwbenc
  libavutil 54. 31.100 / 54. 31.100
  libavcodec 56. 60.100 / 56. 60.100
  libavformat 56. 40.101 / 56. 40.101
  libavdevice 56. 4.100 / 56. 4.100
  libavfilter 5.40.101 / 5.40.101
  libavresample 2. 1. 0 / 2. 1. 0
  libswscale 3. 1.101 / 3. 1.101
  libswresample 1. 2.101 / 1. 2.101
  libpostproc 53. 3.100 / 53. 3.100
[dv @ 0x2566420] 检测到的时间码无效
[dv @ 0x2566420] 根据比特率估算时长,可能不准确
输入 #0,dv,来自‘capture001.dv’:
  时长:00:39:45.36,开始:0.000000,比特率:28800 kb/s
    流 #0:0:视频:dvvideo,yuv420p,720x576 [SAR 64:45 DAR 16:9],28800 kb/s,25 fps,25 tbr,25 tbn,25 tbc
    流 #0:1:音频:pcm_s16le,32000 Hz,立体声,s16,1024 kb/s
    流 #0:2:音频:pcm_s16le,32000 Hz,立体声,s16,1024 kb/s
[libx264 @ 0x256dea0] 使用 SAR=64/45
[libx264 @ 0x256dea0] 使用 CPU 功能:MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 0x256dea0] 配置文件高,级别 3.0
[libx264 @ 0x256dea0] 264 - 核心 148 r2643 5c65704 - H.264/MPEG-4 AVC 编解码器 - Copyleft 2003-2015 - http://www.videolan.org/x264.html - 选项:cabac=1 ref=3 deblock=1:0:0 analyze=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 hybrid_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2threads=12 lookahead_threads=2sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
输出 #0,mp4,到‘test.mp4’:
  元数据:
    编码器:Lavf56.40.101
    流 #0:0:视频:h264 (libx264) ([33][0][0][0] / 0x0021),yuv420p,720x576 [SAR 64:45 DAR 16:9],q=-1--1,25 fps,12800 tbn,25 tbc
    元数据:
      编码器:Lavc56.60.100 libx264
    流 #0:1:音频:aac (libvo_aacenc) ([64][0][0][0] / 0x0040),32000 Hz,立体声,s16,128 kb/s
    元数据:
      编码器:Lavc56.60.100 libvo_aacenc
流映射:
  流 #0:0 -> #0:0 (dvvideo (本机) -> h264 (libx264))
  流 #0:1 -> #0:1 (pcm_s16le (本机) -> aac (libvo_aacenc))
按 [q] 停止,按 [?] 获取帮助
帧=1449 fps=112 q=-1.0 Lsize=10373kB 时间=00:00:57.93 比特率=1466.7kbits/s    
视频:9424kB 音频:906kB 字幕:0kB 其他流:0kB 全局标头:0kB 多路复用开销:0.411332%
[libx264 @ 0x256dea0] 帧 I:29 平均 QP:22.01 大小: 23022
[libx264 @ 0x256dea0] 帧 P:826 平均 QP:24.37 大小:8655
[libx264 @ 0x256dea0] 帧 B:594 平均 QP:25.43 大小:3086
[libx264 @ 0x256dea0] 连续 B 帧:29.4% 42.9% 14.7% 13.0%
[libx264 @ 0x256dea0] mb 我 I16..4:21.0%76.6%2.3%
[libx264 @ 0x256dea0] mb P I16..4: 1.7% 5.9% 0.5% P16..4: 46.9% 9.4% 6.7% 0.0% 0.0% 跳过:28.9%
[libx264 @ 0x256dea0] mb B I16..4: 0.0% 0.1% 0.0% B16..8: 48.5% 2.5% 0.6% 直接: 3.3% 跳过:44.8% L0:46.0% L1:50.8% BI: 3.2%
[libx264 @ 0x256dea0] 8x8 变换帧内:73.6% 帧间:82.2%
[libx264 @ 0x256dea0] 编码 y、uvDC、uvAC 帧内:66.2% 56.2% 6.0% 帧间:19.5% 23.4% 0.1%
[libx264 @ 0x256dea0] i16 v,h,dc,p: 14% 39% 12% 35%
[libx264 @ 0x256dea0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu:18%16%33%5%5%6%6%5%7%
[libx264 @ 0x256dea0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu:9% 60% 14% 3% 3% 3% 3% 2% 2%
[libx264 @ 0x256dea0] i8c 直流,H,V,P:56%20%21%3%
[libx264 @ 0x256dea0] 加权 P 帧:Y:14.9% UV:1.5%
[libx264 @ 0x256dea0] 参考 P L0: 62.5% 14.1% 15.9% 6.8% 0.7%
[libx264 @ 0x256dea0] 参考 B L0: 81.5% 17.0% 1.5%
[libx264 @ 0x256dea0] 参考 B L1: 94.9% 5.1%
[libx264 @ 0x256dea0] kb/秒:1331.94
正常退出,收到信号2。

(几秒后按 ctrl-c 中断)

答案1

在视频编码期间运行反隔行视频过滤器非常值得,这很可能减少输出视频中看到的一些奇怪的屏幕效果。第二个想法与运动伪影无关,但非常值得添加,即使用去噪过滤器。

1. 去隔行:

对于 FFmpeg 来说,最好和最快的选择是yadif,以通常古怪的极客方式简单地代表“另一个去隔行过滤器”!

yadif可以不使用任何选项,也可以为以下三个字段分别指定一个选项:

  1. 模式:采用的基本隔行扫描模式
  2. 平价:假设输入隔行视频的图像场奇偶校验
  3. 德因特:指定要去隔行的帧

可以在 FFmpeg 命令行上指定安全默认值,如下所示:

-vf yadif=0:-1:0

如果您希望更改这些内容,请参阅此处提供的所有更深入的细节:

FFmpeg 过滤器文档:yadif
https://ffmpeg.org/ffmpeg-filters.html#yadif-1

mcdeint还可以应用称为(运动补偿去隔行)的进一步去隔行滤波器,但您可能会发现这痛苦地慢。使用此过滤器的典型命令行是:

-vf yadif=1:-1:0,mcdeint=2:1:10

mcdeint您还可以在 FFmpeg 文档中查看选项的详细信息:

FFmpeg 过滤器文档:mcdeint
https://ffmpeg.org/ffmpeg-filters.html#mcdeint

2.去噪:

最后,值得尝试的一点是使用去噪滤波器,虽然这不会影响运动伪影,但仍然值得添加。在 FFmpeg 下有几个选择,但其中一个值得一看的是nlmeans(使用非局部均值算法对帧进行去噪)。您将需要最新的 FFmpeg对于这个。

要在最简单的命令行中使用它,请尝试以下操作:

-vf yadif=0:-1:0,nlmeans

在编码时间方面存在影响nlmeans,虽然惩罚不像所见的那么严重,mcdeint但仍需要考虑......

如果您拥有旧版 FFmpeg 且无法使用此最新过滤器,则可以使用较旧的降噪过滤器,并可放心使用合理的默认设置:

-vf yadif=0:-1:0,hqdn3d

我注意到,我的系统hqdn3d比新系统快得多nlmeans。更好?好吧,我怀疑这是另一个论坛的辩论 :)

希望这些想法的组合能够解决您的问题...

参考:

答案2

您可以使用以下方式快速轻松地实现非常好的质量手刹应用程序。使用以下命令安装:

sudo apt-get install handbrake

我建议你编码为 x264,这是目前最常用的编码,你可以获得相当小的文件,同时保持良好的质量。对于私人档案,我建议将恒定 RF(速率因子)设置为 16 到 18 之间(越低 = 质量越高,尺寸越大)。

在此处输入图片描述

如果您的视频有噪音(可能确实如此),还有一个非常简洁的去噪过滤器:

在此处输入图片描述

您可能还需要对源进行去干扰处理。至于音频... 320 kbps MP3 或 AAC 应该可以为个人存档提供很好的效果。一切都可以在 Handbrake 的 GUI 中设置。

相关内容