История изменений
Исправление deep-purple, (текущая версия) :
Доработал скрипт для того минидлна, который с транскодингом:
#!/bin/bash
# expect (depend):
#
# bash
# ffprobe
# jq (lightweight and flexible command-line JSON processor)
# ffmpeg
SOURCE=$1
STARTPOSITION=$2
DURATION=$3
PROBE_RESULT=$( \
ffprobe \
-v quiet \
-show_streams \
-print_format json \
"$SOURCE" | jq '.streams[].codec_type' \
)
OPTIONS_VIDEO=""
OPTIONS_AUDIO=""
OPTIONS_SUBS=""
V=$(echo $PROBE_RESULT | grep "video")
A=$(echo $PROBE_RESULT | grep "audio")
S=$(echo $PROBE_RESULT | grep "subtitle")
if [ ! -z "${V}" ]; then
OPTIONS_VIDEO="-map 0:v -vcodec mpeg4 -vtag xvid -b:v 20000000 -qscale:v 1"
fi
if [ ! -z "${A}" ]; then
OPTIONS_AUDIO="-map 0:a -acodec libfaac -ac 2 -async 10"
fi
# not working with avi,
# working with mpegts format, but not muxing to client
#if [ ! -z "${S}" ]; then
# OPTIONS_SUBS="-map 0:s -scodec dvdsub"
#fi
ffmpeg \
-ss $STARTPOSITION \
-t $DURATION \
-i "$SOURCE" \
-loglevel quiet \
-threads 1 \
-map_metadata -1 \
-map_chapters -1 \
$OPTIONS_VIDEO \
$OPTIONS_AUDIO \
$OPTIONS_SUBS \
-f avi \
pipe:1
1) Теперь реально транскодит ВСЕ стримы (видео и аудио, не важно каких сколько), а не лишь первых два.
2) Отдаёт более лучшую картинку (за счёт смены кодека).
3) Быстрее синкует звук при переключении на другую аудио-дорожку.
4) Вроде как не стал жрать больше CPU.
Исправление deep-purple, :
Доработал скрипт для того минидлна, который с транскодингом:
#!/bin/bash
# expect (depend):
#
# bash
# ffprobe
# jq (lightweight and flexible command-line JSON processor)
# ffmpeg
SOURCE=$1
STARTPOSITION=$2
DURATION=$3
PROBE_RESULT=$( \
ffprobe \
-v quiet \
-show_streams \
-print_format json \
"$SOURCE" | jq '.streams[].codec_type' \
)
OPTIONS_VIDEO=""
OPTIONS_AUDIO=""
OPTIONS_SUBS=""
V=$(echo $PROBE_RESULT | grep "video")
A=$(echo $PROBE_RESULT | grep "audio")
S=$(echo $PROBE_RESULT | grep "subtitle")
if [ ! -z "${V}" ]; then
OPTIONS_VIDEO="-map 0:v -vcodec mpeg4 -vtag xvid -b:v 20000000 -qscale:v 0"
fi
if [ ! -z "${A}" ]; then
OPTIONS_AUDIO="-map 0:a -acodec libfaac -ac 2 -async 10"
fi
# not working with avi,
# working with mpegts format, but not muxing to client
#if [ ! -z "${S}" ]; then
# OPTIONS_SUBS="-map 0:s -scodec dvdsub"
#fi
ffmpeg \
-ss $STARTPOSITION \
-t $DURATION \
-i "$SOURCE" \
-loglevel quiet \
-threads 1 \
-map_metadata -1 \
-map_chapters -1 \
$OPTIONS_VIDEO \
$OPTIONS_AUDIO \
$OPTIONS_SUBS \
-f avi \
pipe:1
1) Теперь реально транскодит ВСЕ стримы (видео и аудио, не важно каких сколько), а не лишь первых два.
2) Отдаёт более лучшую картинку (за счёт смены кодека).
3) Быстрее синкует звук при переключении на другую аудио-дорожку.
4) Вроде как не стал жрать больше CPU.
Исходная версия deep-purple, :
Доработал скрипт для того минидлна, который с транскодингом:
#!/bin/bash
# expect (depend):
#
# bash
# ffprobe
# jq (lightweight and flexible command-line JSON processor)
# ffmpeg
SOURCE=$1
STARTPOSITION=$2
DURATION=$3
PROBE_RESULT=$( \
ffprobe \
-v quiet \
-show_streams \
-print_format json \
"$SOURCE" | jq '.streams[].codec_type' \
)
OPTIONS_VIDEO=""
OPTIONS_AUDIO=""
OPTIONS_SUBS=""
V=$(echo $PROBE_RESULT | grep "video")
A=$(echo $PROBE_RESULT | grep "audio")
S=$(echo $PROBE_RESULT | grep "subtitle")
if [ ! -z "${V}" ]; then
OPTIONS_VIDEO="-map 0:v -vcodec mpeg4 -vtag xvid -b:v 20000000 -qscale:v 0"
fi
if [ ! -z "${A}" ]; then
OPTIONS_AUDIO="-map 0:a -acodec libfaac -ac 2 -async 10"
fi
# not working with avi,
# working with mpegts format, but not muxing to client
#if [ ! -z "${S}" ]; then
# OPTIONS_SUBS="-map 0:s -scodec dvdsub"
#fi
ffmpeg \
-ss $STARTPOSITION \
-t $DURATION \
-i "$SOURCE" \
-loglevel quiet \
-threads 1 \
-map_metadata -1 \
-map_chapters -1 \
$OPTIONS_VIDEO \
$OPTIONS_AUDIO \
$OPTIONS_SUBS \
-f avi \
pipe:1
1) Теперь реально транскодит ВСЕ стримы (видео и аудио, не важно каких сколько), а не лишь первых два.
2) Быстрее синкует звук при переключении на другую аудио-дорожку.