Я хочу преобразовать mp4
файл к mkv
с форматом видео как x264
и аудио как libmp3lame
Mediainfo для файла дает:
General
Complete name : file_in.mp4
Format : MPEG-4
Format profile : Base Media
Codec ID : isom
File size : 404 MiB
Duration : 41mn 4s
Overall bit rate : 1 375 Kbps
Writing application : Lavf56.1.0
Video
ID : 1
Format : MPEG-4 Visual
Format profile : Advanced Simple@L5
Format settings, BVOP : Yes
Format settings, QPel : No
Format settings, GMC : No warppoints
Format settings, Matrix : Default (H.263)
Codec ID : 20
Duration : 40mn 55s
Bit rate : 1 185 Kbps
Width : 576 pixels
Height : 432 pixels
Display aspect ratio : 4:3
Frame rate mode : Constant
Frame rate : 29.970 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Compression mode : Lossy
Bits/(Pixel*Frame) : 0.159
Stream size : 347 MiB (86%)
Writing library : XviD 1.3.0.dev55
Audio
ID : 2
Format : AC-3
Format/Info : Audio Coding 3
Mode extension : CM (complete main)
Format settings, Endianness : Big
Codec ID : ac-3
Duration : 41mn 4s
Bit rate mode : Constant
Bit rate : 192 Kbps
Channel(s) : 2 channels
Channel positions : Front: L R
Sampling rate : 48.0 KHz
Bit depth : 16 bits
Compression mode : Lossy
Stream size : 56.4 MiB (14%)
libx264-dev
и libav-tools
последние версии.
Я пытался преобразовать со следующей командой
avconv -i file_in.mp4 -c:v libx264 -acodec libmp3lame file_out.mkv
Вывод команды avconv был
avconv version 11.2-6:11.2-1, Copyright (c) 2000-2014 the Libav developers
built on Jan 18 2015 05:12:33 with gcc 4.9.2 (Ubuntu 4.9.2-10ubuntu2)
[mov,mp4,m4a,3gp,3g2,mj2 @ 0xa1d4c0] multiple edit list entries, a/v desync might occur, patch welcome
Last message repeated 1 times
[mov,mp4,m4a,3gp,3g2,mj2 @ 0xa1d4c0] max_analyze_duration 5000000 reached
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'file_in.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2mp41
encoder : Lavf56.1.0
Duration: 00:41:04.99, start: 0.016000, bitrate: 1375 kb/s
Stream #0.0(und): Video: mpeg4, yuv420p, 1184 kb/s, 30k tbn (default)
Stream #0.1(und): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s (default)
Output #0, matroska, to 'file_out.mkv':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2mp41
encoder : Lavf56.1.0
Stream #0.0(und): Audio: libmp3lame, 48000 Hz, stereo, fltp (default)
Metadata:
encoder : Lavc56.1.0 libmp3lame
Stream mapping:
Stream #0:1 -> #0:0 (ac3 (native) -> mp3 (libmp3lame))
size= 315kB time=19.75 bitrate= 130.8kbits/s
.
.
.
.
size= 39227kB time=2464.97 bitrate= 130.4kbits/s
video:0kB audio:38516kB other streams:0kB global headers:0kB muxing overhead: 1.845972%
Чрезвычайно только аудио копируется. Как я получаю video+audio в mkv
формат?
Ваше видео кодируется как "MPEG4, Визуальный", это - другое название mp42. К сожалению, это видео было закодировано с помощью программного обеспечения, которое было разработано во время, где стандарт MPEG4-2 был не все же реализован.
К тому времени, когда это было готово к общему использованию, другие кодеки заняли его место (а именно, x264 и т.д.).
Это означает, что поддержка этого кодека является элементарной, и борьба в лучшем случае
Тем не менее можно зафиксировать файл несколько в формат, который ffmpeg считает правильно.
часть, с которой ffmpeg испытывает трудности, major_brand : isom
часть метаданных.
Для обхождения этого мы используем другой инструмент: MP4Box
Затем после того как у Вас есть установленный MP4Box, Вы выполняете команду как это:
MP4Box -brand mp42 input.mp4
Это должно изменить метаданные для чтения major_brand : mp42
, После того как это было завершено, ffmpeg должен распознать его и смочь преобразовать их правильно.
Удачи! :)