Преобразование видео из .264 в .265 (HEVC) с помощью ffmpeg

Я вижу, что есть несколько вопросов по этой теме, но я все еще получаю ошибки. Все, что я хочу сделать, это преобразовать видео в моей библиотеке в HEVC, чтобы они занимали меньше места.
Я пробовал это:

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

ffmpeg, кажется, занимает много времени, и результат, кажется, имеет правильный размер. Видео будет воспроизводиться с VLC, но значок странный, и когда я пытаюсь открыть его с помощью QuickTime, я получаю сообщение об ошибке: «Не удалось открыть документ «output.mov». Файл несовместим с QuickTime Player».

Я не хочу менять какие-либо причудливые настройки. Я просто хочу, чтобы файлы занимали меньше места и с минимальной потерей качества или без нее.

Спасибо!

РЕДАКТИРОВАТЬ: возникли проблемы с сохранением отметки времени, которую я вставил в видео.
Первоначально я использовал exiftool в терминале. Но иногда это не работает с видео, поэтому я сбрасывал их на свой iPhone, использовал приложение под названием Metapho, чтобы изменить даты, а затем сбрасывал их обратно. Exiftool был создан, но иногда я просто не работал. Это изменит дату на что-то вроде 1109212 2 августа. Странный. Суть в том, что когда я делаю эти преобразования, я действительно не хочу терять временные метки в них.

ОРИГИНАЛЬНЫЙ ФАЙЛ, КОТОРЫЙ Я ПОСТАВИЛ ВРЕМЯ В .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

person John Terragnoli    schedule 07.11.2019    source источник
comment
Попробуйте ffmpeg -i input.mp4 -c:v libx265 -vtag hvc1 output.mp4   -  person Gyan    schedule 07.11.2019
comment
Спасибо! Это сработало! Я потратил слишком много времени, пытаясь понять это самостоятельно. Последний вопрос: я хотел бы сохранить ту же отметку времени. Я знаю, что тег -copyts должен выполнять эту работу, но отметка времени все еще меняется. Вот что я пробовал:   -  person John Terragnoli    schedule 07.11.2019
comment
ffmpeg -i input.mov -copyts -c:v libx265 -vtag hvc1 output.mov   -  person John Terragnoli    schedule 07.11.2019
comment
Кроме того, решение, которое вы разместили, снижает качество?   -  person John Terragnoli    schedule 07.11.2019
comment
Нет, того же качества, что и ваша команда. Почему вы хотите копировать оригинальные временные метки?   -  person Gyan    schedule 07.11.2019
comment
ок, но конвертация вообще снизит качество, да? Кажется, я не замечаю разницы.   -  person John Terragnoli    schedule 07.11.2019
comment
Я работаю над проектом по преобразованию всех наших домашних видео с 8-миллиметровых лент в пригодный для использования формат. Я вырезал множество лент в отдельные файлы и поставил временные метки для многих из них, чтобы они отображались в нужном месте на моей временной шкале Google Фото. Я действительно не хочу переделывать временные метки, но видео начинают занимать много места, и мне было интересно, можно ли как-то конвертировать в HEVC без изменения временных меток.   -  person John Terragnoli    schedule 07.11.2019
comment
Как вы их отмечали? Поделитесь журналом ffmpeg -i file, где файл находится в середине ленты.   -  person Gyan    schedule 08.11.2019
comment
Гьян, см. ответ на редактирование   -  person John Terragnoli    schedule 09.11.2019
comment
timestamp имеет особое значение в медиафайлах и не относится к дате и времени часов, когда файл был создан. Это поле метаданных create_time, и copyts не имеет к этому никакого отношения. Обычно ffmpeg должен копировать create_time. Можете ли вы поделиться одним из ваших исходных файлов?   -  person Gyan    schedule 09.11.2019


Ответы (1)


Этот ответ был опубликован (под лицензией CC BY-SA 4.0) как комментарий от Гьян к вопросу Конвертируйте видео из .264 в .265 (HEVC) с помощью ffmpeg.


Запустите эту команду для преобразования x265:

ffmpeg -i input.mp4 -c:v libx265 -vtag hvc1 output.mp4
person Amin Shojaei    schedule 31.12.2020