LINUX.ORG.RU

Работа с файлом, разбитым на куски

 ,


0

2

Есть файл, разбитый на несколько кусков.
Нужно получить с него информацию при помощи mediainfo, а потом сконвертировать при помощи ffmpeg.

Сделал через fifo

mkfifo /tmp/fifoname
cat file_aa file_ab > /tmp/fifoname &



ffmpeg нормально работает вроде, а вот mediainfo с таким файлом работать не хочет.

Есть еще какие-то способы предоставить куски под видом одного файла для mediainfo при этом не копируя их на диск? (файлы большие, в теории и по 80-100 гб)



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

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

Там буквально несколько кусков наверно, вся метаинформация в последнем куске где-то. Хотя зависит от контейнера конечно.

anonymous
()

Есть три варианта сделать такой виртуальный файл:

  • fuse
  • network block device
  • device mapper

Для fuse из коробки ни чего нет, но можно найти и собрать что-нибудь из исходников, например, https://github.com/schlaile/concatfs или https://github.com/concat-fuse/concat-fuse.

Для двух других надо быть рутом, и для dm точно есть ограничение на размер исходных файлов - кратен 512. Зато есть из коробки.

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

Не, не работает

hett@hett-pc:~/Downloads$ mediainfo output58__aa
General
Complete name                            : output58__aa
Format                                   : MPEG-4
Format profile                           : Base Media
Codec ID                                 : isom (isom/iso2/avc1/mp41)
File size                                : 3.00 MiB
IsTruncated                              : Yes
FileExtension_Invalid                    : mov mp4 m4v m4a m4b m4p 3ga 3gpa 3gpp 3gp 3gpp2 3g2 k3g jpm jpx mqv ismv isma ismt f4a f4b f4v


hett@hett-pc:~/Downloads$ mediainfo output58__ab
General
Complete name                            : output58__ab
File size                                : 2.93 MiB

Hett
() автор топика
Ответ на: комментарий от slowpony
mediainfo <(cat output58__aa output58_ab)


Не получилось

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

До fuse еще не добрался.
По большему счету нужен универсальный механизм, в дальнейшем не только для mediainfo/ffmpeg нужен будет.

Hett
() автор топика

Проблема в том, что fifo — в нем невозможна работа, например вызова lseek(), которые позволяет перемещаться по фвйлу взад-вперед, по fifo можно идти только в одном направлении.

Я не знаю, как твоя задача решается штатно, но если использовать файловую систему с дедупликацией, то копирования кусков файла в один должно идти очень быстро и не занимать реального места. Далее, на копию натравливаешь твои инструменты, а в конце — удаляешь.

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

куски лежат на разных серверах

Hett
() автор топика

ну если ffmpeg работает, то может «ffprobe /tmp/fifoname» тоже сработает?

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