디코딩시 죽는 원인들, 깨지는 현상 방지하려면?

nekoko의 이미지

네트워크 카메라에서 RTP로 h264 영상을 받아 임베디드 보드에서
재생하는 데까지 성공했습니다.

그런데 몇분 안가서 시스템이 죽어버리는데요
보통 디코딩시 시스템이 죽는 원인에 뭐가 있나요..?
이런 현상은 어떤 식으로 원인을 찾아나가야 하는지요.

그리고 디버깅문을 많이 뿌린다든지 해서 시스템에 부하가
걸리게 하면 (동작이 들어간부분에서) 영상이 종종 깨지기 시작하는데요
이건.. p프레임이 중간에 과부하로 인해 손실되서 그런 것 같은데
맞는지요? 그렇다면 손실 여부를 알 수 있는지, 손실된 경우엔
다음 i프레임까지 p프레임들을 모두 버려야하는지..

이 두가지 문제에 대해 고민 중입니다.
조언 부탁드립니다!

jwstyle의 이미지

디코딩하는 시스템이 죽는 이유는 아래 두 가지가 거의 대부분이더라구요.

1. 파서가 역할을 제대로 못할 때(파싱을 잘못해서 영상에 디코딩 할 데이타에 다른 것들이 들어오는 경우)
2. 디코더에 예외 상황을 제대로 처리 못할 때
3. 지원하지 않는 프로파일 데이타가 들어가는 경우

내용을 보니 로그를 많이 남기시는 것 같은데요,, 로그가 많으면 의외로 부하가 큽니다.

아울러 사용하시는 SoC에 따라 다르겠지만, 하드웨어 디코더는 대부분 스팩대로 처리를 해 줍니다.

과부하로 p프레임이 손실된다는건 좀 이해하기 힘드네요. 당연히 과부하는 없애주셔야겠죠.

프레임 seq를 보시고 실제 프레임이 드랍되고 있는지 확인하시구요, 정말 프레임 드랍이 일어난다면 다음 I프레임 까지 스킵하셔야 하는데, 그렇게 만들지 않는게 중요하겠죠.

----------------------------
Let's Do It

nekoko의 이미지

답글 감사합니다!

지금.. 죽는게 완전 랜덤인데요. 재생 직후부터 짧게는 5초만에 죽는가 하면
30분이 넘게 시스템이 살아있는 경우도 있으니..
1번은 아니겠죠??
프로파일도 지원하는 거구요..

지금 RTP 수신은 LiveMedia 를 쓰고 있습니다.
지금 2번 예외상황들로 추측되는 것들을 살펴보고 있는데요

1. RTP 수신할 때 패킷 reordering이 잘 되고 있는지
2. 패킷 손실시 어떻게 처리하고 있는지
요렇게요..

그런데 RTP 라이브러리를 거쳐 나온 h264 프레임에서 프레임 seq는 어떻게 확인해야 하나요..?
보통 순서가 SPS - PPS - coded slice - coded slice - ... 이런 식이던데..
(RTP라이브러리를 거친 후에도 h264 프레임 seq 순서가 뒤바뀔 수도 있나요?)

"I'm convinced that the only thing that kept me going was that I loved what I did." - Steve Jobs 1955-2011

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.