Well, I don't know how much information I need about the stream for the MediaObject, but handing the URL directly to Plex works well.
Plex is still transcoding and remuxing the source to an HLS, even though the MediaObject attributes info for Plex specify that it is mp4/h264/aac (Plex log using Plex/Web client below). For Roku (client) it also transcodes except the audio out is aac, not mp3 (essentially the same log entries).
Apr 01, 2014 08:45:25:020 [6060] DEBUG - Request: [127.0.0.1:60876] GET /video/:/transcode/universal/session/r9y0och42hbprpb9/base/index.m3u8 (5 live)
Apr 01, 2014 08:45:25:020 [6060] DEBUG - MDE: analyzing video part 0: mp4/h264/mp2/
Apr 01, 2014 08:45:25:020 [6060] DEBUG - MDE: selected video transcode profile: hls - mpegts/h264/mp3/
Apr 01, 2014 08:45:25:020 [6060] DEBUG - MDE: remuxing h264 video stream
Apr 01, 2014 08:45:25:021 [6060] DEBUG - MDE: selected media 0
Apr 01, 2014 08:45:25:021 [6060] DEBUG - [Universal] Remuxing to hls/mpegts/h264/mp3
Apr 01, 2014 08:45:25:021 [6060] DEBUG - Starting a transcode session r9y0och42hbprpb9 at offset -1.0 (stopped=1)
Apr 01, 2014 08:45:25:021 [6060] VERBOSE - [Event] Firing plex.event.transcodesessionmanager.sessionstarted to 0 sink(s)
Apr 01, 2014 08:45:25:021 [6060] DEBUG - Job running: C:\Program Files (x86)\Plex\Plex Media Server\PlexNewTranscoder.exe -i "http://cs6-8v4.vk.me/p15/6c0a9bfab400.360.mp4" -threads "0" "-y" -segment_format "mpegts" -f "segment" -loglevel "quiet" -loglevel_plex "error" -map_metadata "-1" -progressurl "http://127.0.0.1:32400/video/:/transcode/session/r9y0och42hbprpb9/progress" -vcodec "copy" -flags "-global_header" -segment_time "10" -segment_start_number "0" -bsf "h264_mp4toannexb,h264_plex" "-sn" -acodec libmp3lame -ac "2" -aq "2" "media-%05d.ts"
Apr 01, 2014 08:45:29:115 [7156] INFO - [Transcoder] Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'http://cs6-8v4.vk.me/p15/6c0a9bfab400.360.mp4':
Apr 01, 2014 08:45:29:116 [8148] VERBOSE - Finished writing response for GET /log?level=2&source=Transcoder&message=Input%20%230%2C%20mov%2Cmp4%2Cm4a%2C3gp%2C3g2%2Cmj2%2C%20from%20%27http%3A%2F%2Fcs6-8v4.vk.me%2Fp15%2F6c0a9bfab400.360.mp4%27%3A%0A, 0 bytes in 4087ms
Apr 01, 2014 08:45:29:117 [5584] INFO - [Transcoder] Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 452 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
Apr 01, 2014 08:45:29:117 [8020] VERBOSE - Finished writing response for GET /log?level=2&source=Transcoder&message=%20%20%20%20Stream%20%230%3A0%28eng%29%3A%20Video%3A%20h264%20%28Constrained%20Baseline%29%20%28avc1%20%2F%200x31637661%29%2C%20yuv420p%2C%20640x360%20%5BSAR%201%3A1%20DAR%2016%3A9%5D%2C%20452%20kb%2Fs%2C%2025%20fps%2C%2025%20tbr%2C%2025%20tbn%2C%2050%20tbc, 0 bytes in 16ms
Apr 01, 2014 08:45:29:118 [5456] INFO - [Transcoder] Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s
Apr 01, 2014 08:45:29:118 [8020] VERBOSE - Finished writing response for GET /log?level=2&source=Transcoder&message=%20%20%20%20Stream%20%230%3A1%28und%29%3A%20Audio%3A%20aac%20%28mp4a%20%2F%200x6134706D%29%2C%2044100%20Hz%2C%20stereo%2C%20fltp%2C%20127%20kb%2Fs, 0 bytes in 16ms
Apr 01, 2014 08:45:29:129 [7156] DEBUG - [Transcoder] Average FPS ~ 25 fps, Frame rate ~ 25 fps.
Apr 01, 2014 08:45:29:129 [8148] VERBOSE - Finished writing response for GET /log?level=3&source=Transcoder&message=Average%20FPS%20~%2025%20fps%2C%20Frame%20rate%20~%2025%20fps., 0 bytes in 0ms
Apr 01, 2014 08:45:29:144 [5456] INFO - [Transcoder] Output #0, segment, to 'media-%05d.ts':
Apr 01, 2014 08:45:29:144 [8148] VERBOSE - Finished writing response for GET /log?level=2&source=Transcoder&message=Output%20%230%2C%20segment%2C%20to%20%27media-%2505d.ts%27%3A%0A, 0 bytes in 15ms
Apr 01, 2014 08:45:29:148 [6060] DEBUG - [FFMPEG] Duration: 2637
Apr 01, 2014 08:45:29:148 [6060] DEBUG - Read line, and done: 1
Apr 01, 2014 08:45:29:148 [6060] DEBUG - Started session successfully: r9y0och42hbprpb9
Apr 01, 2014 08:45:29:148 [6060] DEBUG - HLS: Building an M3U8 for 2637 total seconds with 10 seconds/segment, target duration of 10.
Apr 01, 2014 08:45:29:149 [6060] VERBOSE - Completed request: GET /video/:/transcode/universal/session/r9y0och42hbprpb9/base/index.m3u8: 2200
Apr 01, 2014 08:45:29:149 [8020] VERBOSE - Finished writing response for GET /video/:/transcode/universal/session/r9y0och42hbprpb9/base/index.m3u8, 0 bytes in 4165ms
Apr 01, 2014 08:45:29:154 [5584] INFO - [Transcoder] Stream #0:0: Video: h264 (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], q=2-31, 452 kb/s, 25 fps, 90k tbn, 25 tbc
Apr 01, 2014 08:45:29:155 [8148] VERBOSE - Finished writing response for GET /log?level=2&source=Transcoder&message=%20%20%20%20Stream%20%230%3A0%3A%20Video%3A%20h264%20%28avc1%20%2F%200x31637661%29%2C%20yuv420p%2C%20640x360%20%5BSAR%201%3A1%20DAR%2016%3A9%5D%2C%20q%3D2-31%2C%20452%20kb%2Fs%2C%2025%20fps%2C%2090k%20tbn%2C%2025%20tbc, 0 bytes in 16ms
Apr 01, 2014 08:45:29:156 [5456] INFO - [Transcoder] Stream #0:1: Audio: mp3, 44100 Hz, stereo, fltp
Apr 01, 2014 08:45:29:156 [8020] VERBOSE - Finished writing response for GET /log?level=2&source=Transcoder&message=%20%20%20%20Stream%20%230%3A1%3A%20Audio%3A%20mp3%2C%2044100%20Hz%2C%20stereo%2C%20fltp, 0 bytes in 16ms
Apr 01, 2014 08:45:29:157 [6060] DEBUG - Request: [127.0.0.1:60897] PUT /video/:/transcode/session/r9y0och42hbprpb9/progress?width=640&height=360 (5 live)
Apr 01, 2014 08:45:29:157 [6060] DEBUG - * width => 640
Apr 01, 2014 08:45:29:157 [6060] DEBUG - * height => 360
Apr 01, 2014 08:45:29:158 [6060] DEBUG - We want 6 segments ahead, last returned was -1 and max is -1.
Apr 01, 2014 08:45:29:158 [6060] DEBUG - It took 0.000000 sec to serialize a list with 0 elements.
Apr 01, 2014 08:45:29:158 [6060] VERBOSE - Completed request: PUT /video/:/transcode/session/r9y0och42hbprpb9/progress?width=640&height=360: 2200
Apr 01, 2014 08:45:29:158 [8020] VERBOSE - Finished writing response for PUT /video/:/transcode/session/r9y0och42hbprpb9/progress?width=640&height=360, 0 bytes in 0ms
Apr 01, 2014 08:45:29:272 [5584] DEBUG - Request: [127.0.0.1:60898] GET /video/:/transcode/universal/session/r9y0och42hbprpb9/base/00000.ts (5 live)
When I said I have no metadata, I don't mean just the pretty stuff. In general, I don't know the mux container (except by filename extension, if provided), the codecs, the duration, bitrate etc. I know this for this test case, but not in general. VLC can get most of that info.
It appears that Plex (for either Plex/Web or Roku as the client) does not need any of that information. It is working fine with no information through attributes at all (except for the url, of course).
I believe that Roku cannot accept an mp4 container at this time.
It looks like Plex/Web wants mp3 audio.
So, I guess that transcoding is still required, at least to remux, in both cases.
This does resolve this issue for this case. That was too easy.
Can a file name with path be passed to Plex as the source URL?
If so, do you know the format?
I tried C:/.../...mp4 Plex doesn't like it.
Thanks.