omxplayer/ffmpeg 오류 max_analyze_duration 0이 0마이크로초에 도달했습니다.

omxplayer/ffmpeg 오류 max_analyze_duration 0이 0마이크로초에 도달했습니다.

일반적으로 omxplayer에서 오류가 발생했습니다.ffmpeg 오류

명령을 실행하면 omxplayer -info movie.mkv다음 오류가 발생합니다.

[matroska,webm @ 0xbc9450] max_analyze_duration 0 reached at 0 microseconds
Aborted

일반적으로 max_analyze_duration은 5004000과 같이 훨씬 높습니다. 이는 무엇을 의미하며 어떻게 디버깅해야 합니까? 아래에는 ldd omxplayer. 또한 내 우분투 컴퓨터에 크로스 컴파일된 omxplayer가 있다는 점에 유의하세요.

/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so (0xb6f69000)                         
libWFC.so => /opt/vc/lib/libWFC.so (0xb6f31000)
libGLESv2.so => /opt/vc/lib/libGLESv2.so (0xb6f14000)
libEGL.so => /opt/vc/lib/libEGL.so (0xb6ee2000)
libbcm_host.so => /opt/vc/lib/libbcm_host.so (0xb6ec8000)
libopenmaxil.so => /opt/vc/lib/libopenmaxil.so (0xb6eba000)
libfreetype.so.6 => /usr/lib/arm-linux-gnueabihf/libfreetype.so.6 (0xb6e38000)
libvchiq_arm.so => /opt/vc/lib/libvchiq_arm.so (0xb6e2a000)
libvcos.so => /opt/vc/lib/libvcos.so (0xb6e18000)
libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb6df9000)
libavutil.so.52 => /lib/arm-linux-gnueabihf/libavutil.so.52 (0xb6da7000)
libavcodec.so.54 => /lib/arm-linux-gnueabihf/libavcodec.so.54 (0xb620d000)
libavformat.so.54 => /lib/arm-linux-gnueabihf/libavformat.so.54 (0xb611e000)
libavdevice.so.54 => /lib/arm-linux-gnueabihf/libavdevice.so.54 (0xb6115000)
libavfilter.so.3 => /lib/arm-linux-gnueabihf/libavfilter.so.3 (0xb60f2000)
libswscale.so.2 => /usr/lib/arm-linux-gnueabihf/libswscale.so.2 (0xb60bc000)
libswresample.so.0 => /lib/arm-linux-gnueabihf/libswresample.so.0 (0xb60a2000)
libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xb5fd5000)
libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb5ea6000)
/lib/ld-linux-armhf.so.3 (0xb6f76000)
libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb5e7e000)
libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xb5e72000)
librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0xb5e63000)
libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb5df2000)
libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0xb5dd4000)
libbz2.so.1.0 => /lib/arm-linux-gnueabihf/libbz2.so.1.0 (0xb5dba000)
libavutil.so.51 => /usr/lib/arm-linux-gnueabihf/libavutil.so.51 (0xb5d93000)

편집하다:

ffmpeg가 정확히 무엇인가요? omxplayer를 크로스 컴파일할 때 두 가지 버전의 ffmpeg가 생기기 때문에 묻습니다. 하나는 ffmpeg이고 다른 하나는 ffmpeg_compiled이며, ffmpeg에만 라이브러리(예: libavutil.so, libavcodec.so...)가 있습니다. 이제 omxplayer 셸 스크립트와 omxplayer.bin 바이너리(둘 다 여기서 omxplayer-cross-compiled로 이름을 바꾸겠습니다)를 전송한 후 출력을 보면 ldd omxplayer-cross-compiled.bin일부 라이브러리가 누락된 것을 볼 수 있으므로 이를 raspi에도 복사합니다. /lib/arm-linux-gnueabihf/ 디렉터리에 저장하세요. 나는 실제로 ffmpeg라는 바이너리 프로그램을 복사한 적이 없기 때문에 원래 질문으로 돌아갑니다. 그렇다면 ffmpeg는 무엇입니까? ffmpeg를 빌드하지 않는 컴파일 프로세스 중에 문제가 발생합니까?

편집하다: 다음은 의 출력입니다 ffmpeg -i clip.mp4. 나는 두 가지 버전의 omxplayer가 있다고 언급했어야 했는데, 원래 버전은 작동하고 다른 버전은 이 기괴한 동작을 제공하는 크로스 컴파일(omxplayer-cross-compiled)이었습니다.

ffmpeg version 0.8.6-6:0.8.6-1+rpi1, Copyright (c) 2000-2013 the Libav developers
  built on Mar 31 2013 13:58:10 with gcc 4.6.3
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x195440] max_analyze_duration reached
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'media/video/clips/1.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: isommp41avc1
    creation_time   : 2009-02-19 18:49:05
  Duration: 00:00:08.00, start: 0.000000, bitrate: 3141 kb/s
    Stream #0.0(eng): Video: h264 (Main), yuv420p, 1024x576 [PAR 1:1 DAR 16:9], 3009 kb/s, 25 fps, 25 tbr, 600 tbn
    Metadata:
      creation_time   : 2009-02-19 18:49:05
    Stream #0.1(eng): Audio: aac, 44100 Hz, stereo, s16, 128 kb/s
    Metadata:
      creation_time   : 2009-02-19 18:49:05
    Stream #0.2(eng): Data: mp4s / 0x7334706D, 0 kb/s
    Metadata:
      creation_time   : 2009-02-19 18:49:05
    Stream #0.3(eng): Data: mp4s / 0x7334706D, 0 kb/s
    Metadata:
      creation_time   : 2009-02-19 18:49:05
At least one output file must be specified

답변1

정말 바보 같은 기분이 듭니다. (실제로 문제를 해결하지 않으면 더욱 바보 같은 기분이 들 것입니다.생각하다문제를 해결했습니다. 하지만 무슨 일이 일어났는지 생각해보면 이름을 omxplayer다른 이름으로 바꿀 수 있다고 생각했습니다 omxplayer-cross-compiled. 내 원래 의도는 크로스 컴파일된 플레이어가 작동하지 않는 것으로 판명되면 omxplayer를 덮어쓰지 않는 것이었습니다. 그러나 나는 우연히 – 그리고 고맙게도 – 내 크로스 컴파일 버전으로 omxplayer를 덮어썼고 프로그램 이름이 중요하다는 것을 알게 되었습니다. 그러나 나는 아직도 리눅스가 나를 괴롭히고 있다는 느낌을 지울 수 없다. 이것이 바로 우분투가 제가 생각하기를 원하는 것입니다. 모든 것이 잘되고 BAM, 체육관에서 돌아왔는데 갑자기 프로그램이 작동하지 않습니다...

관련 정보