2008-09-15 32 views
7

내 웹 사이트에서 FLV 파일 (일부)와 같은 웹캠 녹음에 참여하고 싶습니다. 이것은 사용자 입력없이 Linux에서 수행되어야합니다. 어떻게해야합니까? 간단히하기 위해, 동일한 입력을 두 번 입력하면 동일한 flv가 두 번 연속 재생되는 flv를 얻을 수 있습니다.웹캠에 합류하는 방법 FLV

충분히 쉬워야합니다. 맞습니까? ffmpeg FAQ에는 전체 코드 예도 있습니다.

음, 파이프가 Leopard와 우분투 8.04를 실행하는 Mac에서 문제가되는 것 같습니다. 그래서 간단하게 유지하고 일반 파일을 사용합시다. 또한 15fps의 속도를 지정하지 않으면 시각적 부분이 extremely fast으로 재생됩니다. 예제 스크립트는 이렇게된다 :

ffmpeg -i input.flv -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 \ 
    - > temp.a < /dev/null 
ffmpeg -i input.flv -an -f yuv4mpegpipe - > temp.v < /dev/null 
cat temp.v temp.v > all.v 
cat temp.a temp.a > all.a 
ffmpeg -f u16le -acodec pcm_s16le -ac 2 -ar 44100 -i all.a \ 
    -f yuv4mpegpipe -i all.v -sameq -y output.flv 

음,이를 사용하면 오디오 작동하지만 난 단지 주변의 영상을 처음으로 구매하십시오. 이것은 red5와 함께 제공되는 영화 티저를 포함하여 input.flv로 던지는 모든 FLV의 경우 인 것으로 보입니다.

) 예를 들어 스크립트가 광고로 작동하지 않는 이유는 무엇입니까? 특히 내가 기대하는 모든 동영상을받지 못하는 이유는 무엇입니까?

b) 왜 Wimpy 플레이어가 flv를 적절한 속도로 재생할 수있는 동안 프레임 속도를 지정해야합니까?

두 개의 flv를 결합한 유일한 방법은 mencoder를 사용하는 것이 었습니다.

mencoder input.flv input.flv -o output.flv -of lavf -oac copy \ 
-ovc lavc -lavcopts vcodec=flv 

나는 부동 소수점 예외가 ...

MEncoder 1.0rc2-4.0.1 (C) 2000-2007 MPlayer Team 
CPU: Intel(R) Xeon(R) CPU 5150 @ 2.66GHz (Family: 6, Model: 15, Stepping: 6) 
CPUflags: Type: 6 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1 
Compiled for x86 CPU with extensions: MMX MMX2 SSE SSE2 

success: format: 0 data: 0x0 - 0x45b2f 
libavformat file format detected. 
[flv @ 0x697160]Unsupported audio codec (6) 
[flv @ 0x697160]Could not find codec parameters (Audio: 0x0006, 22050 Hz, mono) 
[lavf] Video stream found, -vid 0 
[lavf] Audio stream found, -aid 1 
VIDEO: [FLV1] 240x180 0bpp 1000.000 fps 0.0 kbps (0.0 kbyte/s) 
[V] filefmt:44 fourcc:0x31564C46 size:240x180 fps:1000.00 ftime:=0.0010 
** MUXER_LAVF ***************************************************************** 
REMEMBER: MEncoder's libavformat muxing is presently broken and can generate 
INCORRECT files in the presence of B frames. Moreover, due to bugs MPlayer 
will play these INCORRECT files as if nothing were wrong! 
******************************************************************************* 
OK, exit 
Opening video filter: [expand osd=1] 
Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1 
========================================================================== 
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family 
Selected video codec: [ffflv] vfm: ffmpeg (FFmpeg Flash video) 
========================================================================== 
audiocodec: framecopy (format=6 chans=1 rate=22050 bits=16 B/s=0 sample-0) 
VDec: vo config request - 240 x 180 (preferred colorspace: Planar YV12) 
VDec: using Planar YV12 as output csp (no 0) 
Movie-Aspect is undefined - no prescaling applied. 
videocodec: libavcodec (240x180 fourcc=31564c46 [FLV1]) 
VIDEO CODEC ID: 22 
AUDIO CODEC ID: 10007, TAG: 0 
Writing header... 
[NULL @ 0x67d110]codec not compatible with flv 
Floating point exception 

C) mencoder가 제대로 인코딩 된 FLV를 디코딩 할 수있는 방법이 있나요 : 문제는 mencoder는 FLV 형식에 가입하지 않는 것입니까? 가)

ffmpeg -i input.flv -vcodec rawvideo -acodec pcm_s16le -r 15 file.avi 
mencoder -o output.avi -oac copy -ovc copy -noskip file.avi file.avi 
ffmpeg -i output.avi output.flv 

D :

그래서 내가하여 FLV 가입 지금까지 찾은 유일한 방법은 에이 비스에 가입 FLV 및 AVI 사이를왔다 갔다 할 수는 FFmpeg을 사용하고 mencoder를 사용하는 것입니다 이걸 성취하는 더 좋은 방법 이군. 어느 쪽 이냐?

e) 그러나 프레임 속도 문제로 인해 (예 : facebook을 통해 기록한 것과 같이) 일정한 프레임 속도를 가진 flv 만 올바르게 avis로 변환되지만 flv에는 작동하지 않습니다. 녹음 (예 : this one 또는 this one). 이 flv에도이 작업을 수행 할 수있는 방법이 있습니까?

도움이 될 것입니다.

+0

은 mencoder에서 0으로 나눕니다. – rogerdpack

답변

4

루비에서 다시 작성하는 것이 좋은 학습 방법이라고 생각했습니다.

6 개월 후 그리고 세 개의 보석, here's the released product.

저는 아직 조금씩 작업하고 있지만 작동합니다.

0

대부분의 비디오 및 오디오 형식 (특히 일반 컨테이너)은 "글로벌 헤더"를 사용하므로 파일의 시작 부분에 압축 정보 (예 : 너비 , 높이 등)을 지정합니다. 2 개의 스트림을 병합하는 것은 분명히 실패합니다. 이제는 하나가 아닌 두 개의 헤더가 있고 muxer는 이것을 좋아하지 않을 수 있습니다. mencoder에 AVI를 연결하는 코드가 있기 때문에 AVI로 변환하면 문제가 해결 될 것입니다.이 코드는 헤더 문제를 올바르게 처리합니다.이 실제로 작동하지만,이 명령을 사용하려고한다면

+0

"연결"대신 "결합"을 사용하도록 텍스트를 편집했습니다. –

-2

몰라 :이 아마 명령 사용을 실행 한 후 메타 정보를하므로 손상 될 수

cat yourVideos/*.flv >> big.flv 

을 "flvtool"에 (루비 스크립트는 당신이 구글에서 그것을 찾을 수 있습니다) 그것을 고쳐라.

+0

Dark Shikari가 지적했듯이이 기능은 작동하지 않습니다. 메타 데이터 정보는 재설정 될 수 있지만 결과 파일을 손상시키는 추가 헤더가있을 수 있습니다. 여분의 헤더를 건너 뛰더라도 오디오 및 비디오 블록에는 타임 스탬프가 필요합니다. –

0

mencoder의 메일 링리스트에 내 질문을 게시 한 후 다른 일을 시도하면서 직접 도구를 작성했습니다. flvtool부터 시작하여 코드를 파고 약 40 줄의 코드를 작성한 후에도 품질이 저하되지 않고 작동합니다 (트랜스 코딩이 없기 때문에).

나는 그것을 최대한 빨리 공개하겠습니다. 관심이있는 분은 저에게 연락하실 수 있습니다.

+2

40 줄을 질문에 추가하고 닫으십시오. – bzlm

+0

또는 더 나은 방법으로, <선호하는 오픈 소스 저장소를 여기에 삽입하십시오>에 대한 프로젝트를 시작하십시오. – Jacob

+0

내 대답에 '대답을 수락 할 수 없으므로이 질문을 어떻게 닫을 수 있을지 모르겠다 ...' –