LINUX.ORG.RU

[vanga]
А контейнер случаем не mp4 используется? Там метадата размещается в конце файла, следовательно при некорректном завершении ffmpeg ее не сохраняет.
Можно использовать mkv.
[/vanga]

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

Ответил туда. Продублирую: видимо, ffmpeg не закрыл файл, поэтому нужно его просто через mencoder (или ffmpeg) пропустить, чтобы закрыть.

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

Ась? Я воспроизвел это у себя. Получился битый файл, с которым ffmpeg сделать ничего не может. mencoder под рукой нет, но думаю тоже ничего не выйдет.

$ ffprobe test.mp4

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x8780830] moov atom not found
test.mp4: Invalid data found when processing input

$ ffmpeg -i test.mp4 -c:v copy -an -y test0.mp4

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x99e2d10] moov atom not found
test.mp4: Invalid data found when processing input
Conversion failed!

Lavos ★★★★★
()

Нашел решение: https://github.com/ponchio/untrunc
Качаем, собираем.
Далее нужно записать еще один файлик с такими же параметрами.
./untrunc хороший-файлик.mp4 битый-файлик.mp4
После чего в битый-файлик.mp4_fixed.mp4 будет восстановленное видео.
У меня работает.

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

Не поленился и поставил mplayer:

$ mencoder test.mp4 -oac copy -ovc copy -o newfile.mp4
MEncoder SVN-r37293 (Gentoo)-4.8.4 (C) 2000-2014 MPlayer Team
MMX2 supported but disabled

ПРЕДУПРЕЖДЕНИЕ: ВЫХОДНОЙ ФОРМАТ ФАЙЛА _AVI_. См. -of help.
успех: формат: 0  данные: 0x0 - 0x408b0
libavformat version 55.33.100 (external)
Обнаружен libavformat формат файла!
[mov,mp4,m4a,3gp,3g2,mj2 @ 0xb704c960]moov atom not found
LAVF_header: av_open_input_stream() failed
Обнаружен libavformat формат файла!
[mov,mp4,m4a,3gp,3g2,mj2 @ 0xb704c960]moov atom not found
LAVF_header: av_open_input_stream() failed
======= Извините, формат этого файла не распознан/не поддерживается ==========
===== Если это AVI, ASF или MPEG поток, пожалуйста свяжитесь с автором! ======
Не могу открыть демультиплексор.

Выходим...

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

Завтра попробую, отпишусь, спс.

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

rawvideo

O_o, серьезно? Покажи полностью как запускается ffmpeg.

Спс, посмотрю.

Если там действительно rawvideo, то это не поможет. Да и проблемы такой тогда быть не должно, ибо никакой метадаты просто нет.

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

Такая же ошибка. Это ключик для битых avi, в которых не работает перемотка. С mp4, в которых метадата отсуствует совсем, не поможет. Поможет только утилитка untrunc + донорский mp4, записанный с такими же параметрами, как и битый.

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

Разве forceidx не для avi? Мне кажется для mp4 работать не будет если метаданные в хвосте и хвоста нет. Возможно, тут вообще ничего не поможет кроме как прицепить их из другого файла в том же формате (кодеки, разрешение и прочие параметры кодирования).

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

O_o, серьезно? Покажи полностью как запускается ffmpeg.

Где-то тут проскакивала от меня тема с командой уже, ща поищу .. )
Т.е. кодек просто не определён, я думал по-умолчанию rawvideo используется, не?

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

h264 в контейнере mp4. Способ с untrunc должен помочь.

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

Я и не пишу, я в первом своем посте попытался сванговать в какой контейнер таки пишет видео ТС и угадал.
У mp4 метадата размещается в конце файла и если ffmpeg умирает, файл получается битый.

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

Тьфу, звиняй, попутал.

А про битые авишки и эмпэчетыришки знаю по своему опыту.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Lavos

Далее нужно записать еще один файлик с такими же параметрами.
./untrunc хороший-файлик.mp4 битый-файлик.mp4
После чего в битый-файлик.mp4_fixed.mp4 будет восстановленное видео.

Что вкладывается в понятие «такими же параметрами». Если ты про кодеки и т.п., то видюшки пишутся постоянно. А если про длительность, то тут я никак не угадаю.

Ладно, завтра ознакомлюсь, спасибо. Если хошь, можешь на SEX'e ответить )

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

Кодек, разрешение, ..., а длительность любая.

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

После чего в битый-файлик.mp4_fixed.mp4 будет восстановленное видео.

Не работает чё-та.. (

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

Работает же.

Запустил ffmpeg -f x11grab -i :0.0 -y broken.mp4, послал ему kill -9, получился битый файл:

$ ffprobe broken.mp4

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x8b8f830] moov atom not found
broken.mp4: Invalid data found when processing input

Записываю донорское видео: ffmpeg -f x11grab -i :0.0 -t 5 -y ok.mp4

Запускаю untrunc:

$ ./untrunc ok.mp4 broken.mp4
Reading: ok.mp4
Nal type: 6
Length for first packet = 675 / 741955
Nal type: 5
...
Found 754 packets

Гляжу чего получилось:

$ ffprobe broken.mp4_fixed.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'broken.mp4_fixed.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.33.100
  Duration: 00:00:25.16, start: 0.066733, bitrate: 240 kb/s
    Stream #0:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p, 640x480, 235 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler

О, починилось! И плеером играется.

Lavos ★★★★★
()
Ответ на: комментарий от Lavos
# ./../untrunc-master/untrunc ./good_file.mp4 ./bad_file.mp4
Reading: ./good_file.mp4                                                                             
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './good_file.mp4':                                           
  Metadata:                                                                                                     
    major_brand     : isom                                                                                      
    minor_version   : 512                                                                                       
    compatible_brands: isomiso2mp41                                                                             
    encoder         : Lavf54.29.104                                                                             
  Duration: 00:14:59.00, start: 0.000000, bitrate: 979 kb/s                                                     
    Stream #0:0(und): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 2560x1600 [SAR 1:1 DAR 8:5], 979 kb/s, 2 fps, 2 tbr, 2 tbn, 2 tbc
    Metadata:                                                                                                                                      
      handler_name    : VideoHandler                                                                                                               
Found 0 packets                    
UVV ★★★★★
() автор топика
Ответ на: комментарий от Lavos

Они в цикле пишутся сериями, каждая по 15 минут. Так что параметры стопудово одни и те же.

ffmpeg -f x11grab -r 2 -s 1600x1200 -i :0.0 -t 00:14:59 -qscale 1 file.mp4

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

Записал с твоими параметрами, только пришлось 1600x1200 заменить на 1280x1024, ибо монитор такой - все работает.
Может попробуешь с автором untrunc связаться?
У него там в readme написано что-то вроде «I need more corrupted samples to improve the program and I might solve the issue, who knows...».

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

Попробую сам взглянуть. project-файл у него немного неполный, у меня не линковалось, пришлось недостающие библиотеки долинковывать.
В понедельник ещё раз взгляну, отпишусь о результатах.
Спасибо.

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

Я смотрю у тебя в yuv444p пишется, а у меня в yuv420p. Может в этом дело..

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