Конвертировать MKV в OGV
Как преобразовать файл mkv (с несколькими звуковыми дорожками) в формат ogv, предварительно сохранив все звуковые дорожки?
Можно ли создать файл ogg (аудио) с несколькими дорожками?
3 ответа
В Linux у вас есть универсальная программа конвертации медиа avconv
(в качестве альтернативы ffmpeg
). В базовой форме он контролируется расширениями, поэтому avconv -i input.mkv output.ogm
сделает правильное преобразование.
Однако, чтобы сохранить все потоки, вам нужно использовать -map
вариант. Позвольте мне привести цитату из руководства:
-map [-]input_file_id[:stream_specifier][,sync_file_id[:stream_specifier]] | [linklabel] (output)
Designate one or more input streams as a source for the output file. Each input stream is identified by the input file index input_file_id and
the input stream index input_stream_id within the input file. Both indices start at 0. If specified, sync_file_id:stream_specifier sets which
input stream is used as a presentation sync reference.
The first "-map" option on the command line specifies the source for output stream 0, the second "-map" option specifies the source for output
stream 1, etc.
A "-" character before the stream identifier creates a "negative" mapping. It disables matching streams from already created mappings.
An alternative [linklabel] form will map outputs from complex filter graphs (see the -filter_complex option) to the output file. linklabel
must correspond to a defined output link label in the graph.
For example, to map ALL streams from the first input file to output
avconv -i INPUT -map 0 output
For example, if you have two audio streams in the first input file, these streams are identified by "0:0" and "0:1". You can use "-map" to
select which streams to place in an output file. For example:
avconv -i INPUT -map 0:1 out.wav
will map the input stream in INPUT identified by "0:1" to the (single) output stream in out.wav.
For example, to select the stream with index 2 from input file a.mov (specified by the identifier "0:2"), and stream with index 6 from input
b.mov (specified by the identifier "1:6"), and copy them to the output file out.mov:
avconv -i a.mov -i b.mov -c copy -map 0:2 -map 1:6 out.mov
To select all video and the third audio stream from an input file:
avconv -i INPUT -map 0:v -map 0:a:2 OUTPUT
To map all the streams except the second audio, use negative mappings
avconv -i INPUT -map 0 -map -0:a:1 OUTPUT
Note that using this option disables the default mappings for this output file.
Так что вам понадобится это:
avconv -i nput.mkv -map 0:v -map 0:a output.ogm
И да, вы можете хранить несколько дорожек, и даже видео и текст, в файле OGG, потому что это универсальный медиа-контейнер.
- Сначала используйте ffmpeg для определения кодировки аудиопотока.
- Затем используйте ffmpeg для извлечения аудиопотока (в оригинальной кодировке).
Затем, если вы действительно хотите, вы можете перекодировать его в ogg. Но было бы наиболее полезно сохранить оригинальную аудиокодировку.
Сначала используйте ffmpeg для определения кодировки аудиопотока.
$ ffmpeg -i $f Stream #0:0(und): Video: h264 (Main), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 29.97 fps, 29.97 tbr, 1k tbn, 59.94 tbc Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, s16 (default)
Затем используйте ffmpeg для извлечения аудиопотока (в оригинальной кодировке в формате.mka).
ffmpeg -i song.mkv -acodec: copy -vn song.mka
Я нашел это полезным:
http://www.hecticgeek.com/2012/12/extract-audio-using-ffmpeg-ubuntu/
И это действительно хороший совет:
Примечание. Если у вас есть сомнения (вы не знаете, какое расширение использовать), вы можете просто использовать расширение.mka (output.mka). Потому что формат контейнера "МКА" может хранить огромное количество аудиокодеков. Однако если вы выберете это, некоторые проигрыватели могут не воспроизводить аудиодорожку. Поэтому, пожалуйста, помните об этом.
Полезный скрипт для конвертации любых mmv и mp4 в mka audio (с сохранением оригинальной кодировки звука): convert_vtoa.sh
#!/bin/bash
for f in *.mkv *.mp4; do
# ffmpeg -i $f
bn=${f%%-[A-Za-z0-9]*}
echo -n bn=$bn
if [[ ! -e "$bn.mka" ]] ; then
echo ffmpeg -i "$f" -acodec: copy -vn "$bn.mka"
ffmpeg -i "$f" -acodec: copy -vn "$bn.mka"
else
echo " ##### already done. #####"
fi
done
Вы можете использовать dmMediaConverter и в режиме Convert и поместить расширение ogg или ogv в выходной файл, такой как audio.ogg. Также снимите флажок "Включить" на видеопотоке, это только аудио. Вы можете скопировать потоки, если они приняты этим контейнером. h264/h265/vp8/vp9 не принимаются ogg.