I am trying to transcode and stream to my PS3 using mencoder with CoreAVC. Sound plays on the TV but the picture is black. I like to think I've done my due diligence research but I'm getting pretty frustrated at this point. Any help would be great. I understand that CoreAVC will only help with the decoding of the original video but at least that task is offloaded to the GPU.
Troubleshooting info
Specs: AMD Athlon 64 X2 4800+, 4gigs ram, NVidia GTX560, Windows 7 x64 Ultimate
Render Device: PS3
Network: (wired) PC -> gigabit switch -> PS3
Transcoder: Mencoder
Software:
CoreAVC 3.0.1
AVISynth 2.6a3
PMS 1.52.1 (build 4c7410179)
NVIDIA 296.10
Java 1.7.0_03
Background:
When I try to play an appropriate video with Windows Media Player 12, my CoreAVC is activated and kicks into CUDA mode (icon turns green). CPU usage is low and the video plays fine. So I'm sure that it is installed correctly for windows at least. I even checked it loading in GraphStudio.
Problem:
I want to stream to my PS3 using the Mencoder engine with the "-vc coreavcwindows" option. I'll use this for subtitled videos and use tsMuxeR for others. I have created a custom codec specific rule in the Mencoder options ( vcodec == h264 :: -vc coreavcwindows ) to watch for h264 content and insert that flag. I have also copied the CoreAVCDecoder.ax file into the PS3 Media Server\win32\codecs directory.
I can see that working as I can see it in the debug.log file:
- Code: Select all
DEBUG 2012-04-12 17:31:35.751 [mencoder.exe-3] Starting "C:\Program Files (x86)\PS3 Media Server\win32\mencoder.exe" -ss 0 -quiet "a.h264.1080.mkv" -quiet -quiet -nosound -nosound -of rawvideo -quiet -quiet -mpegopts format=mpeg2:muxrate=500000:vbuf_size=1194:abuf_size=64 -ovc lavc -channels 6 -lavdopts debug=0:threads=2 -lavcopts autoaspect=1:vcodec=mpeg2video:acodec=ac3:abitrate=640:threads=2:keyint=5:vqscale=1:vqmin=1:vrc_maxrate=254000:vrc_buf_size=7000 -quiet -quiet -subdelay 20000 -quiet -quiet -ofps 24000/1001 -quiet -quiet -lavdopts fast -vc coreavcwindows -mc 0 -noskip -o \\.\pipe\1334244695744ffmpegvideo
if I take that and run it in the command line (after changing the -o location) I get the following:
- Code: Select all
MEncoder SB29 (C) 2000-2012 MPlayer Team
Custom build by SubJunk, http://www.spirton.com
success: format: 0 data: 0x0 - 0x17db4b5d
libavformat version 54.3.100 (internal)
libavformat file format detected.
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (dca), -aid 0, -alang eng
[lavf] stream 2: subtitle (text), -sid 0, -slang eng
VIDEO: [H264] 1920x1080 0bpp 23.976 fps 0.0 kbps ( 0.0 kbyte/s)
[V] filefmt:44 fourcc:0x34363248 size:1920x1080 fps:23.976 ftime:=0.0417
libavcodec version 54.12.100 (internal)
Opening video filter: [expand osd=1]
Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1
==========================================================================
Forced video codec: coreavcwindows
Opening video decoder: [dshow] DirectShow video codecs
Decoder supports the following YUV formats: YUY2 UYVY YV12 I420
Decoder is capable of YUV output (flags 0x2b)
[PP] Using codec's postprocessing, max q = 4.
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
videocodec: libavcodec (1920x1080 fourcc=3267706d [mpg2])
[VE_LAVC] Using constant qscale = 1.000000 (VBR).
VideoDecoder::SetExtAttr: registry failure
Selected video codec: [coreavcwindows] vfm: dshow (CoreAVC H.264 for x86)
==========================================================================
At this point the CoreAVC icon does show up but it stays blue (ie no CUDA). Mencoder runs and the video file produced also just has a black picture. I'm using a file without subtitles for testing here so I don't think there is any VSFilter issue (although Mencoder doesn't use VSFilter itself?).
The situation is similar when I try to play from the PS3. I select Mencoder in the #Transcode# folder. The video begins playing with sound but only a black screen. If I go back to my PC I can see the CoreAVC Icon but it is blue/non-CUDA.
I have attached the Trace and debug.log output to the post.
I don't want to use Avisynth/Mencoder as I think it is impossible to pass through DTS and other audio in the resulting stream. I have an AV Receiver linked to the PS3 that it passes off the audio decoding to via HDMI. Avisynth also produces video stutter (I've tried 2.5.7 (won't play), 2.5.8(stutters), and 2.6a3(stutters) ) so it's not really an option for me.
What am I missing or making assumptions about?
I have also tried placing the dsnative.dll from another mplayer distribution in the mencoder.exe folder out of pure optimism ... but that didn't seem to make a difference.
Any help would be great.
Thank you
