Custom MPEG-TS Input » History » Revision 11
« Previous |
Revision 11/28
(diff)
| Next »
Jaroslav Kysela, 2014-11-18 12:08
Custom MPEG-TS Input¶
Requirement¶
The TVHeadend 3.9.2100 and up for the pipe:// URL support. Note that TVHeadend expects the input in the raw MPEG-TS format with correct PAT/PMT tables.
IPTV URLs¶
Note: Always try the command without pipe:// prefix on standard command line, if it works with a stdout redirection to a file!!
Streaming from a file¶
Use option -re for the input file to en
-re (input) Read input at native frame rate. Mainly used to simulate a grab device. or live input stream (e.g. when reading from a file). Should not be used with actual grab devices or live input streams (where it can cause packet loss). By default ffmpeg attempts to read the input(s) as fast as possible. This option will slow down the reading of the input(s) to the native frame rate of the input(s). It is useful for real-time output (e.g. live streaming).
Internet Radios¶
Unfortunately ffmpeg can't set the right header for Radios, so they'll show up as TV Channels :(. So while its not ideal, you can show a static image (the Radio Logo maybe?)
pipe:///usr/bin/ffmpeg -loglevel fatal -loop 1 -y -i /path/to/image.png -re -i INPUTLINK -vcodec libx264 -acodec copy -mbd rd -copyinkf -flags +ilme+ildct -fflags +genpts -metadata service_provider=RADIOPROVIDER -metadata service_name=RADIONAME -tune zerolatency -f mpegts pipe:1
Transcoding¶
YMMV with different ffmpeg/libav versions. In Red Hat's (Fedora/Centos) build of ffmpeg, aac transcoding is experimental, so you have to enable -strict -2
pipe:///usr/bin/ffmpeg -loglevel fatal -i INPUTLINK -vcodec libx264 -acodec aac -strict -2 -copyinkf -flags +ilme+ildct -fflags +genpts -metadata service_provider=STRING -metadata service_name=STRING -f mpegts -tune zerolatency pipe:1
Try to transcode as little as possible, since it will impact your cpu usage. And if you're using tvheadend to re-transcode... well..
So if your channel already has aac audio, maybe you only need to transcode the video stream.
pipe:///usr/bin/ffmpeg -loglevel fatal -nostdin -i INPUTLINK -vcodec libx264 -acodec copy -copyinkf -flags +ilme+ildct -fflags +genpts -metadata service_provider=STRING -metadata service_name=STRING -f mpegts -tune zerolatency pipe:1
Direct copy¶
pipe:///usr/bin/ffmpeg -loglevel fatal -i INPUTLINK -vcodec copy -acodec copy -metadata service_provider=STRING -metadata service_name=STRING -f mpegts -tune zerolatency pipe:1
Other solutions (HTTP proxy)¶
Updated by Jaroslav Kysela about 10 years ago · 11 revisions