Archive of https://github.com/drakmor/prompeg-decoder — A proxy to recover lost packets from FFmpeg Pro-MPEG video stream https://github.com/drakmor/prompeg-decoder
  • C++ 99.8%
  • Makefile 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
kirintw 74da9ce42f Udate README
typos and grammatical error
2019-01-05 15:35:39 +08:00
.gitignore fecRecovery small tweaks, increase socket recvBuffer to 10MB 2017-11-25 15:52:45 +08:00
client.cpp Small tweaks on fec and readability 2017-12-23 01:37:24 +08:00
makefile refactor for readability 2017-11-26 23:21:08 +08:00
monitor.h Small tweaks on fec and readability 2017-12-23 01:37:24 +08:00
packetBuffer.h Small tweaks on fec and readability 2017-12-23 01:37:24 +08:00
packetParser.h refactor for readability 2017-11-26 23:21:08 +08:00
packetQueue.h refactor for readability 2017-11-26 23:21:08 +08:00
README.md Udate README 2019-01-05 15:35:39 +08:00
socketConnection.h Small tweaks on fec and readability 2017-12-23 01:37:24 +08:00

prompeg decoder

The project aims to solve the well-known wireless multicast problem by forward error correction(FEC). The goal is to improve the performance of wireless multicast video stream.

This program acts as a proxy server that receives prompeg video stream from remote FFmpeg server. It will recover the lost packet with the FEC stream, redirect the recovered stream to localhost, which is playable with FFplay.

The project is currently under development

To-Do

  • xor_fast() with uint64_t implementation

Requirement

  • Server:
    • FFmpeg (required version above 3.3)
  • Client:
    • OS: Linux
    • FFplay

ffmpeg server command:

    ffmpeg -re -i yourVideoFileName.mp4 \
    -vcodec libx264 \
    -profile:v main \
    -preset faster \
    -tune zerolatency \
    -b:v 1000k \
    -g 48 -refs 1 \
    -me_method epzs -me_range 16 \
    -intra-refresh 1 \
    -f rtp_mpegts -strict -2 \
    -fec prompeg=l=4:d=4 \
    rtp://239.0.0.1:20000

ffplay client command:

ffplay rtp://127.0.0.1:8000

Usage

make
./client <Multicast IP> <Multicast Port> <Max delay in ms>