我想将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%
基本上只复制了音频。如何获取mkv
格式的视频+音频?
答案1
您的视频被编码为“MPEG4 Visual”,这是 mp42 的另一个名称。不幸的是,该视频是使用在 MPEG4-2 标准尚未实施时开发的软件进行编码的。
当它准备好供普遍使用时,其他编解码器已经取代了它(即 x264 等)。
这意味着对该编解码器的支持还处于初级阶段,并且充其量也只是勉强支撑。
也就是说,您可以对文件进行一些修复,使其成为 ffmpeg 可以正确读取的格式。
ffmpeg 遇到困难的部分是major_brand : isom
元数据部分。
为了解决这个问题,我们使用另一个工具:MP4盒
然后,一旦安装了 MP4Box,就可以运行如下命令:
MP4Box -brand mp42 input.mp4
这应该将元数据更改为major_brand : mp42
一旦完成后,ffmpeg 应该可以识别它,并能够正确地转换它。
祝你好运! :)