이 질문이있는 경우 사과드립니다. 나는 그것을 발견 할 수 없었다. 그러나 그것이 있으면, 알려주세요. 그리고 이것을 닫을 것입니다.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%
모두 괜찮아요. 'ffprobe -show_streams user_scaled.mpg'의 결과는 무엇입니까? – blahdiblah
안녕하세요. 이것 좀 봐 줘서 고마워. 전체 출력물을 붙여 넣기에는 너무 길기 때문에 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
'ffprobe -show_format' (모든 중요한 ffmpeg 프리앰블이 아닌'[FORMAT]'태그 사이의 비트 만이 출력됩니다. 컨테이너 포맷팅에 문제가 있다면'-s 400x300'을 던져 볼 수도 있습니다. – blahdiblah