I have a Sony Bravia TV with a network (ethernet) connection. Letting aside the fact that he is in another subnet than my NAS and as such I can not use a DLNA (UPnP-AV) server (it is using multicast and the Simple Service Discovery Protocol (SSDP) which is not traversing subnets in the WLAN-LAN-ADSL-router I use), there is no good explanation from Sony what I can feed to the TV.
When searching the net I can find some obscure suggestions and descriptions, but not all of them work for all people which try them. So it seems I have to research this myself. Luckily my router has a build-in UPnP-AV server which I can use to play around (the file size is limited to the size of the USB memory stick I have connected to the router, as he can not stream content which is available in a NAS in the network).
Sony tells the TV is able to receive MPEG2 TS and PS containers. MPEG2 PS is more or less what you have on DVD. It is able to play SD and HD content from the PS container, and the video format needs to be MPEG2. They do not explain what SD or HD means in this context (the valid resolutions), and they do not tell what kind of audio is allowed.
For the MPEG2 TS container they additionally allow H.264 video, and they specify EU, EU-T and EU-ISO as supported in this case. Again, they do not explain what those EU* parts are supposed to mean.
For the unspecified audio I assume this means AC-3, AAC and MPEG Audio Layer 2 (some people use MP2 to describe this audio format). I successfully tested AAC and AC-3, and I have read that MP2 works too. Based upon my experiences with the video part (more below) I assume the sampling rate and bitwidth matter. So far I tried with 48 kHz and 16 bit per channel.
For the EU* parts I have not found any trustworthy reference what this could mean, but it looks this refers to some aspects of DVB/DVB-T/DVB-S(2) as it is used in Europe. I guess this is a bit linked with valid resolutions the TV is able to handle.
For the video part I have found mixed reports. From hat I have read in the Wikipedia page of the H.264 video format, I assumed the failures are related to a wrong resolution and maybe the fact that some parts of the video do not conform to specific “levels” of the H.264 format. Some tell you are not allowed to use more than X reference frames, some tell you can not use advanced feature Y.
The first test I did was to take the Sintel video from Blender. I downloaded the MP4 version and remuxed it into a MPEG2-TS container (I used tsMuxeR to do this). The TV was able to play the AAC audio, but it did not show the video. When I look at the video properties, I see that it has a resolution of 1280×544 at 24 FPS. For H.264 videos which use the “High” profile and are compatible up to level 4.1, I do not see this resolution listed as valid in the Wikipedia page. Valid resolutions are 1280×720 at 30, 60 and 68.3 FPS, and 1280×1024 at 42.2 FPS. This could explain why it is not working.
As a second test I took a video resized it to 624×256 (I did not pay much attention to the scale in the program I used to test this, I just hoped it takes a good one, now that I try to summarize what I investigated so far, I see that this size is not one of the valid sizes listed in the levels for H.264) at 23.976 FPS and reencoded it with the default options of the x264 encoder. The resulting video played just fine on the TV.
My third test was to encode a resized (from 640×272 to 640×480) video at 23.976 FPS with weighted, upto 4 adaptive B-frames, mixed references, 4 reference frames, and some other options (this includes B-pyramid, which seems to be enabled by default). And again, the resulting video played just fine (despite the fact that I found comments in the net which suggest that B-pyramid needs to be disabled…).
I still have to test some HD sizes, but it looks like one key aspect for compatibility is that the video is encoded with the right resolution (I have to admit, I do not really know what this means, as one video had a resolution which was different from what the valid sizes for the H.264 levels are) and complies to only level 4.1 (or 4) and below (basically this means to obey some bitrate limitations and the number of max. reference frames for the given resolution). The 23.976 FPS I mentioned above are not listed as one of the valid FPS in the levels for H.264, so I do not think the FPS have to strictly conform to what is specified for the levels. It looks more this is just an upper limit so that the video could also use some lower FPS.
So far I took the sintel video and added some black borders on top and below to get to the 1080×720 resolution. I used avidemux 2.5.4 for this. The version I tried can only produce a MP4 container with this video/audio combination, and my hope was to remux it with tsMuxeR to a MPEG2-TS, but tsMuxeR does not find a valid video or audio stream inside the MP4 container. I am still searching for a program which is able to remux the resulting MP4 into a MPEG2-TS. I found a tool which extracts the streams from the MP4 container, but the only free MPEG2-TS muxer seems to be tsMuxeR, which I was not able to convince to mux the two streams into a MPEG2-TS file. It seems I have either to wait until avidemux knows how to generate MPEG2-TS streams with H.264 and AAC, or until it generates a MP4 container with H.264 and AAC which tsMuxeR is able to handle.
What I also want to test is, if I can use the open-gop options (either in “normal” or in “bluray” mode), but I did not took the time to test this.
The only think I can tell definitively ATM is, that despite to all the information I found in the net about this, nothing can be told about the hard requirements except, that the video encoding can not exceed level 4.1 (or 4), because so far no hardware decoder chip seems to support a higher level. It seems I can use more or less all options available for the H.264 encoding, and the resolution and FPS does not seem to matter that much. I looks more that you have to find a version of an H.264 encoder which works for you, and after that you can more or less do what you want.