From 9c7df83011e6916918d3888d5f147555ffd90060 Mon Sep 17 00:00:00 2001 From: Alan Noble Date: Wed, 20 Sep 2017 21:28:54 +0930 Subject: [PATCH] Refactored to be more Go idiomatic. --- revid/Readme.md | 224 ++++++++++++++++++++++++------------------------ 1 file changed, 112 insertions(+), 112 deletions(-) diff --git a/revid/Readme.md b/revid/Readme.md index 058e51c1..4d76d3d2 100644 --- a/revid/Readme.md +++ b/revid/Readme.md @@ -1,112 +1,112 @@ -# Readme - -revid is a testbed for re-muxing and re-directing video streams as -MPEG-TS over various protocols. - -# Description - -The mode (-m) determine the mode of operation: - - * h = send HTTP (as a POST) - * u = send UDP - * r = send RTP - * f = write to /tmp files - * d = inspect packets and dump to screen - -Flags (-f) determine video filtering and other actions. - -For example, to send as raw UDP to on the current host, passing the video and audio as is: - -revid -i -m u -o udp://0.0.0.0: - -Or, to post as HTTP to , fixing PTS and dropping the audio along the way: - -revid -i -m h -f 3 -o - -Note that revid appends the size of the video to the URL to supply a query param. -Append a ? to your if you don't need it - -List of flags: - - * FilterFixPTS = 0x0001 - * FilterDropAudio = 0x0002 - * FilterScale640 = 0x0004 - * FilterScale320 = 0x0008 - * FilterFixContinuity = 0x0010 - * DumpProgramInfo = 0x0100 - * DumpPacketStats = 0x0200 - * DumpPacketHeader = 0x0400 - * DumpPacketPayload = 0x0800 - -Common flag combos: - - * 3: fix pts and drop audio - * 7: fix pts, drop audo and scale 640 - * 17: fix pts and fix continuity - * 256: dump program info - * 512: dump packet stats - * 513: fix pts, plus above - * 529: fix pts and fix continuity, plus above - -# Errors - -If you see "Error reading from ffmpeg: EOF" that means ffmpeg has -crashed for some reason, usually because of a bad parameter. Copy and -paste the ffmpeg command line into a terminal to see what is -happening. - -RTSP feeds from certain cameras (such as TechView ones) do not -generate presentation timestamps (PTS), resulting in errors such as -the following: - - * [mpegts @ 0xX] Timestamps are unset in a packet for stream 0... - * [mpegts @ 0xX] first pts value must be set - -This can be fixed with an ffmpeg video filter (specified by flag 0x0001). -Another issue is that MPEG-TS continuity counters may not be continuous. -You can fix this with the fix continuity flag (0x0010). - -FFmpeg will also complain if doesn't have the necessary audio codec -installed. If so, you can drop the audio (flag 0x0002). - -# MPEG-TS Notes - -MPEG2-TS stream clocks (PCR, PTS, and DTS) all have units of 1/90000 -second and header fields are read as big endian (like most protocols). - - * TEI = Transport Error Indicator - * PUSI = Payload Unit Start Indicator - * TP = Transport Priority - * TCS = Transport Scrambling Control - * AFC = Adapation Field Control - * CC = Continuity Counter - * AFL = Adapation Field Length - * PCR = Program Clock Reference - -# Dependencies - -revid uses ffmpeg for video remuxing. -See [Ffmepg filters](https://ffmpeg.org/ffmpeg-filters.html). - -revid also uses [Comcast's gots package](https://github.com/Comcast/gots). - -# Author - -Alan Noble - -# License - -revid is Copyright (C) 2017 Alan Noble. - -It is free software: you can redistribute it and/or modify them -under the terms of the GNU General Public License as published by the -Free Software Foundation, either version 3 of the License, or (at your -option) any later version. - -It is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -or more details. - -You should have received a copy of the GNU General Public License -along with NetReceiver in gpl.txt. If not, see [GNU licenses](http://www.gnu.orlicenses). +# Readme + +revid is a testbed for re-muxing and re-directing video streams as +MPEG-TS over various protocols. + +# Description + +The mode (-m) determine the mode of operation: + +* h = send HTTP (as a POST) +* u = send UDP +* r = send RTP +* f = write to /tmp files +* d = inspect packets and dump to screen + +Flags (-f) determine video filtering and other actions. + +For example, to send as raw UDP to on the current host, passing the video and audio as is: + +revid -i -m u -o udp://0.0.0.0: + +Or, to post as HTTP to , fixing PTS and dropping the audio along the way: + +revid -i -m h -f 3 -o + +Note that revid appends the size of the video to the URL to supply a query param. +Append a ? to your if you don't need it + +List of flags: + +* filterFixPTS = 0x0001 +* filterDropAudio = 0x0002 +* filterScale640 = 0x0004 +* filterScale320 = 0x0008 +* filterFixContinuity = 0x0010 +* dumpProgramInfo = 0x0100 +* dumpPacketStats = 0x0200 +* dumpPacketHeader = 0x0400 +* dumpPacketPayload = 0x0800 + +Common flag combos: + +* 3: fix pts and drop audio +* 7: fix pts, drop audo and scale 640 +* 17: fix pts and fix continuity +* 256: dump program info +* 512: dump packet stats +* 513: fix pts, plus above +* 529: fix pts and fix continuity, plus above + +# Errors + +If you see "Error reading from ffmpeg: EOF" that means ffmpeg has +crashed for some reason, usually because of a bad parameter. Copy and +paste the ffmpeg command line into a terminal to see what is +happening. + +RTSP feeds from certain cameras (such as TechView ones) do not +generate presentation timestamps (PTS), resulting in errors such as +the following: + +* [mpegts @ 0xX] Timestamps are unset in a packet for stream 0... +* [mpegts @ 0xX] first pts value must be set + +This can be fixed with an ffmpeg video filter (specified by flag 0x0001). +Another issue is that MPEG-TS continuity counters may not be continuous. +You can fix this with the fix continuity flag (0x0010). + +FFmpeg will also complain if doesn't have the necessary audio codec +installed. If so, you can drop the audio (flag 0x0002). + +# MPEG-TS Notes + +MPEG2-TS stream clocks (PCR, PTS, and DTS) all have units of 1/90000 +second and header fields are read as big endian (like most protocols). + +* TEI = Transport Error Indicator +* PUSI = Payload Unit Start Indicator +* TP = Transport Priority +* TCS = Transport Scrambling Control +* AFC = Adapation Field Control +* CC = Continuity Counter (incremented per PID wen payload present) +* AFL = Adapation Field Length +* PCR = Program Clock Reference + +# Dependencies + +revid uses ffmpeg for video remuxing. +See [Ffmepg filters](https://ffmpeg.org/ffmpeg-filters.html). + +revid also uses [Comcast's gots package](https://github.com/Comcast/gots). + +# Author + +Alan Noble + +# License + +revid is Copyright (C) 2017 Alan Noble. + +It is free software: you can redistribute it and/or modify them +under the terms of the GNU General Public License as published by the +Free Software Foundation, either version 3 of the License, or (at your +option) any later version. + +It is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +or more details. + +You should have received a copy of the GNU General Public License +along with revid in gpl.txt. If not, see [GNU licenses](http://www.gnu.licenses).