Как я могу повторно инкапсулировать (сквозной) QuickTime MOV в MP4 с FFMPEG без заикания видео?


4

Я пытался повторно инкапсулировать некоторые видео из QuickTime в MP4 с помощью ffmpeg, но результаты несколько испортились. Все кодеки совместимы с MP4, так что все работает нормально. Проблема заключается в том, что все файлы MP4 имеют огромное количество видео. Например, он будет воспроизводиться, затем пропустить его на полсекунды, затем вернуться туда, где он должен быть, затем сделать еще один переход назад и так далее.

Я пробовал различные комбинации следующих флагов:, -c copy -vcodec copy -acodec copy -copytsно я не нашел ничего, что работает. Итак, что мне нужно сделать, чтобы избежать заикания при повторной инкапсуляции?

Здесь я пытаюсь -c copy -copyts:

$ ffmpeg -i in.mov -c copy -copyts out2.mp4
ffmpeg version 1.2.2 Copyright (c) 2000-2013 the FFmpeg developers
  built on Aug 13 2013 00:49:34 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
  configuration: --prefix=/opt/local --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libopus --enable-libtheora --enable-libschroedinger --enable-libopenjpeg --enable-libmodplug --enable-libvpx --enable-libspeex --enable-libass --enable-libbluray --enable-gnutls --enable-libfreetype --mandir=/opt/local/share/man --enable-shared --enable-pthreads --cc=/usr/bin/clang --arch=x86_64 --enable-yasm --enable-gpl --enable-postproc --enable-libx264 --enable-libxvid --enable-nonfree --enable-libfaac
  libavutil      52. 18.100 / 52. 18.100
  libavcodec     54. 92.100 / 54. 92.100
  libavformat    54. 63.104 / 54. 63.104
  libavdevice    54.  3.103 / 54.  3.103
  libavfilter     3. 42.103 /  3. 42.103
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'in.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    creation_time   : 2013-02-13 06:40:06
  Duration: 00:45:10.08, start: 0.040000, bitrate: 503 kb/s
    Stream #0:0(eng): Video: h264 (High) (H264 / 0x34363248), yuv420p, 644x364 [SAR 1:1 DAR 23:13], 402 kb/s, 25 fps, 25 tbr, 1k tbn, 50 tbc
    Metadata:
      creation_time   : 2013-02-13 06:40:06
      handler_name    : Apple Alias Data Handler
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 95 kb/s
    Metadata:
      creation_time   : 2013-02-13 06:40:06
      handler_name    : Apple Alias Data Handler
Output #0, mp4, to 'out2.mp4':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    encoder         : Lavf54.63.104
    Stream #0:0(eng): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 644x364 [SAR 1:1 DAR 23:13], q=2-31, 402 kb/s, 25 fps, 16k tbn, 1k tbc
    Metadata:
      creation_time   : 2013-02-13 06:40:06
      handler_name    : Apple Alias Data Handler
    Stream #0:1(eng): Audio: aac ([64][0][0][0] / 0x0040), 44100 Hz, stereo, 95 kb/s
    Metadata:
      creation_time   : 2013-02-13 06:40:06
      handler_name    : Apple Alias Data Handler
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame=67751 fps=15817 q=-1.0 Lsize=  166739kB time=00:45:10.04 bitrate= 504.0kbits/s    
video:133281kB audio:31756kB subtitle:0 global headers:0kB muxing overhead 1.031415%

Здесь я пытаюсь установить аудио и видео кодеки для копирования:

$ ffmpeg -i in.mov -vcodec copy -acodec copy out4.mp4
ffmpeg version 1.2.2 Copyright (c) 2000-2013 the FFmpeg developers
  built on Aug 13 2013 00:49:34 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
  configuration: --prefix=/opt/local --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libopus --enable-libtheora --enable-libschroedinger --enable-libopenjpeg --enable-libmodplug --enable-libvpx --enable-libspeex --enable-libass --enable-libbluray --enable-gnutls --enable-libfreetype --mandir=/opt/local/share/man --enable-shared --enable-pthreads --cc=/usr/bin/clang --arch=x86_64 --enable-yasm --enable-gpl --enable-postproc --enable-libx264 --enable-libxvid --enable-nonfree --enable-libfaac
  libavutil      52. 18.100 / 52. 18.100
  libavcodec     54. 92.100 / 54. 92.100
  libavformat    54. 63.104 / 54. 63.104
  libavdevice    54.  3.103 / 54.  3.103
  libavfilter     3. 42.103 /  3. 42.103
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'in.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    creation_time   : 2013-02-13 06:40:06
  Duration: 00:45:10.08, start: 0.040000, bitrate: 503 kb/s
    Stream #0:0(eng): Video: h264 (High) (H264 / 0x34363248), yuv420p, 644x364 [SAR 1:1 DAR 23:13], 402 kb/s, 25 fps, 25 tbr, 1k tbn, 50 tbc
    Metadata:
      creation_time   : 2013-02-13 06:40:06
      handler_name    : Apple Alias Data Handler
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 95 kb/s
    Metadata:
      creation_time   : 2013-02-13 06:40:06
      handler_name    : Apple Alias Data Handler
Output #0, mp4, to 'out4.mp4':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    encoder         : Lavf54.63.104
    Stream #0:0(eng): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 644x364 [SAR 1:1 DAR 23:13], q=2-31, 402 kb/s, 25 fps, 16k tbn, 1k tbc
    Metadata:
      creation_time   : 2013-02-13 06:40:06
      handler_name    : Apple Alias Data Handler
    Stream #0:1(eng): Audio: aac ([64][0][0][0] / 0x0040), 44100 Hz, stereo, 95 kb/s
    Metadata:
      creation_time   : 2013-02-13 06:40:06
      handler_name    : Apple Alias Data Handler
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame=67751 fps=15495 q=-1.0 Lsize=  166739kB time=00:45:10.00 bitrate= 504.0kbits/s    
video:133281kB audio:31756kB subtitle:0 global headers:0kB muxing overhead 1.031400%

Это происходит для всех файлов MOV или только для отдельных? Если последнее, можете ли вы предоставить образец? Можете ли вы попробовать mp4box -add in.mov out.mp4и посмотреть, производит ли это воспроизводимый файл?
Slhck

Где взять mp4box?
CyberSkull

Например, из gpac.wp.mines-telecom.fr/mp4box - найти его не особенно сложно. Извините, что спрашиваю еще раз, но это происходит со всеми файлами или только с одним, и у вас случайно не будет образца?
Slhck

@slhck Происходит на всех, кроме одного файла.
CyberSkull

@slhck Нужно ли мне получить весь пакет GPAC или я могу просто получить mp4box?
CyberSkull

Ответы:


0

Я думаю, что исходный файл как-то поврежден. Если вы перекодируете только аудиопоток, будет ли выходной файл вести себя так же? Если да, то вы должны перекодировать также видео поток. Вы можете сделать быстрые тесты, используя мое приложение, dmMediaConverter, которое представляет собой графический интерфейс ffmpeg.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.