Project

General

Profile

TVHeadend Raspberry Pi and Transcoding

Added by lord slash almost 6 years ago

Hi guys, I've setup a TVHeadend back end with my raspberry pi and raspbian, where I stream the italian tv to my home in Germany. The system works perfectly during the day, but in the evening the DSL bandwidth is not enough (I need around 4000kbps and I have 3000kbps).

Therefore I would like to try the TVHeadend transcoding option. According to this: https://tvheadend.org/boards/4/topics/13635?r=13637 I should compile after enabling the transcoding in the configuration file src/plumbing/transcoding.c The problem is that in this file there is no uint32_t transcoding_enabled at all. I tried a ./configure --enable-libffmpeg_static and then make and make install, but in the TVHeadend transcoding option is not there :(

What happened to the uint32_t transcoding_enabled ?? How should I compile in order to get transcoding work on my pi? By the way, I have TVHeadend 3.9.1879. Thanks in advance for the help!


Replies (160)

RE: TVHeadend Raspberry Pi and Transcoding - Added by Catscrash Catscrash about 2 years ago

Alexander Meinke wrote:

Hi,

I also managed to get transcoding for ts (mpeg2video, mpeg2audio) -> ts (h264, ac3) and ts (h264, ac3) -> ts (h264, ac3) working by using gstreamer.

Hi Alexander, how did you compile tvheadend for raspberry to get the transcoding settings? When I install from repository, the transcoding options are missing, when I compile tvheadend crashes shortly after startup

RE: TVHeadend Raspberry Pi and Transcoding - Added by Alexander Meinke about 2 years ago

Hello Catscrash,

I did not compiled tvheadend myself. There are arm/rpi prebuilt packages. You can use doozer or bintray. For more information look at https://tvheadend.org/projects/tvheadend/wiki/AptRepository. After that I installed the gstreamer omx packages and added the transcoding profile.

RE: TVHeadend Raspberry Pi and Transcoding - Added by Catscrash Catscrash about 2 years ago

Hi Alexander,

thanks for that - Did you do anything else to the packages to enable transcoding? The doozer and bintray tvheadend armhf packages seem to have transcoding disabled - see attachment

RE: TVHeadend Raspberry Pi and Transcoding - Added by Mark Clarkstone about 2 years ago

Catscrash Catscrash wrote:

Hi Alexander,

thanks for that - Did you do anything else to the packages to enable transcoding? The doozer and bintray tvheadend armhf packages seem to have transcoding disabled - see attachment

You can still use the mpegts-spawn profile & pass the job to gstreamer :).

RE: TVHeadend Raspberry Pi and Transcoding - Added by Alexander Meinke about 2 years ago

Mark Clarkstone wrote:

Catscrash Catscrash wrote:

Hi Alexander,

thanks for that - Did you do anything else to the packages to enable transcoding? The doozer and bintray tvheadend armhf packages seem to have transcoding disabled - see attachment

You can still use the mpegts-spawn profile & pass the job to gstreamer :).

Exactly. Thank you Mark :).

RE: TVHeadend Raspberry Pi and Transcoding - Added by Andy B about 2 years ago

Is this enough for it to be bundled into a rpi+transcoding build or way too early just yet?
I have a rpi3b+ and happy to test when ready.

RE: TVHeadend Raspberry Pi and Transcoding - Added by Alexander Meinke about 2 years ago

Andy B wrote:

Is this enough for it to be bundled into a rpi+transcoding build or way too early just yet?
I have a rpi3b+ and happy to test when ready.

I do not understand your question.

There are five steps at the moment:

1. Get Pi Image from Foundation
2. Get your TV adapter working
3. Install gstreamer with omx
4. Install tvheadend
5. Create Spawn stream-profile

Gstreamer is a pure external project and has nothing to do with tvheadend. Ffmpeg is also external, but was chosen to be included in tvheadend but does not offer transcoding at the moment.

Some other goals could be:

- tune gstreamer pipeline (for example bitrate or resolution)
- test gstreamer pipeline (should deliver smooth experience independent of source because there is mpeg2, h264 and last but not least h265)
- try to get gstreamer omx plugins from ugly/bad to base/good (could be difficult with codecs that require license)
- as ffmpeg is chosen to be included, support the mainline / upstream development in the omx area

I think the last point turns the answer to your question to: NO, too early.

Cheers

RE: TVHeadend Raspberry Pi and Transcoding - Added by Andy B about 2 years ago

Thanks. I'm struggling to figure out the finer details.
Please could you help fill in the blanks?

1. Get Pi Image from Foundation
--> I have tried with RASPBIAN STRETCH LITE and RASPBIAN STRETCH WITH DESKTOP

2. Get your TV adapter working
--> Already done and it has been working fine.

3. Install gstreamer with omx
How is this supposed to be done? I saw previous comments earlier in the thread that it is using:
sudo apt-get install gstreamer1.0
sudo apt-get install gstreamer-1.0
also saw other forums suggesting:
sudo apt-get install gstreamer1.0-tools
also tried:
sudo apt-get install gstreamer1.0-omx

4. Install tvheadend
--> I'm using the steps at the bottom of this page (https://tvheadend.org/projects/tvheadend/wiki/AptRepository)
Currently with version: HTS Tvheadend 4.2.6-16~g42e737f28

5. Create Spawn stream-profile
--> The only profiles that appear from the list are:
+ MPEG-TS Pass-through/built-in
+ Matroska (mkv)/built-in
+ HTSP Stream Profile
+ Audio stream
--> No spawn profile..? Why is it missing?

RE: TVHeadend Raspberry Pi and Transcoding - Added by saen acro about 2 years ago

Andy B wrote:

--> No spawn profile..? Why is it missing?

update to 4.3.xxxx

RE: TVHeadend Raspberry Pi and Transcoding - Added by Andy B about 2 years ago

Thanks for that.
I have it working now - pretty impressive although a bit buggy for me.

As a test I checked an HD service with the PASS profile and it averaged around 10Mb/s.
Using the spawn process the same service averaged around 0.8Mb/s.
This was using the CMD given earlier in the thread:

gst-launch-1.0 fdsrc fd=0 ! decodebin name=decoder decoder. ! queue ! avenc_ac3 ! mpegtsmux name=mux ! fdsink fd=1 decoder. ! omxh264enc ! mux.

I noticed sometimes it doesn't always play but VLC still shows an input bitrate of around 0.6Mb/s. Not sure why that is yet. I am playing with the settings and adjusting the timeouts to see if I can improve the reliability.
Also, the transcoded bitrate is a bit low for me - I think the sweet spot will be around 2.5-3Mb/s (if the rpi can do it).

(151-160/160)