2011-11-01 7 views
0

이 질문이있는 경우 사과드립니다. 나는 그것을 발견 할 수 없었다. 그러나 그것이 있으면, 알려주세요. 그리고 이것을 닫을 것입니다.FFMPEG - 예상 한 결과를 제공하지 못하는 비디오 필터 스케일

원본 크기가 480x360이고 목표 크기가 400x300 인 간단한 크기의 비디오를 시도하고 있습니다. 비디오는 FLV로 시작하여 결국 MPEG로 끝나야합니다. 나는이 작업을 수행하려면 다음 명령 줄을 사용하고 있습니다 : 나는 MPEG Streamclip에서 스케일링 동영상을 재생할 때

ffmpeg -i user.flv -vf "scale=400:300" user_scaled.mpg 

는, 규모는 정확하고 비디오 정보는 크기가 400x300입니다 것을 보여줍니다. 그러나 Quicktime에서 크기 조정 된 비디오를 재생하면 비디오 크기가 478x359로 조정됩니다. 더욱 중요한 것은 FFMPEG 자체가 비디오를 478x359로 간주하므로 앞으로 실행되는 모든 명령 (트리밍, 변환, 오버레이 등)은 478x359의 비디오가됩니다.

초기 워크 플로에서 FLV에서 MPEG 로의 변환이 필요했지만 동일한 결과로 여러 가지 다양한 포맷으로 재생하려고했습니다 (FLV -> FLV, FLV -> MPEG, MPEG -> MPEG 등). . MPEG로 끝날 수만 있다면이 스케일링 작업을 수행하는 데 필요한 많은 단계와 변환을 처리 할 수 ​​있습니다.

아래와 같이 명령 줄 출력을 붙여 넣습니다. 원하는 경우 샘플 입력 비디오도 아래에 링크되어 있습니다. 어떤 도움을 주셔서 대단히 감사합니다.

http://www.monkeydriver.com/dpassera/stack_flv.zip

명령 줄 출력 :

ffmpeg -i user.flv -vf "scale=400:300" user_scaled.mpg 

ffmpeg version 0.7-rc1, Copyright (c) 2000-2011 the FFmpeg developers 
    built on May 21 2011 22:13:19 with gcc 4.1.2 20080704 (Red Hat 4.1.2-50) 
    configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 
--mandir=/usr/share/man --incdir=/usr/include --disable-avisynth 
--extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions 
-fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' 
--enable-avfilter --enable-libdirac --enable-libgsm --enable-libmp3lame 
--enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 
--enable-gpl --enable-postproc --enable-pthreads --enable-shared 
--enable-swscale --enable-vdpau --enable-version3 --enable-x11grab 
--disable-yasm --enable-filters --enable-filter=movie 

    libavutil 50. 40. 1/50. 40. 1 
    libavcodec 52.120. 0/52.120. 0 
    libavformat 52.108. 0/52.108. 0 
    libavdevice 52. 4. 0/52. 4. 0 
    libavfilter 1. 77. 0/1. 77. 0 
    libswscale 0. 13. 0/0. 13. 0 
    libpostproc 51. 2. 0/51. 2. 0 

[flv @ 0x11dd3b30] Estimating duration from bitrate, this may be inaccurate 
Input #0, flv, from 'user.flv': 

    Metadata: 
    duration  : 5 
    videocodecid : 2 
    audiocodecid : 6 
    canSeekToEnd : true 
    createdby  : FMS 4.0 
    creationdate : Mon Oct 31 11:43:44 2011 

    Duration: 00:00:04.62, start: 0.000000, bitrate: N/A 
    Stream #0.0: Video: flv, yuv420p, 640x480, 1k tbr, 1k tbn, 1k tbc 
    Stream #0.1: Audio: nellymoser, 44100 Hz, mono, s16 

[buffer @ 0x11ddc950] w:640 h:480 pixfmt:yuv420p 

[scale @ 0x11dda610] w:640 h:480 fmt:yuv420p -> w:400 h:300 fmt:yuv420p flags:0xa0000004 

[mpeg @ 0x11dd6bd0] VBV buffer size not set, muxing may fail 

Output #0, mpeg, to 'user_scaled.mpg': 
    Metadata: 
    duration  : 5 
    videocodecid : 2 
    audiocodecid : 6 
    canSeekToEnd : true 
    createdby  : FMS 4.0 
    creationdate : Mon Oct 31 11:43:44 2011 
    encoder   : Lavf52.108.0 

    Stream #0.0: Video: mpeg1video, yuv420p, 400x300, q=2-31, 200 kb/s, 90k tbn, 60 tbc 

    Stream #0.1: Audio: mp2, 44100 Hz, mono, s16, 64 kb/s 

Stream mapping: 
Stream #0.0 -> #0.0 
Stream #0.1 -> #0.1 

Press [q] to stop encoding 
frame= 230 fps= 0 q=10.2 size=  366kB time=3.82 bitrate= 785.6kbits/s dup=175 drop=0 
frame= 267 fps= 0 q=10.7 Lsize=  412kB time=4.43 bitrate= 761.3kbits/s dup=203 drop=0  

video:370kB audio:36kB global headers:0kB muxing overhead 1.568959% 
+0

모두 괜찮아요. 'ffprobe -show_streams user_scaled.mpg'의 결과는 무엇입니까? – blahdiblah

+0

안녕하세요. 이것 좀 봐 줘서 고마워. 전체 출력물을 붙여 넣기에는 너무 길기 때문에 http://monkeydriver.com/docs/ffprobe_output.rtf의 텍스트 문서에 넣었습니다. 다음은 치수가 언급 된 출력에서 ​​발췌 한 것입니다. 희망자 : 'input_0, mpeg, from 'user_scaled.mpg': ... 스트림 # 0.0 [0x1e0] : 동영상 : mpeg1video, yuv420p, 400x300 [PAR 1 : 1 DAR 4 : 3], 104857 kb/s, 60fps, 60tbr, 90k tbn, 60 tbc ... [STREAM] 인덱스 = 0 codec_name = mpeg1video codec_long_name = MPEG-1 비디오 codec_type = 동영상 codec_time_base = 60분의 1 codec_tag_string = [0] [0] [0] [0] codec_tag = 폭 0000 = 400 height = 300' – dpassera

+0

'ffprobe -show_format' (모든 중요한 ffmpeg 프리앰블이 아닌'[FORMAT]'태그 사이의 비트 만이 출력됩니다. 컨테이너 포맷팅에 문제가 있다면'-s 400x300'을 던져 볼 수도 있습니다. – blahdiblah

답변

4

치아의 많은 갊이 있으리라 후, 나는 문제가 퀵타임 함께 할 수는 FFmpeg와는 아무하고, 모든이 없다 생각합니다.

Quicktime Player (10.1 (501.5))는 비디오를 창의 크기와 일치하도록 조정하고 최소 창 크기를가집니다. 따라서 실제 비디오 크기에 상관없이 Quicktime은 360도까지 480 배로 확장 할 것입니다. 따라서 정보 디스플레이는 "포맷"섹션 (실제 크기)에 크기 정보가 있지만 "현재 크기"섹션도 있습니다. 창 크기를 변경하면 해당 번호가 변경됩니다.

fflmpeg를 사용하여 -vf scale 또는 -s 중 하나를 사용하여 비디오를 조정하지만 Quicktime Player가 올바른 크기로 표시되도록 신뢰하지 않습니다. 매우 유용한 대안으로 VLC을 추천합니다.

+0

감사합니다. 그렇게 단순하지만, 그것은 나를 도왔습니다. – dpassera