Code Monkey home page Code Monkey logo

avproxy's Introduction

AvProxy

Simple IPTV proxy, small, faster, compact

  • Available protocols are HTTP(S)/HLS(S)(AES-128)/UDP/RTP for inputs and outputs
  • Basic/Digest Auth for ingress http[s]/hls[s] url
  • HLS Chunks at memory
  • Configuration can be at remote http[s] url place and will reconfigure inputs and outputs

Commerce features:

  • RTSP interleave(only) input (nice for webcam remux)
  • MPTS/T2MI(PLP NM/HEM Mode streams) demux for all of are input protocols
  • ...

License

Free for usage version

  • contact me if you need build for other architecture

commerce lifetime version

  • contains features, bug fixes and minor improvements (see at changelog)
  • another futures in developing(see at TODO)

avproxymedia@ google mail

donate $20 by BTC as thanks if you are using freeware version of AvProxy

bitcoin:3M5qi4ZjrQegLUNifBQkie9Wk3FZqFU3h8

avproxy's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

avproxy's Issues

please help with ApplePreroll=N

ApplePreroll=N is not working properly for me
I specified ApplePreroll=10 in AvProxy.xml and there are still only 3 segments in the output playlist

Example of AvProxy.xml:

HttpPort not working

./AvProxy-x64 -HttpPort 80
binds to an ephemeral port, not 80:

$ sudo ss -lpnt | grep AvProxy
LISTEN    0         5                  0.0.0.0:38681            0.0.0.0:*        users:(("AvProxy-x64",pid=11878,fd=7))

make input ondemand

Hello!
When are you planning on implementing "input ondemand"?
I am a "home" user and alas, I do not have the opportunity to constantly receive all the streams ...

IFace also for output?

I have config like this:

<?xml version="1.0"?>
<AvProxy Ver="1">
<Input Url="udp://239.40.1.1:3000?IFace=172.17.1.1">
    <Output Name="Test" Pnr=10>
            <TsPush Url="udp://238.1.1.1:5000?IFace=172.17.1.1"/>
    </Output>
</Input>
</AvProxy>

Input is a MPTS and I wish to filter only Pnr 10 on output on multicast 238.1.1.1:5000 but over specific interface. While it receives the multicast on correct defined IFace it doesn't use th IFace parameter on output. It this even and option?

Support for MPTS

I have an MPTS that I would like to output as HLS, but AvProxy seems to only use the first program.

ffprobe udp://234.7.8.9:2000?localaddr=192.168.2.62
Input #0, mpegts, from 'udp://234.7.8.9:2000?localaddr=192.168.2.62':
  Duration: N/A, start: 37632.403911, bitrate: N/A
  Program 3 
    Stream #0:0[0x31]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, progressive), 1280x720 [SAR 1:1 DAR 16:9], Closed Captions, 59.94 fps, 59.94 tbr, 90k tbn, 119.88 tbc
    Stream #0:1[0x34](eng): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 384 kb/s
    Stream #0:2[0x35](spa): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 192 kb/s
  Program 4 
    Stream #0:4[0x41]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, top first), 720x480 [SAR 1:1 DAR 3:2], Closed Captions, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0:8[0x44](eng): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 192 kb/s
  Program 5 
    Stream #0:3[0x51]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, top first), 720x480 [SAR 32:27 DAR 16:9], Closed Captions, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0:7[0x54](eng): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 192 kb/s
  Program 6 
    Stream #0:5[0x61]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, top first), 720x480 [SAR 32:27 DAR 16:9], Closed Captions, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0:6[0x64](eng): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 192 kb/s
cat AvProxy.xml
<?xml version="1.0"?>
<AvProxy Ver="1">
<Input Url="udp://234.7.8.9:2000?IFace=192.168.2.62">
	<Output ApplePreroll=10 Name="http3"/>
</Input>
</AvProxy>

./AvProxy-x64 -Trace
[AvProxy]	Build=[Mar  1 2023 01:29:34 (host_x64.r1)]
[Main]	Build=[Mar  1 2023 02:10:30 (host_x64.r1)]
[BaseLib]	Build=[Mar  1 2023 02:10:30 (host_x64.r1)]
[Arg 0-0]	[./AvProxy-x64]
[Arg 1-1]	[-Trace]
[NetLib]	Host=zino
[NetLib]	IFace=lo	Ip=[127.0.0.1]
[NetLib]	IFace=enp3s0f0	Ip=[192.168.0.140]
[NetLib]	IFace=enp3s0f1	Ip=[192.168.2.62]
[NetLib]	IFace=enp3s0f1	Mac=[00:1B:21:39:15:8A]
[NetLib]	IFace=lo	Mac=[00:00:00:00:00:00]
[NetLib]	IFace=enp3s0f0	Mac=[00:1B:21:39:15:8B]
[HttpServer]	Build=[Mar  1 2023 01:32:00 (host_x64.r1)]
[HttpServer]	[Open] Tcp=41953
[AvProxy]	Url is invalid, use local configuration file [AvProxy.xml]
[TaskThread]	[11875] Began operating
[AvProxy]	Synchronization XML [0 -> 1]
[AvProxy]	Open Input=[udp://234.7.8.9:2000?IFace=192.168.2.62]
IFace: addr 192.168.2.62
Update Output...
Open Output=http3
Output: Name http3, Desc http3, Pnr -1, Apple(AES128 0, Reserve 1, Preroll 10)
[Pat]	Ver=00	Key=96F3DBCE	Nit=0000(0)
	  Program=0030(48)  	Index=3
	  Program=0040(64)  	Index=4
	  Program=0050(80)  	Index=5
	  Program=0060(96)  	Index=6
[Pmt]	Pid=0030(48)	Ver=14	Key=158BB3DA	Pcr=0031(49)
	    Tag=05	Data=4  (47 41 39 34 )	REGD=GA94
	  Stream=0031(49)	Type=Video	Codec=MP2V	Tag=02(MPEG-2 Video)
	    Tag=11	Data=1  (FF )
	    Tag=10	Data=6  (C0 BD 62 C0 08 00 )
	    Tag=06	Data=1  (02 )
	    Tag=86	Data=7  (E1 65 6E 67 C1 3F FF )
	  Stream=0034(52)	Type=Audio	Codec=AC3	Tag=81(AC3)
	    Tag=05	Data=4  (41 43 2D 33 )	REGD=AC-3
	    Tag=81	Data=10 (08 3A 0F FF 0F 01 BF 65 6E 67 )
	    Tag=0A	Data=4  (65 6E 67 00 )	LANG=eng
	  Stream=0035(53)	Type=Audio	Codec=AC3	Tag=81(AC3)
	    Tag=05	Data=4  (41 43 2D 33 )	REGD=AC-3
	    Tag=81	Data=10 (08 28 45 FF 00 01 BF 73 70 61 )
	    Tag=0A	Data=4  (73 70 61 00 )	LANG=spa

ffprobe http://192.168.2.62:34423/live/http3/index.m3u8
Input #0, hls, from 'http://192.168.2.62:38681/live/http3/index.m3u8':
  Duration: N/A, start: 36659.166578, bitrate: N/A
  Program 0 
    Metadata:
      variant_bitrate : 0
  Stream #0:0: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv), 1280x720 [SAR 1:1 DAR 16:9], Closed Captions, 59.94 fps, 59.94 tbr, 90k tbn
    Metadata:
      variant_bitrate : 0
    Side data:
      cpb: bitrate max/min/avg: 12870000/0/0 buffer size: 9764864 vbv_delay: N/A
  Stream #0:1: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 384 kb/s
    Metadata:
      variant_bitrate : 0
  Stream #0:2: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 192 kb/s
    Metadata:
      variant_bitrate : 0

If I probe the ts files emitted, the PMT has the PRG in it but no data.

Input #0, mpegts, from 'F81FC810466F4379314B10A977B0AC93.ts':
  Duration: 00:00:06.01, start: 37026.846578, bitrate: 11242 kb/s
  Program 3 
  Stream #0:0[0x31]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, progressive), 1280x720 [SAR 1:1 DAR 16:9], Closed Captions, 59.94 fps, 59.94 tbr, 90k tbn
    Side data:
      cpb: bitrate max/min/avg: 12870000/0/0 buffer size: 9764864 vbv_delay: N/A
  Stream #0:1[0x34](eng): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 384 kb/s
  Stream #0:2[0x35](spa): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 192 kb/s
  Program 4 
  Program 5 
  Program 6 

I know it might be non-standard to have MPTS in hls, but I see it more often in low-budget broadcast distribution systems and trying to re-create. Just would like to keep all input as is in the output.
Thanks

UDP output

Hi,
I am trying to use HLS input and publish this to UDP, but does not work.

<?xml version="1.0"?>
<AvProxy Ver="1">
<Input Url="m3u8://transcoder.xxx.stream/euronews-en/video.m3u8">
        <Output Name="udp1">
                <TsPush Url="udp://239.0.0.1:8888"/>
        </Output>
</Input>
</AvProxy>

Does anyone have an idea what I am doing wrong?

thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.