2017-11-22 13 views
0

단일 카메라에서 TCL 스크립트가 올바르게 작동합니다. TCL 스크립트는 다음과 같다 :TCL 스크립트가 Windows 7 플랫폼에서 여러 대의 카메라로 작동하지 않습니다.

proc liveStreaming {} { 

    #open the config file. 
    set f [open "C:/main/video_config.txt" r] 

    #To retrive the values from the config file. 
    while {![eof $f]} { 
     set part [split [gets $f] "="] 
     set props([string trimright [lindex $part 0]]) [string trimleft [lindex $part 1]] 
    } 
    close $f 

    #camera selection to live streaming. 
    set camera "video" 
    append cctv $camera "=" $props(cctv) 

    #ffmpeg command to capture live streaming in background 
    exec ffmpeg -f dshow -s 1280x720 -i $cctv c:/test/sample.avi >& c:/test/temp.txt & 

} 
liveStreaming 

//above code is to capture video using ffmpeg and tcl. 

"video_config"내 텍스트 파일은 다음과 같다 :

cctv=Logitech HD Webcam C525 

은, 내가 그것을 여러 카메라로 실행하려는 : 텍스트 파일은 다음과 같이해야합니다 :

cctv=Integrated Webcam,Logitech HD Webcam C525 

문제는 ","(쉼표), 내 TCL 스크립트 (,) 혼수 상태를 예측 할 수없는 것입니다. 어느 누구도 혼수 상태를 예측할 수있는 적절한 TCL 스크립트를 제공 할 수 있으므로 내 TCL 스크립트는 여러 대의 카메라에서 작동 할 수 있습니다.

오류 보고서 :

ffmpeg version N-89127-g8f4702a93f Copyright (c) 2000-2017 the FFmpeg developers 
 
    built with gcc 7.2.0 (GCC) 
 
    configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-cuda --enable-cuvid --enable-d3d11va --enable-nvenc --enable-dxva2 --enable-avisynth --enable-libmfx 
 
    libavutil  56. 0.100/56. 0.100 
 
    libavcodec  58. 3.103/58. 3.103 
 
    libavformat 58. 2.100/58. 2.100 
 
    libavdevice 58. 0.100/58. 0.100 
 
    libavfilter  7. 2.100/7. 2.100 
 
    libswscale  5. 0.101/5. 0.101 
 
    libswresample 3. 0.101/3. 0.101 
 
    libpostproc 55. 0.100/55. 0.100 
 
[dshow @ 05944ac0] Could not find video device with name [Integrated Webcam,Logitech HD Webcam C525] among source devices of type video. 
 
video=Integrated Webcam,Logitech HD Webcam C525: I/O error

+1

실제 문제가 무엇입니까? 오류 메시지가 있다면 무엇입니까? 나는 "내 TCL 스크립트가 혼수 상태 (,)를 예측할 수 없다"라는 구문을 분석하지 못했습니다. – kostix

+0

@kostix 오류 roport를 업로드했습니다. 실제로 문제는 TCL 스크립트를 사용하는 while 루프에서의 코드 리턴이 텍스트 파일에 전달 된 (,) 코마 상태를 예측할 수 없다는 것입니다. –

+0

그래서'ffmpeg'는 시스템에 "Integrated Webcam, Logitech HD Webcam C525"라는 웹캠을 찾을 수 없다는 것을 알려줍니다. obviosly, 그것은 장치 목록을 허용하지 않습니다. 필자는 장치 목록을 가져 와서 ffmpeg의 사본을 여러 개 만들어야한다고 생각한다. – kostix

답변

0

당신은 foreach 루프를 사용하여, 다른 split 이것을 달성 할 수

proc liveStreaming {} { 

    #open the config file. 
    set f [open "C:/main/video_config.txt" r] 

    #To retrive the values from the config file. 
    while {![eof $f]} { 
     set part [split [gets $f] "="] 
     set props([string trimright [lindex $part 0]]) [string trimleft [lindex $part 1]] 
    } 
    close $f 

    #camera selection to live streaming. 

    # let cams be the list of available cameras 
    set cams [split $props(cctv) "," ] 
    set idx 0 

    # for each camera in cameras list  
    foreach cam cams { 
     set cctv "video=$cam" 

     #ffmpeg command to capture live streaming in background 
     exec ffmpeg -f dshow -s 1280x720 -i $cctv "c:/test/sample-$idx.avi" >& "c:/test/temp-$idx.txt" &  

     # create a new index (to prevent two cameras to create the same file) 
     incr idx 
    } 
} 
liveStreaming