У меня есть видеофайл .mov
, для которого ffprobe
/avprobe
сообщает:
$ avprobe -show_streams test.mov
Stream #0.0(eng): Video: dvvideo, yuv420p, 720x576 [PAR 64:45 DAR 16:9], 28811 kb/s, PAR 236:162 DAR 295:162, 25.01 fps, 2500 tbn, 25 tbc
Metadata:
creation_time : 2015-08-27 09:10:44
Stream #0.1(eng): Audio: pcm_s16le, 48000 Hz, 1 channels, s16, 768 kb/s
Metadata:
creation_time : 2015-08-27 09:10:44
Stream #0.2(eng): Audio: pcm_s16le, 48000 Hz, 1 channels, s16, 768 kb/s
Metadata:
creation_time : 2015-08-27 09:10:44
Stream #0.3(eng): Data: tmcd / 0x64636D74
Unsupported codec with id 0 for input stream 3
...
[streams.stream.1]
index=1
codec_name=pcm_s16le
codec_long_name=PCM signed 16-bit little-endian
codec_type=audio
codec_time_base=1/48000
codec_tag_string=sowt
codec_tag=0x74776f73
sample_rate=48000.000000
channels=1
bits_per_sample=16
...
[streams.stream.2]
index=2
codec_name=pcm_s16le
codec_long_name=PCM signed 16-bit little-endian
codec_type=audio
codec_time_base=1/48000
codec_tag_string=sowt
codec_tag=0x74776f73
sample_rate=48000.000000
channels=1
bits_per_sample=16
...
[streams.stream.3]
index=3
codec_name=unknown
codec_type=data
codec_time_base=0/1
codec_tag_string=tmcd
codec_tag=0x64636d74
avg_frame_rate=0/0
time_base=1/2500
start_time=0.000000
duration=32.760000
nb_frames=1
...
Теперь из этого я не могу сказать, как кодируется звук (если он не распакован), и я не могу сказать, являются ли эти три аудиопотока своего рода объемным звуком (и один из них также не может быть обнаружен) - но я думаю, это потому, что mediainfo
сообщает для одного и того же файла:
Audio #1 ...
Codec ID : sowt
Channel(s) : 1 channel
Channel positions : Front: C
Sampling rate : 48.0 KHz
Bit depth : 16 bits
...
Audio #2 ...
Codec ID : sowt
Channel(s) : 1 channel
Channel positions : Front: C
Sampling rate : 48.0 KHz
Bit depth : 16 bits
...
Audio #3 ...
Muxing mode, more info : Muxed in Video #1
Channel(s) : 2 channels
Sampling rate : 48.0 KHz
Bit depth : 16 bits
...
Итак, есть ли командная строка Linux, которую я мог бы использовать, чтобы извлечь все эти аудиопотоки из видеофайла за один раз; то есть эта команда псевдокода:
my_command --extract-all-audio-streams test.mov
... в этом случае должно получиться три аудиофайла, соответствующих трем потокам.
Особенно:
- Какую команду я могу использовать, чтобы потоки извлекались без преобразования из файла, схоже с
-acodec copy
ffmpeg - и чтобы автоматически назначались расширения файлов (т. Е. Если это несжатый звук, то.wav
, если он закодирован в AAC), затем.aac
т. д.) - Какую команду я могу использовать, чтобы извлекаемые потоки преобразовывались в несжатый звук с теми же настройками, что и потоки? То есть результирующий
test_s01.wav
будет моно /48,0 кГц /16 бит,test_s02.wav
будет также моно /48,0 кГц /16 бит, аtest_s03.wav
будет стерео /48,0 кГц /16 бит?