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

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

我唯一找不到的就是如何选择正确的音频流?

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

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

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文档确实没有那么有用。谁现在使用正确的语法?

编辑:我找到了-map选项:http://ffmpeg.org/trac/ffmpeg/wiki/How%20to%20use%20-map%20option但是无法按名称映射吗?仅按索引?

也许那时我需要使用avprobe来找到“ger”的当前流索引。

最佳答案

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

在您的情况下,您想要的(ger)流为“0.2”,但avconv希望使用冒号分隔符,例如
avconv -i input.m4v -map 0:2 output.mp3

关于audio - Avconv:选择德国流不是最高质量的流,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15738239/

10-13 00:23