Преобразуйте видео в точно тот же формат как другое видео

Согласно странице справочника для getaddrinfo(), можно передать семейство адресов в hints параметр, таким образом, что-то как

struct addrinfo hints, *result;
int s;

memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_INET;        /* or AF_INET6 for ipv6 addresses */
s = getaddrinfo(NULL, "ftp", &hints, &result);
...

Я не попробовал это, но подход, кажется, является правильным.

6
26.11.2014, 21:12
3 ответа

Я думаю, что если вы анализуете выход FFMPEG, вы можете добиться этого частично, но остерегайтесь документации Labyrinthe на том, как кодировать для достижения наилучших результатов. Это немного сложно.

Возможно, альтернативный подход состоит в том, чтобы найти общий стандарт, параметры которого могут быть установлены один и оставить вашу работу транскодер, работающую на всех A, B и т. Д.

0
27.01.2020, 20:31

Нет Невозможно, чтобы все параметры совпадали с параметрами B. Нужно скомпрометировать или настроить какой-то атрибут видео A, чтобы другой атрибут видео A совпадал с видео B.

.
0
27.01.2020, 20:31

Значит, вы делаете свой собственный анализатор.

Вы можете использовать ffmpeg (путь к ffmpeg — это $exe )с конвейером grep/sed/awk для извлечения информации в переменные, используйте конструкции if -elif ($A — это путь к файлу A)

Вот пример получения видеокодека, разрешения видео, частоты кадров и сброса не более 24 кадров в секунду, а также получения частоты кодирования звука.

videoa=`$exe -i $A 2>&1 | grep Stream.*Video | sed -e 's/.*Video: //' -e 's/[, ].*//'`
if [ $videoa = "h264" ];then videob="-c:v libx264"
elif [ $videoa = "hevc" ];then videob="-c:v libx265"
fi

resolution=$($exe -i "$f"  2>&1 | grep -oP 'Stream.*, \K[0-9]+x[0-9]+')
crop="crop=960:544:0:2,"
if [ $(echo $($exe -i "$f" 2>&1 | sed -n "s/.*, \(.*\) fp.*/\1/p") | awk  '{printf "%.0f\n", $1}';) -gt 24 ];then r="-r 24";else r=""; fi
if [ $(echo $($exe -i "$f" 2>&1 | sed -n "s/.*, \(.*\) Hz.*/\1/p") | awk  '{printf "%.0f\n", $1}';) -gt 44100 ];then af="-ar 44100";else af=""; fi

video="-map_chapters -1 -map_metadata -1 -vf ${crop}scale=${resolution},setsar=1/1,setdar=16/9 $videob -an $r"
$exe -y -ss $ss -i "$f" -t $t -map 0:v:0 $video $v
0
06.06.2021, 06:53

Теги

Похожие вопросы