使用 ffmpeg 将视频从 .264 转换为 .265 (HEVC)

问题描述 投票:0回答:4

我看到有关此主题的一些问题,但我仍然收到错误。我想做的就是将库中的视频转换为 HEVC,这样它们占用的空间就会更少。
我试过这个:

ffmpeg -i input.mp4 -c:v libx265 output.mp4

ffmpeg 似乎需要很长时间,并且输出的大小似乎合适。该视频可以使用 VLC 播放,但图标很奇怪,当我尝试使用 QuickTime 打开它时,出现错误:“无法打开文档“output.mov”。该文件与 QuickTime Player 不兼容。'

我不想更改任何花哨的设置。我只是希望文件占用更少的空间,并且质量损失最小或没有。

谢谢!

编辑: 无法保留我放入视频中的时间戳。
最初我在终端中使用 exiftool 。但是,有时这不适用于视频,所以我会将它们空投到我的 iPhone,使用名为 Metapho 的应用程序更改日期,然后将它们空投回来。 Exiftool 已创建,但有时我就是无法工作。它将把日期更改为 1109212 Aug 2nd。诡异的。最重要的是,当我进行这些转换时,我真的不想丢失其中的时间戳。

我加了时间戳的原始文件,格式为 .264

ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.8)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.2.1_2 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.jdk/Contents/Home/include/darwin -fno-stack-check' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr --enable-videotoolbox --disable-libjack --disable-indev=jack
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test_original.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 0
    compatible_brands: qt  
    creation_time   : 2019-10-22T18:48:43.000000Z
    encoder         : HandBrake 0.10.2 2015060900
    com.apple.quicktime.creationdate: 1994-12-25T18:00:00Z
  Duration: 00:01:21.27, start: 0.000000, bitrate: 800 kb/s
    Chapter #0:0: start 0.000000, end 81.265000
    Metadata:
      title           : Chapter 12
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt709, progressive), 710x482 [SAR 58409:65535 DAR 1043348:794715], 634 kb/s, SAR 9172:10291 DAR 404229:307900, 29.95 fps, 29.97 tbr, 90k tbn, 180k tbc (default)
    Metadata:
      creation_time   : 2019-10-22T18:48:43.000000Z
      handler_name    : Core Media Video
      encoder         : 'avc1'
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 160 kb/s (default)
    Metadata:
      creation_time   : 2019-10-22T18:48:43.000000Z
      handler_name    : Core Media Audio
    Stream #0:2(und): Data: bin_data (text / 0x74786574), 0 kb/s
    Metadata:
      creation_time   : 2019-10-22T18:48:43.000000Z
      handler_name    : Core Media Text
At least one output file must be specified

文件转换为 HEVC,没有 -COPYTS 标签

ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.8)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.2.1_2 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.jdk/Contents/Home/include/darwin -fno-stack-check' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr --enable-videotoolbox --disable-libjack --disable-indev=jack
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test_original_HEVC.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    encoder         : Lavf58.29.100
  Duration: 00:01:21.30, start: 0.000000, bitrate: 494 kb/s
    Chapter #0:0: start 0.000000, end 81.265000
    Metadata:
      title           : Chapter 12
    Stream #0:0: Video: hevc (Main) (hvc1 / 0x31637668), yuv420p(tv, progressive), 710x482 [SAR 9172:10291 DAR 404229:307900], 356 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 29.97 tbc (default)
    Metadata:
      handler_name    : Core Media Video
      encoder         : Lavc58.54.100 libx265
    Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : Core Media Audio
    Stream #0:2(eng): Data: bin_data (text / 0x74786574), 0 kb/s
    Metadata:
      handler_name    : SubtitleHandler
At least one output file must be specified

文件转换为 HEVC,带有 -COPYTS 标签

ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.8)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.2.1_2 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.jdk/Contents/Home/include/darwin -fno-stack-check' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr --enable-videotoolbox --disable-libjack --disable-indev=jack
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test_original_HEVC_keepts.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    encoder         : Lavf58.29.100
  Duration: 00:01:21.30, start: 0.000000, bitrate: 494 kb/s
    Chapter #0:0: start 0.000000, end 81.265000
    Metadata:
      title           : Chapter 12
    Stream #0:0: Video: hevc (Main) (hvc1 / 0x31637668), yuv420p(tv, progressive), 710x482 [SAR 9172:10291 DAR 404229:307900], 356 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 29.97 tbc (default)
    Metadata:
      handler_name    : Core Media Video
      encoder         : Lavc58.54.100 libx265
    Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : Core Media Audio
    Stream #0:2(eng): Data: bin_data (text / 0x74786574), 0 kb/s
    Metadata:
      handler_name    : SubtitleHandler
At least one output file must be specified
ffmpeg h.264 codec quicktime h.265
4个回答
54
投票

此答案(在 CC BY-SA 4.0 许可证下)作为 Gyan评论发布到问题 使用 ffmpeg 将视频从 .264 转换为 .265 (HEVC)


运行此命令进行

x265
转换:

ffmpeg -i input.mp4 -c:v libx265 -vtag hvc1 output.mp4

50
投票

将 4k 转换为 1080(编解码器不变)

ffmpeg -i input4kvid.mp4 -vf scale=1920:1080 -c:a copy output1080vid.mp4

将 h.264 转换为 h.265(分辨率不变)

ffmpeg -i input.mp4 -c:v libx265 -vtag hvc1 -c:a copy output.mp4

将 4k(h.264) 转换为 1080(h.265)

  • 缩小规模+改变压缩编解码器
ffmpeg -i input.mp4 -c:v libx265 -vtag hvc1 -vf scale=1920:1080 -crf 20 -c:a copy output.mp4

选项解释

-i
输入文件名或文件路径

-c:v libx265 -vtag hvc1
选择压缩。默认为
libx264

-vf scale=1920:1080
指定输出分辨率

-c:a copy
原样复制音频,不进行任何压缩

-preset slow
要求压缩算法花费更多时间并寻找更多区域进行压缩。默认为
medium
。其他选项有
faster
fast
medium
slow
slower

-crf 20
压缩质量

-crf 0
高品质、低压缩、大文件

-crf 23
默认

-crf 51
低质量,高压缩,小文件

-vtag hvc1
在转换过程中使用编解码器
hvc1
(又名 HEVC 或 h.265)。

如果未指定

-vtag
(如第一个片段中所示),它将使用 src 文件中使用的编解码器。


13
投票

如果您有 NVIDIA GPU,则可以使用

hevc_nvenc
作为编码器参数,它应该比 CPU 编码器更快。

ffmpeg -i input.mp4 -c:v hevc_nvenc -rc vbr_hq -cq 18 -b:v 0k -2pass 0 output.mp4

但是,请注意,硬件编码文件的压缩程度不如 CPU 编码文件,因为硬件编码器是为速度而设计的。


-5
投票

手机用户最好使用1080*1920的比例。

ffmpeg -i input4kvid.mp4 -vf scale=1080:1920 -c:复制输出1080vid.mp4

© www.soinside.com 2019 - 2024. All rights reserved.