LINUX.ORG.RU

История изменений

Исправление 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) Быстрее синкует звук при переключении на другую аудио-дорожку.