컴퓨터에서 OGV 형식이 제대로 재생되지만 코드 변환이 끊어집니다 (중복?).


11

우분투 12.10에서 recordmydesktop을 사용하여 일련의 스크린 캐스트를 만들었습니다. 출력은 ogv 파일입니다. 기본 영화 플레이어 (토템)를 사용하여 ogv 파일을 볼 때 오디오와 비디오가 동기화되어 있습니다. (나 또는 유튜브에 의해) 트랜스 코딩 될 때 오디오와 비디오가 동기화되지 않습니다. 내레이션하는 동안 슬라이드를 두 번 건너 뛰는 것 같습니다.

최신 정보

코드 변환 중에 중복 프레임을 삭제하는 것으로 문제의 특성이 더 적절하다고 생각됩니다. 마우스가 움직이는 곳에서 비디오를 변환하면 정상적으로 작동하는 것 같습니다. 그러나 슬라이드 도중에 말하면 중복 프레임이 삭제됩니다.

나는 이것을 보았지만 그것은 내 상황이 아니다 (ogv에서 이동하려고 시도-> 아무것도) /superuser/436187/ffmpeg-convert-video-w-dropped-frames-out-of-sync

AVI 파일이 올바르게 번역 된 것 같습니다! 나는 이것이 누군가에게 큰 힌트가 될 것이라고 생각합니다. 여전히 근본적인 문제를 추적하고 싶습니다. 이전 비디오를 AVI로 변환하는 것을 테스트하고 있지만 각 전환을 확인해야하기 때문에 시간이 걸립니다.

이것은 gtk-recordmydesktop의 원본 OGV 파일입니다 : http://dl.dropbox.com/u/64693533/sync_test/sync_test1.ogv

비디오는 10 초 동안 슬라이드로 시작한 다음 각각 5 개씩 3 개의 슬라이드로 진행합니다. 슬라이드를 진행할 때마다 마이크도 탭합니다 (10, 15, 20, 25 초).

다음은 변환이 완료된 것입니다 (각 디스플레이는 자체 비디오 타이밍 문제입니다).

http://dl.dropbox.com/u/64693533/sync_test/sync_test1.mp4

  • 이것은 첫 번째 프레임의 첫 번째 슬라이드를 보여 주지만 빠르게지나갑니다.
  • 이것은 주식 ffmpeg를 사용하여 수행되었습니다

http://dl.dropbox.com/u/64693533/sync_test/sync_test1.ffmpeg-static.mp4

  • 이것은 꽤 가깝습니다-어떤 이유로 13s에서는 진전을 결정합니다.
  • 이것은 며칠 전에 ffmpeg의 정적 빌드를 사용하여 수행되었습니다.

여기 YouTube에 있습니다-약 13 초에 일찍 진행되는 것을 볼 수 있습니다 (슬라이드 1-> 슬라이드 2에서).

다음은 OGV 파일이 올바르게 작동한다는 증거입니다.

ffmpeg 번역

ffmpeg 또는 avconv를 사용하면 YouTube와 비슷한 결과를 얻는 것 같습니다 (전환이 초기에 발생하는 것처럼 보이지만 반드시 동일한 것은 아닙니다).

다음은 최근의 ffmpeg 정적 빌드와 함께 사용하는 명령과 출력입니다.

$ ~ / ffmpeg / ffmpeg -i JSP.ogv JSP.mp4
ffmpeg 버전 N-50025-gb8bb661 Copyright (c) 2000-2013 FFmpeg 개발자
  gcc 4.6 (Debian 4.6.3-1)으로 2013 년 2 월 17 일 05:23:03에 구축
  구성 : --prefix = / root / ffmpeg-static / 64bit --extra-cflags = '-I / root / ffmpeg-static / 64bit / include -static'--extra-ldflags = '-L / root / ffmpeg- static / 64bit / lib -static '--extra-libs ='-lxml2 -lexpat -lfreetype '--enable-static --disable-shared --disable-ffserver --disable-doc --enable-bzlib --enable -zlib --enable-postproc --enable-runtime-cpudetect --enable-libx264 --enable-gpl --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-gray --enable-libass- -enable-libfreetype --enable-libopenjpeg --enable-libspeex --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-version3 --enable-libvpx
  libavutil 52. 17.101 / 52. 17.101
  libavcodec 54. 91.103 / 54. 91.103
  libavformat 54. 63.100 / 54. 63.100
  libavdevice 54. 3.103 / 54. 3.103
  libavfilter 3. 38.100 / 3. 38.100
  libswscale 2. 2.100 / 2. 2.100
  libswresample 0. 17.102 / 0. 17.102
  libpostproc 52. 2.100 / 52. 2.100
[ogg @ 0x34d4640] 동일한 스트림에 대해 여러 개의 fisbone이 구현되지 않았습니다. FFmpeg 버전을 Git에서 최신 버전으로 업데이트하십시오. 문제가 계속 발생하면 파일에 구현되지 않은 기능이 있음을 의미합니다.
[ogg @ 0x34d4640] 스트림 0에 대한 헤더 구문 분석에 실패했습니다
[ogg @ 0x34d4640] 손상된 파일, 키 프레임이 올바르게 표시되지 않았습니다.
'JSP.ogv'에서 입력 # 0, ogg :
  지속 시간 : 00 : 12 : 49.67, 시작 : 0.000000, 비트 전송률 : 224 kb / s
    스트림 # 0 : 0 : 데이터 : 없음
    스트림 # 0 : 1 : 비디오 : theora, yuv420p, 1600x880 [SAR 1 : 1 DAR 20:11], 15fps, 15tbr, 15tbn, 15 tbc
    메타 데이터 :
      RECORDMYDESKTOP : 0.3.8.1
    스트림 # 0 : 2 : 오디오 : vorbis, 22050 Hz, 모노, fltp, 89 kb / s
SAR = 1 / 1을 사용하는 [libx264 @ 0x369c5e0]
CPU 기능을 사용하는 [libx264 @ 0x369c5e0] : MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
[libx264 @ 0x369c5e0] 프로파일 높음, 레벨 4.0
[libx264 @ 0x369c5e0] 264-코어 129 r2230 1cffe9f-H.264 / MPEG-4 AVC 코덱-Copyleft 2003-2012-http://www.videolan.org/x264.html-옵션 : cabac = 1 ref = 3 deblock = 1 : 0 : 0 분석 = 0x3 : 0x113 me = hex subme = 7 psy = 1 psy_rd = 1.00 : 0.00 mixed_ref = 1 me_range = 16 chroma_me = 1 trellis = 1 8x8dct = 1 cqm = 0 deadzone = 21,11 fast_pskip = 크로마 1 개 weightp = 2 keyint = 250 keyint_min = 15 scenecut = 40 intra_refresh = 0 rc_lookahead = 40 rc = crf mbtree = 1 crf = 23.0 qcomp = 0.60 qpmin = 0 qpmax = 69 qpstep = 4 ip_ratio = 1.40 aq = 1 : 1.00
출력 # 0, mp4, 'JSP.mp4':
  메타 데이터 :
    인코더 : Lavf54.63.100
    스트림 # 0 : 0 : 비디오 : h264 ([33] [0] [0] [0] / 0x0021), yuv420p, 1600x880 [SAR 1 : 1 DAR 20:11], q = -1--1, 15360 tbn , 15 tbc
    메타 데이터 :
      RECORDMYDESKTOP : 0.3.8.1
    스트림 # 0 : 1 : 오디오 : aac ([64] [0] [0] [0] / 0x0040), 22050Hz, 모노, s16, 128kb / s
스트림 매핑 :
  스트림 # 0 : 1-> # 0 : 0 (theora-> libx264)
  스트림 # 0 : 2-> # 0 : 1 (vorbis-> libvo_aacenc)
[q]를 눌러 중지하고 [?]를 눌러 도움을 요청하십시오.
[ogg @ 0x34d4640] 손상된 파일, 키 프레임이 아닌 파일이 올바르게 표시되지 않았습니다.
    마지막 메시지가 2 번 반복됨
손상된 파일, 비키 프레임이 올바르게 표시되지 않았습니다. = 00 : 00 : 08.37 bitrate = 28.7kbits / s dup = 66 drop = 0    
손상된 파일, 키 프레임이 올바르게 표시되지 않았습니다. time = 00 : 00 : 51.01 bitrate = 125.3kbits / s dup = 675 drop = 0    
손상된 파일, 키 프레임이 올바르게 표시되지 않았습니다. time = 00 : 00 : 55.05 bitrate = 140.2kbits / s dup = 782 drop = 0    
손상된 파일, 키 프레임이 올바르게 표시되지 않음 time = 00 : 00 : 59.60 bitrate = 140.5kbits / s dup = 836 drop = 0    
[ogg @ 0x34d4640] 손상된 파일, 키 프레임이 올바르게 표시되지 않았습니다.
손상된 파일, 키 프레임이 올바르게 표시되지 않았습니다. time = 00 : 01 : 08.00 bitrate = 143.0kbits / s dup = 900 drop = 0    
손상된 파일, 키 프레임이 올바르게 표시되지 않았습니다. time = 00 : 01 : 11.86 bitrate = 141.6kbits / s dup = 910 drop = 0    

여러 번 반복되었습니다 ...

손상된 파일, 키 프레임이 올바르게 표시되지 않았습니다. time = 00 : 12 : 47.62 bitrate = 153.0kbits / s dup = 9087 drop = 0    
프레임 = 11521 fps = 87 q = -1.0 Lsize = 14849kB 시간 = 00 : 12 : 49.48 비트 전송률 = 158.1kbits / s dup = 9087 하락 = 0    
비디오 : 2401kB 오디오 : 12024kB 자막 : 0 글로벌 헤더 : 0kB 멀티플렉싱 오버 헤드 2.938094 %
[libx264 @ 0x369c5e0] 프레임 I : 49 평균 QP : 16.05 크기 : 29658
[libx264 @ 0x369c5e0] 프레임 P : 2912 평균 QP : 9.88 크기 : 114
[libx264 @ 0x369c5e0] 프레임 B : 8560 평균 QP : 12.76 크기 : 78
[libx264 @ 0x369c5e0] 연속 B 프레임 : 0.9 % 0.1 % 0.2 % 98.9 %
[libx264 @ 0x369c5e0] MB I I16..4 : 90.8 % 0.4 % 8.8 %
[libx264 @ 0x369c5e0] mb P I16..4 : 0.0 % 0.0 % 0.0 % P16..4 : 0.0 % 0.0 % 0.0 % 0.0 % 0.0 % 건너 뛰기 : 99.9 %
[libx264 @ 0x369c5e0] mb B I16..4 : 0.0 % 0.0 % 0.0 % B16..8 : 0.3 % 0.0 % 직접 : 0.0 % 건너 뛰기 : 99.7 % L0 : 65.3 % L1 : 34.6 % BI : 0.1 %
[libx264 @ 0x369c5e0] 8x8 변환 인트라 : 0.5 % 인터 : 15.8 %
[libx264 @ 0x369c5e0] 코딩 된 y, uvDC, uvAC 인트라 : 6.4 % 0.1 % 0.1 % 인터 : 0.0 % 0.0 % 0.0 %
[libx264 @ 0x369c5e0] i16 v, h, dc, p : 94 % 4 % 2 % 0 %
[libx264 @ 0x369c5e0] i8 v, h, dc, ddl, ddr, vr, hd, vl, hu : 19 % 22 % 44 % 1 % 2 % 2 % 3 % 1 % 6 %
[libx264 @ 0x369c5e0] i4 v, h, dc, ddl, ddr, vr, hd, vl, hu : 35 % 17 % 19 % 4 % 5 % 5 % 5 % 5 % 5 %
[libx264 @ 0x369c5e0] i8c dc, h, v, p : 100 % 0 % 0 % 0 %
[libx264 @ 0x369c5e0] 가중 P- 프레임 : Y : 0.0 % UV : 0.0 %
[libx264 @ 0x369c5e0] ref P L0 : 82.5 % 1.4 % 11.9 % 4.3 %
[libx264 @ 0x369c5e0] ref B L0 : 47.2 % 52.4 % 0.4 %
[libx264 @ 0x369c5e0] ref B L1 : 99.2 % 0.8 %
[libx264 @ 0x369c5e0] kb / s : 25.60

비디오는 여전히 일찍 진행되지만 다른 시간에 진행됩니다. gtk-recordmydesktop이 "깨진 파일"을 생성하는 것처럼 들립니다. 성가신 것은 OGV가 작동한다는 것이므로 몇 가지 옵션 으로이 작업을 수행 할 수 있어야합니다.

비디오를 kdenlive로 렌더링 할 수 있으며 거기서 작동하는 것 같습니다. 나는 아직도 무슨 일이 일어나고 있는지 알고 싶습니다. kdenlive는 훨씬 나은 작업을 수행하지만 때로는 여전히 일찍 진행됩니다.


2
ffmpeg 명령과 결과 콘솔 출력을 보여주십시오.
llogan

좋은 아이디어 @LordNeckbeard 명령과 출력을 추가했습니다. max_analyze_duration에 도달했습니다.
Amir T

ffmpeg 의 최근 정적 빌드 를 사용하면 문제가 계속 발생합니까 ? 이것은 최신 버전의 ffmpeg로 이미 수정 된 잠재적 버그를 배제합니다. 설치할 필요가 없습니다. 다운로드하여 아카이브를 추출한 다음 포함 된 ffmpeg바이너리 를 실행하십시오 .
llogan

문제를 재현 할 수있는 샘플 입력 파일을 제공 할 수 있습니까?
llogan

좋은 생각입니다. 작은 것을 들고 오늘 밤에 게시하겠습니다.
Amir T

답변:


4

최종 업로드가 YouTube에있을 때 왜 OGV로 변환합니까? 제가 잘못되었을 수도 있지만 Linux에서도 AAC Audio를 사용하여 x264 비디오 코덱으로 변환하고 YouTube에 업로드 할 수 있습니다. h264를 작성하고 OGV 파일 대신 YouTube에 업로드하여 문제가 있는지 확인해 보셨습니까? 그것이 해결되면 OGV가 YouTube에 업로드되는 데 문제가 있음을 알았을 것입니다. 그래도 해결되지 않으면 YouTube의 해석 또는 이와 유사한 것으로 프레임 속도 문제가 될 수 있습니다.

과거에 YouTube에 OGV 파일을 업로드 할 때 많은 문제가있었습니다. 나는이 시점에서도 100 % 고정되어 있다고 상상할 수 없다.

http://support.google.com/youtube/bin/answer.py?hl=ko&answer=1722171

편집 : 또한 원본 영상이 15fps임을 알았습니다 ...이 문제의 원인이 될 수 있습니다.

편집 2 : 나는 약간의 질문을 약간 읽은 것 같았습니다 ... 당신이 OGV 인 비디오 파일로 시작하고 있다는 것입니다 .MP4로 갈 것입니다 ... 이것은 조금 변경됩니다. .하지만 15fps 및 22050 Hz 오디오와 관련이 있다고 생각합니다 ... 샘플링 속도는 오디오 동기화와 관련이 없지만 비표준 프레임 속도 및 오디오 샘플 속도를 사용하는 경험에서는 나는 표류하는 것을 보았습니다 ... 저렴한 비디오 편집기를 사용하여 초기 녹화 후 편집 할 수는 없지만 동기화하기가 다소 어려울 수 있습니다 ...

소프트웨어가 오디오를 표류하는 데 익숙해졌지만 키 프레임 동기 점이 표준이 아니고 키 프레임 등을 반올림 할 수 있기 때문에 일반적이지 않은 프레임 속도 및 샘플링 속도를 사용할 때 여전히 일반적인 문제입니다.

"깨진 파일, 키 프레임이 올바르게 표시되지 않았습니다"라는 메시지가 표시됩니다. 그것이 그것이 말하는 것입니다 ...

당신에 대한 내 조언은 가능한 한 가깝게하고 비디오 편집기로 가져 와서 원하는 방식으로 일치하도록 오디오를 자르고 잘라내는 것입니다. 불행히도 때때로 이것은 어떻게 고쳐 지는가 ...

소프트웨어 기반 트랜스 코더가 항상 제대로 작동하지는 않습니다 ... 프로툴 설정 및 / 또는 열렬한 설정이 동기화 기능과 일정한 프레임 속도 등을 추가로 보장하기 위해 하드웨어와 함께 제공되는 이유는 무엇입니까?

시도 할 수있는 또 다른 것은 푸티지를 표준 프레임 레이트로 변환하고 오디오를 다시 분석하려고하는 것입니다 ... 비디오가 표류하고 있다고 확신합니다. 끝 또는 그 반대.

편집 :이 ffmpeg 명령을 사용하여 비디오를 원본과 동기화 할 수있었습니다 ... 내가 의심 한 rate 절이 필요할 수 있습니다.

ffmpeg -i sync_test1.ogv -strict experimental -pix_fmt yuv420p -r 15 -vcodec h264 -acodec aac sync_test1.mp4


원본 파일은 ogv 컨테이너의 Theora 비디오 및 Vorbis 오디오입니다. Amir T는 내가 아는 한이 형식으로 다시 인코딩하지 않지만 ffmpeg 또는 YouTube로 원본을 다시 인코딩하려고하면 동기화 문제가 나타납니다.
llogan

입력 형식은 gtk-recordmydesktop이 출력하는 ogv입니다. ogv (flv 등) 이외의 다른 것을 얻으려고합니다.
Amir T

내 업데이트 된 대답을 읽기 ... 나는 FPS의 문제라고 생각
크리스 제임스 Champeau

1
-r 15ffmpeg는 기본적으로 입력 프레임 속도를 상속하므로 결과 출력 파일 -r 15은 git head의 ffmpeg (버전 N-50285-gad89952)와 정확히 동일하므로 추가하는 것은 생략 하는 것과 같습니다. 구형 ffmpeg 버전을 사용하는 경우 회귀가 발생할 수 있으며 FFmpeg 버그 추적기에 보고해야합니다 .
llogan

1
난 당신이 FFMPEG에 버그로보고해야 @LordNeckbeard 함께 있으리라
크리스 제임스 Champeau

3

우분투 12.04.3 LTS에서 비슷한 문제로 어려움을 겪었습니다. http://johnvansickle.com/ffmpeg/ 에서 사용할 수있는 정적 ffmpeg 빌드를 사용하여 문제를 해결했습니다.


1
나는 또한 정적 빌드를 시도했지만 다소 나아졌습니다. 버그가 수정되었을 수 있습니다.이 경우 정적 빌드의 버전 번호를 답변에 추가하는 것이 도움이 될 수 있습니까?
Amir T

0

트랜스 코딩 대신 컨테이너를 avi로 변경하면 YouTube에서 더 잘 작동하는 것 같습니다.

ffmpeg -i JSP.ogv -vcodec copy -acodec copy JSP.avi

나는 이것을 시도했지만 업로드는 마치 OGV를 업로드하는 것처럼 처리를 끝내지 않습니다. 이 답변은 OGV를 수락하는 YouTube보다 먼저 사용되므로 변경해야합니다. ffmpeg는 여전히 4 년이 지난 후에도이 변환 문제를 겪고 있습니다.
mcr

내 ffpmeg은 다음과 같습니다 3.2.14-1 ~ deb9u1 (APT는-얻을 설치)
MCR

정적 빌드 (git-20191029)를 사용하여 위의 모든 변형을 시도했지만 오디오와 비디오가 약간 나아지지만 동기화되지 않았습니다. 시도하면 큰 --max_muxing_queue_size 값이 필요합니다. 나는 40960. 사용
MCR을
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.