1

Мне нравится передавать данные из ffmpeg/avconv через ssh в файл. Я хотел бы сделать что-то вроде этого.

ssh USER_NAME@SERVER_IP "avconv -i "http://svtplay20k-f.akamaihd.net/i/se/open/20141013/1368164-001A/EPISOD-1368164-001A-c49ff75135a27611_,144,252,360,468,892,1584,2700,.mp4.csmil/index_6_av.m3u8?null=" -acodec copy -vcodec copy -bsf aac_adtstoasc -f mp4 pipe:1" | cat > pipeOutput.mp4

Я пытался выше, но получить Could not write header for output file #0 (incorrect codec parameters ?): Operation not permitted

Я попытался изменить на -f avi и pipeOutput.avi . Это дало мне очень большой, но не рабочий файл.

Есть предложения, что я делаю не так?

1 ответ1

1

Для того, чтобы ffmpeg записывал в файл MP4, он должен быть доступен для поиска (для создания необходимых атомов MP4). MP4 не является потоком контейнера, хотя. Это означает, что вы не можете передавать "сырые" данные MP4 по SSH-соединению или просто по обычному Unix-каналу.

Вы можете использовать Matroska в качестве формата:

ssh USER_NAME@SERVER_IP "ffmpeg -i "..." -c copy -f matroska pipe:1" | cat > out.mkv

Или используйте транспортные потоки MPEG-2, но они требуют фильтрации битового потока MP4 к потоку приложения B H.264, который может быть пакетирован:

ssh USER_NAME@SERVER_IP "ffmpeg -i "..." -c copy -bsf:v h264_mp4toannexb -f mpegts pipe:1" | cat > out.ts

Примечание: я использовал ffmpeg здесь, так как я не могу протестировать avconv .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .