Я использую FFmpeg для создания потока CMAF и загружаю его в ресурс AWS , используя метод PUT
FFMpeg.
Мне нужно передать заголовок Content-Type
при загрузке манифестов и сегментов.
У меня есть 3 типа файлов:
application/x-mpegURL
: манифест m3u8
application/dash+xml
: манифест mpd
video/mp4
: видеофрагменты
В настоящее время для всех типов установлено значение Binary - octet-stream
в ресурсе AWS .
Поскольку я буду загружать огромное количество файлов, я не могу использовать функции AWS Lambda для установки правильного типа контента после загрузки файла.
FFmpeg загружать журналы
[https @ 0x555fe7a7d1c0] Opening 'https://XXXX.YYYY.amazonaws.com/chunk-stream0-00001.mp4' for writing
[https @ 0x555fe7a7d0c0] request: PUT /chunk-stream0-00001.mp4 HTTP/1.1
Transfer-Encoding: chunked
User-Agent: Lavf/58.28.100
Accept: */*
Connection: keep-alive
Host: XXXXX.YYYY.amazonaws.com
Icy-MetaData: 1
Мои попытки
Я пробовал статические сборки и основную ветку FFMpeg.
Я пробовал разные способы передать тип контента, но безуспешно:
-mime_type 1 -headers "Content-type: video/mp4\r\n"
-mime_type "video/mp4,application/dash+xml,application/x-mpegURL"
-content_type application/dash+xml
-multiple_requests 1 -headers "a:b" -icy 0
Команда загрузки:
./ffmpeg -re -i ~/videos/BigBuckBunny.mp4 -loglevel debug \
-map 0 -map 0 -map 0 -c:a aac -c:v libx264 -tune zerolatency \
-b:v:0 2000k -s:v:0 1280x720 -profile:v:0 high -b:v:1 1500k -s:v:1 640x340 -profile:v:1 main -b:v:2 500k -s:v:2 320x170 -profile:v:2 baseline -bf 1 \
-keyint_min 24 -g 24 -sc_threshold 0 -b_strategy 0 -ar:a:1 22050 -use_timeline 1 -use_template 1 -window_size 5 \
-adaptation_sets "id=0,streams=v id=1,streams=a" -hls_playlist 1 -seg_duration 3 -streaming 1 \
-strict experimental -lhls 1 -remove_at_exit 0 -master_m3u8_publish_rate 3 \
-f dash -method PUT -http_persistent 1 https://example.com/manifest.mpd
Любая помощь будет принята с благодарностью.
Справка:
https://www.ffmpeg.org/ffmpeg-protocols.html#http