How to force framerate conversion during transcoding if above 30fps?

Server Version#: 1.20.1.3252
Player Version#: 2.013

Hi, my Samsung TV (2013) doesn’t support 60fps, max 30fps.
Plex server does transcoding but leaves the framerate untouched (~60fps).
How can I force a framerate conversion if the original framerate is above 30fps?

Thanks, Frank

Which codec does the source file use?

  1. activate debug logging (not ‘verbose’!)
  2. quit Plex Server
  3. wait 1 minute
  4. start Plex Server
  5. wait 2 minutes
  6. (attempt to) play one of the affected files for ~1 minute
  7. wait 3 minutes
  8. fetch log files and attach them here

Codec of the source file is H264 in a MP4 container.
Plex Media Server Logs_2020-09-28_16-18-01.zip (26.7 KB)

Plex TV app doesn’t play the files but shows the following error after a few seconds: “A render error occured, media may be corrupted”

Medien

  • Dauer 2:38
  • Bitrate 45199 kbps
  • Width 1920
  • Height 1080
  • Aspect Ratio 1.78
  • Video Resolution 1080p
  • Container MP4
  • Video Frame Rate 60p
  • Web Optimized Nein
  • Audio Profile lc
  • Video Profile high

Teil

  • Dauer 2:38

  • File GH010005.MP4

  • Size 853.76 MB

  • Audio Profile lc

  • Container MP4

  • Web Optimized Nein

  • Video Profile high

  • Codec H264

  • Bitrate 45010 kbps

  • Sprache English

  • Bit Depth 8

  • Chroma Location left

  • Chroma Subsampling 4:2:0

  • Coded Height 1088

  • Coded Width 1920

  • Color Primaries bt709

  • Color Range pc

  • Color Space bt709

  • Color Trc bt709

  • Frame Rate 59.94 fps

  • Has Scaling Matrix true

  • Height 1080

  • Level 4.2

  • Profil high

  • Ref Frames 2

  • Stream Identifier 1

  • Width 1920

  • Display Title 1080p (H.264)

  • Extended Display Title 1080p (H.264)

  • Codec AAC

  • Kanäle 2

  • Bitrate 189 kbps

  • Sprache English

  • Audio Channel Layout stereo

  • Profil lc

  • Sampling Rate 48000 Hz

  • Stream Identifier 2

  • Display Title English (AAC Stereo)

  • Extended Display Title English (AAC Stereo)

You can try and create a custom device profile for Plex, which has a restriction to 30 fps.
(This used to work, but I am nactually not sure if it still does.)

OK, according to the log, Plex is using the device profile Samsung.xml (line 882).

You can find this device profile in the folder where the executables of Plex server are stored, in a subfolder Resources/Profiles.
Copy this file to your Plex data folder

See Synology FAQ - Questions, Answers, and a few How-To's for how to get access to the data folder.

In the data folder, create a subfolder named Profiles
Now modify the Samsung.xml file.
Go to line 30

    <CodecProfiles>
        <VideoAudioCodec name="ac3,wmav2,dca,aac,mp3">
            <Limitations>

insert a blank line directly under <CodecProfiles> and insert

    <VideoCodec name="mpeg2video">
      <Limitations>
        <UpperBound name="video.width" value="1920" isRequired="true" />
        <UpperBound name="video.height" value="1080" isRequired="true" />
        <UpperBound name="video.frameRate" value="30" />
        <UpperBound name="video.bitrate" value="30720" />
      </Limitations>
    </VideoCodec>
    <VideoCodec name="mpeg4">
      <Limitations>
        <UpperBound name="video.width" value="1920" isRequired="true" />
        <UpperBound name="video.height" value="1080" isRequired="true" />
        <UpperBound name="video.frameRate" value="30" />
        <UpperBound name="video.bitrate" value="8192" />
      </Limitations>
    </VideoCodec>
    <VideoCodec name="h264">
      <Limitations>
        <UpperBound name="video.width" value="1920" isRequired="true" />
        <UpperBound name="video.height" value="1080" isRequired="true" />
        <UpperBound name="video.frameRate" value="30" />
        <UpperBound name="video.bitrate" value="37500" />
        <UpperBound name="video.level" value="41" />
      </Limitations>
    </VideoCodec>
    <VideoCodec name="wmv2,wmv3,vc1">
      <Limitations>
        <UpperBound name="video.width" value="1920" isRequired="true" />
        <UpperBound name="video.height" value="1080" isRequired="true" />
        <UpperBound name="video.frameRate" value="30" />
        <UpperBound name="video.bitrate" value="25600" />
      </Limitations>
    </VideoCodec>

Save the file and make sure it has the same UNIX access permissions as all the other files and folders inside of the Plex data folder.

Restart the Plex Media Server.
The repeat the procedure from above for getting the logs.

If you later want to revert the change (for instance because you have bought a newer Samsung TV), simply delete the edited Samsung.xml file.

1 Like

Great, that worked! Thanks @OttoKerner!
I’ve reduced the setting to:

        <VideoCodec name="*">
	      <Limitations>
	        <UpperBound name="video.width" value="1920"/>
	        <UpperBound name="video.height" value="1080"/>
	        <UpperBound name="video.frameRate" value="30" />
	      </Limitations>
    	</VideoCodec>

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.