2017-10-16 83 views
0

我试图转码电视流,但只包含英语音频流。我已经使用-map 0:m:language:eng流符试过,但我得到:FFmpeg:按语言选择音频流

"Automatic encoder selection failed for output stream #0:3. Default encoder for format mpegts (codec none) is probably disabled. Please choose an encoder manually. 
Error selecting an encoder for stream 0:3" 

尽管这是包括编码器。我尝试了各种各样的关于这个主题的变化,但都没有成功。

一次尝试全部输出低于:

ffmpeg -i http://192.168.1.74:8001/1:0:1:189E:7FD:2:11A0000:0:0:0: -ignore_unknown -map 0:a -map 0:m:language:eng -map 0:v -acodec aac -vcodec libx264 -b:v 1100000 -t 00:00:30 "somethin.ts" 2>output.txt 

    Consider increasing the value for the 'analyzeduration' and 'probesize' options 
[mpegts @ 03db7b60] Could not find codec parameters for stream 17 (Unknown: none ([11][0][0][0]/0x000B)): unknown codec 
Consider increasing the value for the 'analyzeduration' and 'probesize' options 
[mpegts @ 03db7b60] Could not find codec parameters for stream 18 (Unknown: none ([11][0][0][0]/0x000B)): unknown codec 
Consider increasing the value for the 'analyzeduration' and 'probesize' options 
Input #0, mpegts, from 'http://192.168.1.74:8001/1:0:1:189E:7FD:2:11A0000:0:0:0:': 
    Duration: N/A, start: 23690.732933, bitrate: N/A 
    Program 6321 
    Program 6322 
    Program 6338 
    Program 6301 
    Program 6302 
    Stream #0:0[0x13ec]: Video: mpeg2video (Main) ([2][0][0][0]/0x0002), yuv420p(tv, top first), 720x576 [SAR 64:45 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc 
    Stream #0:1[0x13ee](NAR): Audio: mp2 ([3][0][0][0]/0x0003), 48000 Hz, stereo, s16p, 224 kb/s 
    Stream #0:2[0x13ed](eng): Audio: mp2 ([3][0][0][0]/0x0003), 48000 Hz, stereo, s16p, 224 kb/s 
    Stream #0:3[0x13ef](eng,eng): Subtitle: dvb_teletext ([6][0][0][0]/0x0006) 
    Stream #0:4[0x13f0](eng): Subtitle: dvb_subtitle ([6][0][0][0]/0x0006) 
    Stream #0:5[0xf04]: Unknown: none ([5][0][0][0]/0x0005) 
    Stream #0:6[0xf03]: Unknown: none ([5][0][0][0]/0x0005) 
    Stream #0:7[0xf02]: Unknown: none ([5][0][0][0]/0x0005) 
    Stream #0:8[0xf01]: Unknown: none ([5][0][0][0]/0x0005) 
    Stream #0:9[0xf00]: Unknown: none ([5][0][0][0]/0x0005) 
    Stream #0:10[0x92a]: Unknown: none ([5][0][0][0]/0x0005) 
    Stream #0:11[0x913]: Unknown: none ([5][0][0][0]/0x0005) 
    Stream #0:12[0x912]: Unknown: none ([5][0][0][0]/0x0005) 
    Stream #0:13[0x911]: Unknown: none ([5][0][0][0]/0x0005) 
    Stream #0:14[0x919]: Unknown: none ([5][0][0][0]/0x0005) 
    Stream #0:15[0xf09]: Unknown: none ([11][0][0][0]/0x000B) 
    Stream #0:16[0xf08]: Unknown: none ([11][0][0][0]/0x000B) 
    Stream #0:17[0xf07]: Unknown: none ([11][0][0][0]/0x000B) 
    Stream #0:18[0xf06]: Unknown: none ([11][0][0][0]/0x000B) 
    Program 6318 
    Program 6390 
    Program 6391 
    Program 6351 
    Program 6361 
    Program 6306 
    Program 6341 
Automatic encoder selection failed for output stream #0:3. Default encoder for format mpegts (codec none) is probably disabled. Please choose an encoder manually. 
Error selecting an encoder for stream 0:3 

如何做到这一点的任何想法。我不能用数字指定流,因为我想将它用于许多电视流,而且顺序通常是不同的。

由于

回答

0

输出流0:3是基于图像的字幕流。由于您尚未为字幕指定编码器,因此ffm​​peg正在尝试挑选一个并失败,因为它没有基于图像的字幕编码器。您可以复制或删除流。

ffmpeg -i http://192.168.1.74:8001/1:0:1:189E:7FD:2:11A0000:0:0:0: -ignore_unknown -c copy -map 0:a -map 0:m:language:eng -map 0:v -acodec aac -vcodec libx264 -b:v 1100000 -t 00:00:30 "somethin.ts" 2>output.txt 

当然,你的主要目的是通过语言映射只有音频流。您的命令将映射两次视频,因为它被标记为英语。

为了避免这种情况,你可以使用两个ffmpeg的命令:

ffmpeg -i http://192.168.1.74:8001/1:0:1:189E:7FD:2:11A0000:0:0:0: -ignore_unknown -c copy -map 0:v:0 -map 0:m:language:eng -f mpegts - | ffmpeg -f mpegts -i - -map 0:v:0 -map 0:a:0 -c:a aac -c:v libx264 -b:v 1.1M out.ts 
+0

由于第二个建议的工作完美,我已经简化它一点点变成一个ffmpeg的命令:*的ffmpeg -i http://192.168.1.74 :8001/1:0:1:189E:7FD:2:11A0000:0:0:0:-ignore_unknown -c复制-sn -map 0:v:0 -map 0:m:language:eng -acodec aac - vcodec libx264 -f mpegts -t 00:01:00 -b:v 1.1M output.ts – jdauthre

+0

如果您的输入视频带有'eng'标记,这将复制视频流(和几乎两倍的输出大小)。 – Mulvya

+0

在我试过的样品中没有这种情况,但谢谢我会牢记这一点。我认为视频并不是常规标记为eng,但我不完全确定流标记,我是否正确地认为标记就是ffmpeg在运行时列出流时获得的文本 – jdauthre