LINUX.ORG.RU

[ffmpeg] неустойчивые ошибки

 


0

1

Пишу видео и делаю фото камерой genius slim 321.

$ lsusb
...
Bus 001 Device 004: ID 0458:7060 KYE Systems Corp. (Mouse Systems)
...
Видео пишу так:
$ ffmpeg -f alsa -i hw:1,0 -f video4linux2 -s 640x480 -qscale 1 -r 25 -i /dev/video0 -strict experimental -vcodec libx264 -vpre veryfast -threads 0 -b 1000k -bt 1000k -acodec aac -ab 64k ~/out.avi > ~/log.log 2>&1 &
И переодически, никак не предсказуемо, натыкаюсь на ошибку ffmpeg: encoder/encoder.c:2481: x264_encoder_frame_end: Assertion `pic_out->i_pts >= pic_out->i_dts' failed

Т.е. в большинстве случаев видео записывается нормально, но иногда валится с этой ошибкой.

Фоты делаю так:

$ ffmpeg -f video4linux2 -i /dev/video0 -vcodec mjpeg -vframes 1 ~/out.jpg
При этом иногда ffmpeg отказывается делать снимок и говорит, что якобы «Cannot find a proper format for codec_id 0, pix_fmt -1». Эта проблема решается перезагрузкой.

Как бы это дело разрулить?

P.S.

$ uname -a
Linux 2.6.32-35-generic #78-Ubuntu SMP Tue Oct 11 15:27:15 UTC 2011 i686 GNU/Linux

★★★★★

Последнее исправление: Suntechnic (всего исправлений: 1)

Вот полный вывод при ошибке при записи видео:

libavutil     50.15. 1 / 50.15. 1
  libavcodec    52.72. 2 / 52.72. 2
  libavformat   52.64. 2 / 52.64. 2
  libavdevice   52. 2. 0 / 52. 2. 0
  libavfilter    1.19. 0 /  1.19. 0
  libswscale     0.11. 0 /  0.11. 0
  libpostproc   51. 2. 0 / 51. 2. 0
[alsa @ 0x9414bc0]Estimating duration from bitrate, this may be inaccurate
Input #0, alsa, from 'hw:1,0':
  Duration: N/A, start: 58057.999006, bitrate: N/A
    Stream #0.0: Audio: pcm_s16le, 48000 Hz, 1 channels, s16, 768 kb/s
[video4linux2 @ 0x941e580]The v4l2 frame is 24 bytes, but 614400 bytes are expected
[video4linux2 @ 0x941e580]Estimating duration from bitrate, this may be inaccurate
Input #1, video4linux2, from '/dev/video0':
  Duration: N/A, bitrate: 122880 kb/s
    Stream #1.0: Video: rawvideo, yuyv422, 640x480, 122880 kb/s, 25 tbr, 1000k tbn, 25 tbc
File '/home/admin/out.avi' already exists. Overwrite ? [y/N] y
[libx264 @ 0x9420a70]using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.1 Cache64
[libx264 @ 0x9420a70]profile High, level 3.0
Output #0, avi, to '/home/admin/out.avi':
  Metadata:
    ISFT            : Lavf52.64.2
    Stream #0.0: Video: libx264, yuv420p, 640x480, q=10-51, 1000 kb/s, 25 tbn, 25 tbc
    Stream #0.1: Audio: aac, 48000 Hz, 1 channels, s16, 64 kb/s
Stream mapping:
  Stream #1.0 -> #0.0
  Stream #0.0 -> #0.1
Press [q] to stop encoding
ffmpeg: encoder/encoder.c:2481: x264_encoder_frame_end: Assertion `pic_out->i_pts >= pic_out->i_dts' failed.
Аварийный останов
Код завершения при этом 134.

Suntechnic ★★★★★
() автор топика

Эта проблема решается перезагрузкой.

гг. ну проверяй код возврата ффмпега, и в случае неудачи выгружай-загружай модуль камеры
и запость это в багзиллу ядра, если дело таки в дровах

anonymous
()
Ответ на: комментарий от anonymous

Ну это костыль - согласитесь.

На самом деле сейчас обновил ядро - в нем модуль uvcvideo 1.1.1 - жду всплытия бага. Может заработает... Дело-то (с видео) видимо в потере пакетов в usb bus. Ну это же вотчина драйвера. А с фото, я даже не пойму где трабла.

Suntechnic ★★★★★
() автор топика

Вобщем проблема с записью видео решилась обновлением модуля вместе с ядром, чего и следовало ожидать. А вот проблема с фото не решается... Сыплет в лог вот это:

  libavutil     50.15. 1 / 50.15. 1
  libavcodec    52.72. 2 / 52.72. 2
  libavformat   52.64. 2 / 52.64. 2
  libavdevice   52. 2. 0 / 52. 2. 0
  libavfilter    1.19. 0 /  1.19. 0
  libswscale     0.11. 0 /  0.11. 0
  libpostproc   51. 2. 0 / 51. 2. 0
[video4linux2 @ 0x97cbbc0]Cannot find a proper format for codec_id 0, pix_fmt -1.
/dev/video0: Input/output error

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Suntechnic

фотай так же, как и снимаешь видео, те так:

ffmpeg -f video4linux2 -s 640x480 -qscale 1 -r 25 -i /dev/video0 -vcodec mjpeg -vframes 1 ~/out.jpg
в том смысле, что задавая параметры входного потока
он ругается, что не может их определить:
Cannot find a proper format for codec_id 0, pix_fmt -1

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.