On Mon, Mar 23, 2009 at 11:00 AM, Duncan Webb <dun...@freevo.org> wrote:
> Art S R wrote:
>> On Fri, Mar 20, 2009 at 2:32 PM, Art S R <arty94...@gmail.com> wrote:
>>> On Fri, Mar 20, 2009 at 12:15 PM, Duncan Webb <dun...@freevo.org> wrote:
>>>> Art S R wrote:
>>>>> After much befuddlement and frustration, I've finally resolved this
>>>>> problem.  I went back to earlier versions of mplayer.py in svn until I
>>>>> found the latest version that would work displaying live TV (10609)
>>>>> and did a diff with the version I was using from Freevo 1.8.3 to see
>>>>> if I could figure out what's causing the recent versions to not work.
>>>>> After much more tracing, I located the problem here:
>>>>>
>>>>> 240        #command = self.sort_filter(command)
>>>>> 241
>>>>> 242        command += ['%(url)s' % args]
>>>>> 243
>>>>> 244        _debug_(' '.join(command[1:]))
>>>>> 245
>>>>> 246        self.mode = mode
>>>>>
>>>>> Although the debug statement in line 244 was showing the correct
>>>>> mplayer command in my log:
>>>>>
>>>>> /usr/bin/mplayer -slave -vo xv,sdl,x11, -ao oss:/dev/dsp -autosync 100
>>>>> -nolirc -nojoystick -autoq 100 -screenw 800 -screenh 600 -fs -nocache
>>>>> tv:// -tv 
>>>>> driver=v4l2:freq=55.250:device=/dev/video0:input=0:norm=NTSC:width=640:height=480:outfmt=yuy2
>>>> Well good work to track down this problem, thanks for this.
>>>>
>>>> All ' '.join(command[1:] does is to convert the command list to a string
>>>> for printing.
>>>>
>>>> You can change the _debug_ statement to:
>>>> _debug_('%r' % (command,))
>>>> and this will be printed exactly and represented as a list.
>>>>
>>>> What is possible is that the arguments are not correct in the list; may
>>>> be one has a space in it when it shouldn't have. Would you please make
>>>> this change and post the resulting command, thanks?
>>>>
>>>> The difference between a list and a string when passed to subprocess is
>>>> that lists are executed directly and strings are executed through a
>>>> sub-shell. With lists there is no need to quote arguments as each
>>>> argument is in a list item. With strings arguments with spaces need to
>>>> be quoted. Lists will start marginally faster and use a bit less memory
>>>> as there is no extra shell being spawned.
>>>>
>>>> Duncan
>>>>
>>> Well, this is interesting.  The syntax of the mplayer command is
>>> identical whether it's a string or a list:
>>>
>>> Running (list) '/usr/bin/mplayer -slave -vo xv,sdl,x11, -ao
>>> oss:/dev/dsp -autosync 100 -nolirc -nojoystick -autoq 100 -screenw 800
>>> -screenh 600 -fs -nocache tv:// -tv
>>> driver=v4l2:freq=55.250:device=/dev/video0:input=0:norm=NTSC:width=640:height=480:outfmt=yuy2
>>> ' with pid 19221 priority -20
>>>
>>> Running (str) '/usr/bin/mplayer -slave -vo xv,sdl,x11, -ao
>>> oss:/dev/dsp -autosync 100 -nolirc -nojoystick -autoq 100 -screenw 800
>>> -screenh 600 -fs -nocache tv:// -tv
>>> driver=v4l2:freq=55.250:device=/dev/video0:input=0:norm=NTSC:width=640:height=480:outfmt=yuy2'
>>> in shell with pid 21625 priority 0
>>>
>>> However, running as a list does not work using either the original
>>> "_debug_(' '.join(command[1:]))" or the revised "_debug_('%r' %
>>> (command,))" statement.  On the other hand, when the string is passed
>>> to a shell, the TV program comes in loud and clear.
>>>
>>> Art S R
>>>
>>
>> A couple of other observations, this time from mplayer's perspective.
>> When the watch TV command is passed as a string (the "good" scenario),
>> my mplayer-stdout*.log shows the following entries for the TV program
>> being watched:
>>
>> Playing tv://.
>> TV file format detected.
>> Selected driver: v4l2
>>  name: Video 4 Linux 2 input
>>  author: Martin Olschewski <olschew...@zpr.uni-koeln.de>
>>  comment: first try, more to come ;-)
>> Selected device: BT878 video (Hauppauge (bt878))
>>  Tuner cap:
>>  Tuner rxs: MONO
>>  Capabilites:  video capture  video overlay  VBI capture device  tuner
>>  read/write  streaming
>>  supported norms: 0 = NTSC; 1 = NTSC-M; 2 = NTSC-M-JP; 3 = NTSC-M-KR;
>> 4 = PAL; 5 = PAL-BG; 6 = PAL-H; 7 = PAL-I; 8 = PAL-DK; 9 = PAL-M; 10 =
>> PAL-N; 11 = PAL-Nc; 12 = PAL-60; 13 = SECAM; 14 = SECAM-B; 15 =
>> SECAM-G; 16 = SECAM-H; 17 = SECAM-DK; 18 = SECAM-L; 19 = SECAM-Lc;
>>  inputs: 0 = Television; 1 = Composite1; 2 = S-Video; 3 = Composite3;
>>  Current input: 0
>>  Current format: YVU420
>> v4l2: current audio mode is : MONO
>> ==========================================================================
>> Opening video decoder: [raw] RAW Uncompressed Video
>> VDec: vo config request - 640 x 480 (preferred colorspace: Packed YUY2)
>> VDec: using Packed YUY2 as output csp (no 0)
>> Movie-Aspect is undefined - no prescaling applied.
>> VO: [xv] 640x480 => 640x480 Packed YUY2  [fs]
>> Selected video codec: [rawyuy2] vfm: raw (RAW YUY2)
>> ==========================================================================
>>
>> Additionally, mplayer-stderr*.log has no log entries.
>>
>> However, when the watch TV command is passed as a list (the "bad"
>> scenario), the following differences from the above are noted in
>> mplayer-stdout*.log:
>>
>> Playing tv:// -tv
>> driver=v4l2:freq=55.250:device=/dev/video0:input=0:norm=NTSC:width=640:height=480:outfmt=yuy2
>> .
>>
>> VDec: vo config request - 640 x 480 (preferred colorspace: Planar YV12)
>> VDec: using Planar YV12 as output csp (no 0)
>>
>> VO: [xv] 640x480 => 640x480 Planar YV12  [fs]
>> Selected video codec: [rawyv12] vfm: raw (RAW YV12)
>>
>> Additionally, mplayer-stderr*.log has the following entries:
>>
>> Option stream url: This URL doesn't have a port part.
>> The filename option must be an integer:
>> dev/video0:input=0:norm=NTSC:width=640:height=480:outfmt=yuy2
>> Struct tv, field filename parsing error:
>> dev/video0:input=0:norm=NTSC:width=640:height=480:outfmt=yuy2
>>
>> These errors in mplayer-stderr*.log were previously reported in the
>> threads entitled, "Problem With Change channel TV" (Sept. 2008) and
>> "tv.mplayer can not change channel" (Dec. 2008).
>>
>> Hope this additional information is helpful in diagnosing the
>> differences in behavior when the command is launched from a list
>> instead of from a string in a shell.
>
> Changing the debug to print the list instead of the string will help, it
> should show something like this:
>
> ['/usr/bin/mplayer', '-slave', '-vo', 'xv,sdl,x11,', '-ao',
> 'oss:/dev/dsp', '-autosync 100', '-nolirc', '-nojoystick', '-autoq',
> '100', '-screenw', '800', '-screenh', '600', '-fs', '-nocache', 'tv://',
> '-tv',
> 'driver=v4l2:freq=55.250:device=/dev/video0:input=0:norm=NTSC:width=640:height=480:outfmt=yuy2'
> ]
>
> Where each argument is a quoted string separated by a comma. My guess is
> that one of the string is like: 'tv:// -tv' so it is treated as a single
> argument and so gives a error.
>
> Duncan
>

OK, here's the list:

['--prio=-20', '/usr/bin/mplayer', '-slave', '-vo', 'xv,sdl,x11,',
'-ao', 'oss:/dev/dsp', '-autosync', '100', '-nolirc', '-nojoystick',
'-autoq', '100', '-screenw', '800', '-screenh', '600', '-fs',
'-nocache', 'tv:// -tv
driver=v4l2:freq=55.250:device=/dev/video0:input=0:norm=NTSC:width=640:height=480:outfmt=yuy2
']

------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
Freevo-users mailing list
Freevo-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freevo-users

Reply via email to