我需要将视频文件从Matroska容器转换为mp4容器。Matroska文件包含一个h.264视频轨道和一个AC3声音轨道。应该可以无损地执行此操作,但是如何使用本机Ubuntu工具执行此操作?
转码不是一种选择。
Chromecast
支撑。如果您使用的是带有Google Cast扩展程序的Chrome浏览器,则可以很容易地将视频从计算机流式传输到计算机上。只需将具有正确流编码的拖放到浏览器窗口并开始流。H.264
AAC
MP3
MP4
Chromecast
MP4
我需要将视频文件从Matroska容器转换为mp4容器。Matroska文件包含一个h.264视频轨道和一个AC3声音轨道。应该可以无损地执行此操作,但是如何使用本机Ubuntu工具执行此操作?
转码不是一种选择。
Chromecast
支撑。如果您使用的是带有Google Cast扩展程序的Chrome浏览器,则可以很容易地将视频从计算机流式传输到计算机上。只需将具有正确流编码的拖放到浏览器窗口并开始流。H.264
AAC
MP3
MP4
Chromecast
MP4
Answers:
也许最简单的工具是ffmpeg
,或avconv
从libav-tools
包装中获得。Libav是FFmpeg的分支,在Ubuntu 15.04之前,Ubuntu一直使用FFmpeg。它是其他答案中提到的许多GUI工具的后端之一。
更改容器而不重新设置内容再简单不过了:
ffmpeg -i input.mkv -codec copy output.mp4
它根据输入/输出文件名自动检测从Matroska到MP4的容器转换。
-codec copy
从输入到输出的流复制或“重新混合”,而无需重新编码。将其视为复制和粘贴。
默认的流选择行为是每种流类型仅选择一个流。例如,如果您的输入有两个视频流和一个音频流,则仅会选择具有最大帧大小的视频流。-map 0
如果要从输入中选择所有流,请添加。
某些容器可能不支持某些格式。因此,请检查您选择的容器格式是否为mkv
,mp4
甚至avi
是否支持文件中的所有内容(视频,音频,字幕,数据等)。例如,mp4
不支持SubRip字幕(.srt
文件)。
avconv -i input.mkv -c:v copy -c:a libfaac output.mp4
我使用ffmpeg,我假设avconv在此处具有相同的命令行参数)
-map 0
获得两个音频流?正如我在回答中所说的:“默认的流选择行为是,每个流类型仅选择一个流”
-c:s mov_text
如果您需要保留例如,请使用选项。srt
字幕轨道。
sudo apt-get install gpac mkvtoolnix
首先,您需要检查matroska文件包含的曲目
mkvmerge --identify video.mkv
File 'video.mkv': container: Matroska
Track ID 1: video (V_MPEG4/ISO/AVC)
Track ID 2: audio (A_AC3)
然后根据以下内容提取视频和音频:
mkvextract tracks video.mkv 1:video.h264 2:audio.ac3
Extracting track 1 with the CodecID 'V_MPEG4/ISO/AVC' to the file 'video.h264'. Container format: AVC/h.264 elementary stream
Extracting track 2 with the CodecID 'A_AC3' to the file 'audio.ac3'. Container format: Dolby Digital (AC3)
Progress: 100%
MP4Box -fps 24 -add video.h264 -add audio.ac3 video.mp4
AVC-H264 import - frame size 1280 x 720 at 24.000 FPS
Import results: 31671 samples - Slices: 5672 I 125048 P 122648 B - 32288 SEI - 4936 IDR
AC3 import - sample rate 48000 - 6 channels
Saving to video.mp4: 0.500 secs Interleaving
我必须添加-fps 24
选项,因为MP4Box
未正确检测到视频fps。根据使用情况,AC3
在混合之前应将音轨重新编码为其他形式。
现在,您已将流从matroska容器重新混合到mp4容器中,而不会损失任何质量。
编辑:MP4并不正式支持AC3音频,因此,如果您希望文件可以使用VLC以外的其他格式播放,则应将音轨转换为受支持的格式(例如AAC,MP3)。
它具有良好的GUI界面。
从mkv转换为mp4时,不会重新编码。
转换在一分钟内完成(对于60分钟的视频)。
sudo apt-get install avidemux
在avidemux中打开mkv文件。
如果出现提示,请选择安全模式。
将视频保留为副本。
选择“文件”->“属性”。检查音频编解码器是否为aac
。
aac(faac)
。copy
。(有时使用此选项,音频可能不同步或失真,在这种情况下,请选择aac(faac)
。)选择mp4
格式。
选择保存,选择位置,然后输入.mp4
扩展名作为文件名。
注意:有时(〜10%的机会)它可能会失败。然后使用handbrake(re-encode)
。
注意2:有两个链接可以帮助您:
http://www.ubuntugeek.com/how-to-convert-mkv-file-into-mp4-file-using-avidemux.html
您可以使用我的应用程序dmMediaConverter。只需选中两个流的“ copy ”(不进行转码),然后将.mp4放入输出文件名。而已。很简单。 http://dmsimpleapps.blogspot.ro/2014/04/dmmediaconverter.html
由于MPEG Part 14本机支持h.264和AC3,而无需进行代码转换,因此您可以简单地重命名文件,使其具有.mp4
扩展名而不是.mkv
扩展名。
您可以通过在终端中键入以下代码来添加PPA 来尝试HANDBRAKE:
sudo add-apt-repository ppa:stebbins/handbrake-releases