3

Я использую версию avconv в Ubuntu 12.04 для архивирования видео. Я бы предпочел использовать какое-то сжатие видео без потерь (например, huffyuv или FFV1), но использование оригинального видеопотока (копирование кодека) также было бы приемлемым. К сожалению, с любой из этих опций выходной файл (mkv, содержащий только видео в любом формате) намного больше, чем входной файл (vob, содержащий видео, аудио и субтитры). Я мог понять, что сжатие без потерь просто ужасно поработало с моим конкретным видео, но я не вижу причин, по которым использование кодека-копии увеличило бы размер файла.

Google поворачивает вверх один человек , имеющий такую же проблему здесь, но единственным ответом является бесполезным оскорбление , вызванное расколом libav/ FFmpeg.

Есть ли причина, по которой это должно произойти, или это ошибка? Есть ли обходной путь или исправление в ffmpeg , более поздней версии avconv или другом программном обеспечении?

Обновление: кажется, что это может быть связано с этим вопросом хотя бы частично, но это не объясняет, почему это происходит, когда я использую кодек "copy". Я до сих пор не пробовал это с ffmpeg; Я планирую сделать это сегодня вечером.

Обновление 2: Вот фактическая команда и вывод, который, как я сказал несколько дней назад, должен быть доступен через несколько часов. Исходя из этого, кажется, что проблема частично, но не полностью связана с мультиплексированием, поскольку генерация необработанного файла .m2v работает без проблем (и mkvmerge работает с этим файлом без проблем). Использование флагов, которые рекомендует Libav FAQ , не помогает.

Thu 2 Aug 2012 13:58:51 MDT pts/3 (100x27) [daniel@daniel-laptop-ubuntu:~/Videos]
1 $ ls
total 1774448
drwxrwxr-x 2 daniel daniel       4096 Jul 28 20:24 keep/
-rw-rw-r-- 1 daniel daniel          0 Aug  2 13:58 timings
-rw-rw-r-- 1 daniel daniel 1816995840 Aug  2 12:34 Title.vob
-rw-rw-r-- 1 daniel daniel          0 Aug  2 13:58 typescript
Exit Code: 0

Thu 2 Aug 2012 13:58:52 MDT pts/3 (100x27) [daniel@daniel-laptop-ubuntu:~/Videos]
2 $ avprobe -v verbose Title.vob 
avprobe version 0.8.3-4:0.8.3-0ubuntu0.12.04.1, Copyright (c) 2007-2012 the Libav developers
  built on Jun 12 2012 16:52:09 with gcc 4.6.3
  configuration: --extra-version='4:0.8.3-0ubuntu0.12.04.1' --arch=amd64 --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-libfreetype --enable-vaapi --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
  libavutil    51. 22. 1 / 51. 22. 1
  libavcodec   53. 35. 0 / 53. 35. 0
  libavformat  53. 21. 0 / 53. 21. 0
  libavdevice  53.  2. 0 / 53.  2. 0
  libavfilter   2. 15. 0 /  2. 15. 0
  libswscale    2.  1. 0 /  2.  1. 0
  libpostproc  52.  0. 0 / 52.  0. 0
[mpeg @ 0xd4a7a0] max_analyze_duration reached
Input #0, mpeg, from 'Title.vob':
  Duration: 00:43:35.39, start: 0.195633, bitrate: 5557 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [PAR 32:27 DAR 16:9], 9800 kb/s, 23.98 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x20]: Subtitle: dvdsub
    Stream #0.2[0x21]: Subtitle: dvdsub
    Stream #0.3[0x22]: Subtitle: dvdsub
    Stream #0.4[0x23]: Subtitle: dvdsub
    Stream #0.5[0x24]: Subtitle: dvdsub
    Stream #0.6[0x25]: Subtitle: dvdsub
    Stream #0.7[0x80]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
    Stream #0.8[0x81]: Audio: ac3, 48000 Hz, stereo, s16, 192 kb/s
    Stream #0.9[0x82]: Audio: ac3, 48000 Hz, stereo, s16, 192 kb/s (comment)
    Stream #0.10[0x83]: Audio: ac3, 48000 Hz, stereo, s16, 192 kb/s
Exit Code: 0

Thu 2 Aug 2012 13:58:58 MDT pts/3 (100x27) [daniel@daniel-laptop-ubuntu:~/Videos]
3 $ avconv -v verbose -i Title.vob -c:v copy -map 0:v:0 Title.m2v
avconv version 0.8.3-4:0.8.3-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers
  built on Jun 12 2012 16:52:09 with gcc 4.6.3
  configuration: --extra-version='4:0.8.3-0ubuntu0.12.04.1' --arch=amd64 --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-libfreetype --enable-vaapi --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
  libavutil    51. 22. 1 / 51. 22. 1
  libavcodec   53. 35. 0 / 53. 35. 0
  libavformat  53. 21. 0 / 53. 21. 0
  libavdevice  53.  2. 0 / 53.  2. 0
  libavfilter   2. 15. 0 /  2. 15. 0
  libswscale    2.  1. 0 /  2.  1. 0
  libpostproc  52.  0. 0 / 52.  0. 0
[mpeg @ 0x1ab77a0] max_analyze_duration reached
Input #0, mpeg, from 'Title.vob':
  Duration: 00:43:35.39, start: 0.195633, bitrate: 5557 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [PAR 32:27 DAR 16:9], 9800 kb/s, 23.98 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x20]: Subtitle: dvdsub
    Stream #0.2[0x21]: Subtitle: dvdsub
    Stream #0.3[0x22]: Subtitle: dvdsub
    Stream #0.4[0x23]: Subtitle: dvdsub
    Stream #0.5[0x24]: Subtitle: dvdsub
    Stream #0.6[0x25]: Subtitle: dvdsub
    Stream #0.7[0x80]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
    Stream #0.8[0x81]: Audio: ac3, 48000 Hz, stereo, s16, 192 kb/s
    Stream #0.9[0x82]: Audio: ac3, 48000 Hz, stereo, s16, 192 kb/s (comment)
    Stream #0.10[0x83]: Audio: ac3, 48000 Hz, stereo, s16, 192 kb/s
Output #0, mpeg2video, to 'Title.m2v':
  Metadata:
    encoder         : Lavf53.21.0
    Stream #0.0: Video: mpeg2video, yuv420p, 720x480 [PAR 32:27 DAR 16:9], q=2-31, 9800 kb/s, 90k tbn, 90k tbc
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press ctrl-c to stop encoding
frame=62709 fps=4237 q=-1.0 Lsize= 1402285kB time=2615.30 bitrate=4392.4kbits/s    
video:1402285kB audio:0kB global headers:0kB muxing overhead 0.000000%
Exit Code: 0

Thu 2 Aug 2012 13:59:45 MDT pts/3 (100x27) [daniel@daniel-laptop-ubuntu:~/Videos]
4 $ avconv -v verbose -i Title.vob -c:v copy -map 0:v:0 Title.avi
avconv version 0.8.3-4:0.8.3-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers
  built on Jun 12 2012 16:52:09 with gcc 4.6.3
  configuration: --extra-version='4:0.8.3-0ubuntu0.12.04.1' --arch=amd64 --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-libfreetype --enable-vaapi --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
  libavutil    51. 22. 1 / 51. 22. 1
  libavcodec   53. 35. 0 / 53. 35. 0
  libavformat  53. 21. 0 / 53. 21. 0
  libavdevice  53.  2. 0 / 53.  2. 0
  libavfilter   2. 15. 0 /  2. 15. 0
  libswscale    2.  1. 0 /  2.  1. 0
  libpostproc  52.  0. 0 / 52.  0. 0
[mpeg @ 0xdec7a0] max_analyze_duration reached
Input #0, mpeg, from 'Title.vob':
  Duration: 00:43:35.39, start: 0.195633, bitrate: 5557 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [PAR 32:27 DAR 16:9], 9800 kb/s, 23.98 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x20]: Subtitle: dvdsub
    Stream #0.2[0x21]: Subtitle: dvdsub
    Stream #0.3[0x22]: Subtitle: dvdsub
    Stream #0.4[0x23]: Subtitle: dvdsub
    Stream #0.5[0x24]: Subtitle: dvdsub
    Stream #0.6[0x25]: Subtitle: dvdsub
    Stream #0.7[0x80]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
    Stream #0.8[0x81]: Audio: ac3, 48000 Hz, stereo, s16, 192 kb/s
    Stream #0.9[0x82]: Audio: ac3, 48000 Hz, stereo, s16, 192 kb/s (comment)
    Stream #0.10[0x83]: Audio: ac3, 48000 Hz, stereo, s16, 192 kb/s
Output #0, avi, to 'Title.avi':
  Metadata:
    ISFT            : Lavf53.21.0
    Stream #0.0: Video: mpeg2video, yuv420p, 720x480 [PAR 32:27 DAR 16:9], q=2-31, 9800 kb/s, 90k tbn, 90k tbc
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press ctrl-c to stop encoding
frame=62709 fps=186 q=-1.0 Lsize= 6271354kB time=2615.30 bitrate=19644.0kbits/s    
video:1402285kB audio:0kB global headers:0kB muxing overhead 347.223994%
Exit Code: 0

Thu 2 Aug 2012 14:05:24 MDT pts/3 (100x27) [daniel@daniel-laptop-ubuntu:~/Videos]
5 $ avconv -v verbose -i Title.vob -c:v copy -map 0:v:0 Title.mkv
avconv version 0.8.3-4:0.8.3-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers
  built on Jun 12 2012 16:52:09 with gcc 4.6.3
  configuration: --extra-version='4:0.8.3-0ubuntu0.12.04.1' --arch=amd64 --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-libfreetype --enable-vaapi --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
  libavutil    51. 22. 1 / 51. 22. 1
  libavcodec   53. 35. 0 / 53. 35. 0
  libavformat  53. 21. 0 / 53. 21. 0
  libavdevice  53.  2. 0 / 53.  2. 0
  libavfilter   2. 15. 0 /  2. 15. 0
  libswscale    2.  1. 0 /  2.  1. 0
  libpostproc  52.  0. 0 / 52.  0. 0
[mpeg @ 0xc0d7a0] max_analyze_duration reached
Input #0, mpeg, from 'Title.vob':
  Duration: 00:43:35.39, start: 0.195633, bitrate: 5557 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [PAR 32:27 DAR 16:9], 9800 kb/s, 23.98 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x20]: Subtitle: dvdsub
    Stream #0.2[0x21]: Subtitle: dvdsub
    Stream #0.3[0x22]: Subtitle: dvdsub
    Stream #0.4[0x23]: Subtitle: dvdsub
    Stream #0.5[0x24]: Subtitle: dvdsub
    Stream #0.6[0x25]: Subtitle: dvdsub
    Stream #0.7[0x80]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
    Stream #0.8[0x81]: Audio: ac3, 48000 Hz, stereo, s16, 192 kb/s
    Stream #0.9[0x82]: Audio: ac3, 48000 Hz, stereo, s16, 192 kb/s (comment)
    Stream #0.10[0x83]: Audio: ac3, 48000 Hz, stereo, s16, 192 kb/s
Output #0, matroska, to 'Title.mkv':
  Metadata:
    encoder         : Lavf53.21.0
    Stream #0.0: Video: mpeg2video, yuv420p, 720x480 [PAR 32:27 DAR 16:9], q=2-31, 9800 kb/s, 1k tbn, 90k tbc
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press ctrl-c to stop encoding
[matroska @ 0xc30900] Can't write packet with unknown timestamp
av_interleaved_write_frame(): Invalid argument
Exit Code: 1

Thu 2 Aug 2012 14:05:31 MDT pts/3 (100x27) [daniel@daniel-laptop-ubuntu:~/Videos]
6 $ ls
total 9448208
drwxrwxr-x 2 daniel daniel       4096 Jul 28 20:24 keep/
-rw-rw-r-- 1 daniel daniel      16384 Aug  2 14:05 timings
-rw-rw-r-- 1 daniel daniel 6421866918 Aug  2 14:05 Title.avi
-rw-rw-r-- 1 daniel daniel 1435939709 Aug  2 13:59 Title.m2v
-rw-rw-r-- 1 daniel daniel        680 Aug  2 14:05 Title.mkv
-rw-rw-r-- 1 daniel daniel 1816995840 Aug  2 12:34 Title.vob
-rw-rw-r-- 1 daniel daniel      69632 Aug  2 14:05 typescript
Exit Code: 0

Поскольку, по крайней мере, часть проблемы, по-видимому, вызвана использованием контейнеров, есть ли способ сообщить avconv генерировать необработанные файлы huffyuv или raw FFv1 без контейнера, как, например, указание расширения файла .m2v для элементарного потока MPEG-2 ?

0