2

我正在将一些输入流从我的 DVB S2 卡转换为 RTMP。

切换到最近的 avconv 和 x264 后一切正常 :)

我唯一不知道的是,如何选择正确的音频流?

源有时最多有 6 个音轨。Avconv 会自动选择比特率最高的那个。但是我想选择“ger”之一:

以下是 ARTE 德语/法语电视频道的流媒体,例如:

Input #0, mpegts, from 'http://192.168.1.50:9981/stream/channelid/1035':
  Duration: N/A, start: 19083.694722, bitrate: 15576 kb/s
  Program 1
    Stream #0.0[0xa8], 127, 1/90000: Video: mpeg2video (Main), yuv420p, 544x576 [PAR 32:17 DAR 16:9], 1/50, 15000 kb/s, 25 fps, 90k tb50 tbc
    Stream #0.1[0x70](fre), 204, 1/90000: Audio: mp2, 48000 Hz, stereo, s16p, 192 kb/s
    Stream #0.2[0x71](ger), 207, 1/90000: Audio: mp2, 48000 Hz, stereo, s16p, 128 kb/s
    Stream #0.3[0x72](eng), 207, 1/90000: Audio: mp2, 48000 Hz, stereo, s16p, 128 kb/s
    Stream #0.4[0x73](qaa), 207, 1/90000: Audio: mp2, 48000 Hz, stereo, s16p, 128 kb/s
  No Program
    Stream #0.5[0x3b], 126, 1/90000: Audio: mp1, 0 channels, s16p

libav Docs 真的没那么有用。现在谁做正确的语法?

编辑:我找到了 -map 选项: http: //ffmpeg.org/trac/ffmpeg/wiki/How%20to%20use%20-map%20option但不可能按名称映射?仅通过索引?

也许我需要使用 avprobe 来找到“ger”的正确流索引。

4

1 回答 1

3

实际上,您需要使用 -map 选项按索引指定流。以下在我的情况下有效(我想选择一个具有更好通道分离的较低分辨率的立体声流,而不是没有合并的更高分辨率的 5.1 流)。

在您的情况下,您想要的(ger)流是“0.2”,除了 avconv 需要冒号分隔符,例如

avconv -i input.m4v -map 0:2 output.mp3

于 2013-11-15T21:07:39.253 回答