ffmpeg - преобразование файлов MOV в MP4 [закрыто]

145

Я только что установил ffmpeg и пытаюсь закодировать все свои загруженные видео в файл .mp4. Большинство пользователей в настоящее время загружают .mov, и я хочу конвертировать каждое видео в .mp4.

Я запускаю команду следующим образом:

ffmpeg -i movie.mov -vcodec copy -acodec cop out.mp4

Но все, что я получаю, это следующие ошибки

ffmpeg version 0.8.5, Copyright (c) 2000-2011 the FFmpeg developers
  built on Aug 19 2012 11:38:20 with clang 3.1 (tags/Apple/clang-318.0.61)
  configuration: --enable-nonfree --enable-gpl --enable-version3 --enable-postproc --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libfaac --enable-libxvid --enable-libx264 --enable-libvpx --enable-hardcoded-tables --enable-shared --enable-pthreads --disable-indevs --cc=clang
  libavutil    51.  9. 1 / 51.  9. 1
  libavcodec   53.  7. 0 / 53.  7. 0
  libavformat  53.  4. 0 / 53.  4. 0
  libavdevice  53.  1. 1 / 53.  1. 1
  libavfilter   2. 23. 0 /  2. 23. 0
  libswscale    2.  0. 0 /  2.  0. 0
  libpostproc  51.  2. 0 / 51.  2. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'movie.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    creation_time   : 2012-03-28 07:13:20
  Duration: 00:00:26.23, start: 0.000000, bitrate: 12974 kb/s
    Stream #0.0(eng): Video: mjpeg, yuvj420p, 1280x720 [PAR 72:72 DAR 16:9], 12972 kb/s, 11.67 fps, 600 tbr, 600 tbn, 600 tbc
    Metadata:
      creation_time   : 2012-03-28 07:13:20
File 'out.mp4' already exists. Overwrite ? [y/N] y
Output #0, mp4, to 'out.mp4':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    creation_time   : 2012-03-28 07:13:20
    encoder         : Lavf53.4.0
    Stream #0.0(eng): Video: mjpeg, yuvj420p, 1280x720 [PAR 72:72 DAR 16:9], q=2-31, 12972 kb/s, 600 tbn, 600 tbc
    Metadata:
      creation_time   : 2012-03-28 07:13:20
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop, [?] for help
frame=  121 fps=  0 q=-1.0 size=   16408kB time=00:00:10.08 bitrate=13332.2kbitsframe=  306 fps=  0 q=-1.0 Lsize=   41543kB time=00:00:26.12 bitrate=13025.0kbits/s    
video:41538kB audio:0kB global headers:0kB muxing overhead 0.012531%
user1503606
источник
Вы уверены, что это ошибки? Это больше похоже на файл журнала для меня. Он даже просит перезаписать предыдущий mp4: файл «out.mp4» уже существует. Перезаписать? [y / N] y
Конрад Лотц
Подобный вопрос в SuperUser.
legends2k

Ответы:

254

Команда для потоковой передачи в новый контейнер (mp4), необходимый для некоторых приложений, таких как Adobe Premiere Pro, без кодирования (быстро):

ffmpeg -i movie.mov -vcodec copy -acodec copy out.mp4

Альтернатива, как упомянуто в комментариях, которая перекодирует с лучшим качеством ( -qscale 0):

ffmpeg -i input.mov -q:v 0 output.mp4
Конрад Лотц
источник
70
Так как это появляется в результатах поиска, я добавлю обновленную команду для ffmpeg, как ffmpeg -i input.mov -qscale 0 output.mp4
написано
14
@StudioEvoque, что делает -qscale 0флаг?
CyberSkull
4
@CyberSkull -qscaleустанавливает уровень сжатия. Чем ниже значение qscale, тем лучше качество. Доступные значения qscale варьируются от 1 (высшее качество) до 31 (низкое качество).
RonnyKnoxville
8
@MiguelBartelsman @Baodad контейнер, упаковывающий несколько видео и аудио потоков, добавляет заголовок и оглавление. Контейнеры Quicktime (mov) и MPEG (mp4) технически работают совершенно по-разному. Если вы просто переименуете файл Quicktime в mp4, вы притворяетесь, что это видео MPEG, но он все равно остается контейнером Quicktime. Обратите внимание: поскольку вы используете параметр copyдля кодека, вы указываете FFMpeg скопировать фактические данные мультимедиа без перекодирования в другой кодек.
Ихтио
10
@StudioEvoque остерегайтесь! То, что вы предлагаете здесь, является чем-то совершенно иным, чем ФП сделал и, вероятно, хотел. Вы не указываете спецификацию кодека, поэтому вы просите FFMpeg перекодировать фактические данные мультимедиа в стандартный кодек, связанный с MP4-контейнером. Даже если вы используете настройки самого высокого качества, транскодирование всегда будет терять качество. Только при использовании -c copyвы гарантируете, что исходные медиа-данные как таковые не будут затронуты, изменился только контейнер
Ichthyo