我有HTTP流,我想转换为UDP:
http://192.168.1.44:8001/1:0:1:1F8:1B:2C0:E080000:0:0:0:
视频,音频和字幕工作完美如果我尝试在 VLC n Ubuntu 中打开此流。 到目前为止,这么好。
这是FFPROBE
ffprobe -i http://192.168.1.44:8001/1:0:1:1F8:1B:2C0:E080000:0:0:0:
ffprobe version git-2017-01-22-f1214ad Copyright (c) 2007-2017 the FFmpeg developers
built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
configuration: --extra-libs=-ldl --prefix=/opt/ffmpeg --mandir=/usr/share/man --enable-avresample --disable-debug --enable-nonfree --enable-gpl --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-decoder=amrwb --enable-libpulse --enable-libfreetype --enable-gnutls --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvorbis --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libspeex --enable-libass --enable-avisynth --enable-libsoxr --enable-libxvid --enable-libvidstab --enable-libwavpack --enable-nvenc
libavutil 55. 44.100 / 55. 44.100
libavcodec 57. 75.100 / 57. 75.100
libavformat 57. 63.100 / 57. 63.100
libavdevice 57. 2.100 / 57. 2.100
libavfilter 6. 69.100 / 6. 69.100
libavresample 3. 2. 0 / 3. 2. 0
libswscale 4. 3.101 / 4. 3.101
libswresample 2. 4.100 / 2. 4.100
libpostproc 54. 2.100 / 54. 2.100
[mpeg2video @ 0xa56fde0] Invalid frame dimensions 0x0.
Last message repeated 2 times
Input #0, mpegts, from 'ht tp://192.168.1.44:8001/1:0:1:1F8:1B:2C0:E080000:0:0:0:':
Duration: N/A, start: 35782.514200, bitrate: N/A
Program 501
Program 502
Program 503
Program 504
Stream #0:0[0x13b1]: 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[0x13b2]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 256 kb/s
Stream #0:2[0x1541](srp): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
Stream #0:3[0x1542](slv): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
Stream #0:4[0x1543](hrv): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
Stream #0:5[0x1544](cze): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
Stream #0:6[0x1545](hun): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
Stream #0:7[0x1546](ron): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
Stream #0:8[0x1547](alb): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
Stream #0:9[0x1548](bul): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
Stream #0:10[0x13b9](eng): Subtitle: dvb_teletext ([6][0][0][0] / 0x0006)
Program 505
Program 506
Program 507
Program 508
Program 509
Program 510
Program 511
Program 515
Program 516
Program 517
Program 518
Program 519
Program 520
Program 521
Unsupported codec with id 94215 for input stream 10
所以我决定使用 FFMPEG 来流式传输到UDP,并过滤掉不需要的SUB
这是FFMPEG cmd
ffmpeg -reconnect 1 -reconnect_at_eof 1 -reconnect_streamed 1 -reconnect_delay_max 2048 \
-i "http://192.168.1.44:8001/1:0:1:1F8:1B:2C0:E080000:0:0:0:" \
-map 0:0 -vcodec copy \
-map 0:1 -acodec copy \
-map 0:2 -map 0:6 -scodec copy \
-f mpegts udp://239.0.10.3:40000?pkt_size=1316
输出是:
Output #0, mpegts, to 'udp://239.0.10.3:40000?pkt_size=1316':
Metadata:
encoder : Lavf57.63.100
Stream #0:0: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, top first), 720x576 [SAR 64:45 DAR 16:9], q=2-31, 25 fps, 25 tbr, 90k tbn, 90k tbc
Stream #0:1: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 256 kb/s
Stream #0:2(srp): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
Stream #0:3(hun): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Stream #0:2 -> #0:2 (copy)
Stream #0:6 -> #0:3 (copy)
结果流是DISASTER ......音频不稳定,视频分崩离析等等
如果我在没有sub(地图2和6)的情况下尝试同样的事情,那么视频和音频都非常清晰,并且流畅的工作
但我需要这两个子。
要缩小问题范围,如果我尝试将传入的流捕获到文件中:
ffmpeg -reconnect 1 -reconnect_at_eof 1 -reconnect_streamed 1 -reconnect_delay_max 2048 \
-i "http://192.168.1.44:8001/1:0:1:1F8:1B:2C0:E080000:0:0:0:" \
-map 0:0 -map 0:1 -map 0:2 -map 0:6 \
-codec copy \
-y -f mpegts /tmp/tst.ts
生成的文件可播放,声音正常,视频正常,字幕正常。
看起来问题是OUTPUT到UDP ???
对此有何解决方案?