トランスコードがエンコードの終わり近くでハングします


2

私は、妻がネットブック(DVDドライブなし!)でそれらを見ることができるように、いくつかのFireflyエピソードをエンコードしようとしています。

私はdvd :: ripを使用していますが、ファイルの終わり近くでエンコード中にトランスコードがランダムにハングするようです。

エンコードを強制終了して再開すると、失敗した時点を過ぎてしまうことがありますが、特定の章に出くわし、一貫してハングします。

特定のコマンドは次のとおりです。
transcode -H 10 -a 0 -x vob -i ../vob/001-C006 -w 1437,50 -b 160,0,2 -s 1.496 --a52_drc_off -J normalize -f 30,4 -M 2 --export_par 118,100 -y xvid,null --psu_mode --nav_seek firefly1-001-C006-nav.log --no_split --progress_meter 1 --progress_rate 25 -o /dev/null -R 1

印刷される最後の行は次のとおりです。
encoding frames [0-5900], 59.76 fps, CFT: 0:03:16, (13| 0| 7)


また、1パスエンコードを試しました。
transcode -H 10 -a 0 -x vob -i ../vob/001-C002 -w 5 -b 160,0,2 -s 1.496 --a52_drc_off -J normalize -f 30,4 -M 2 --export_par 118,100 -y xvid,null --psu_mode --no_split --progress_meter 1 --progress_rate 1 -o ../avi/001/firefly1-001-C002.avi

印刷後にハングすることがあります:
encoding frames [0-10545], 41.21 fps, CFT: 0:05:51, (17| 0| 3)

そして時々それは完了します:
[transcode] encoded 10546 frames (-2104 dropped, 0 cloned), clip length 351.88 s


オンにできるデバッグ/詳細情報はありますか?誰か提案はありますか?

ディストリビューション: openSuSE 11.2

カーネルuname -aLinux challenger 2.6.31.8-0.1-desktop #1 SMP PREEMPT 2009-12-15 23:55:40 +0100 i686 i686 i386 GNU/Linux

トランスコードバージョン: transcode-1.1.5-0.pm.8.3.i586

回答:


2

Handbrakeのような別のツールを試しましたか?同じ場所でハングする場合は、ディスクに傷があり、ソースデータの適切なリッピングを妨げている可能性があります。

試してみる他のLinuxエンコーディングツールは、ffmpegmencoderです。


更新:さまざまな問題に関するTranscode FAQをお読みください。特に、ハングを引き起こす既知の問題があります。

私にはまだ問題があり、それについてはまだ議論されていません。

トランスコードがすぐに、またはしばらくしてからでも「ハング」するという問題がある場合は、由緒ある古いスレッドバージョンの問題が発生している可能性があります。

この方法でトランスコードを実行している場合:"env LD_ASSUME_KERNEL=2.4.0 transcode ..." 問題を修正すると、トランスコードではなくスレッドバージョンの問題が発生します。

参照:http : //people.redhat.com/drepper/assumekernel.html

このアドバイスは古く、おそらく時代遅れに思えますが、試してみても害はありません。「由緒ある古いスレッドバージョン」の意味がわかりません。システムのスレッドライブラリと、使用しているトランスコードパッケージのコンパイルに使用されるスレッドライブラリとの不一致を指していると思います。(トランスコードをバイナリパッケージとして、おそらくシステムのパッケージマネージャーを通じて、おそらく非標準のリポジトリからダウンロードしたものとしてインストールしたと仮定していますか?)

その場合は、独自のtranscodeのローカルコピーをコンパイルすることで、不一致を取り除くことができます。(RPMベースのパッケージマネージャーの場合、これには、バイナリトランスコードパッケージのコンパイルに使用されたSRPMの検索、トランスコードのコンパイルに必要なパッケージのインストール、およびRPMを使用した新しいトランスコードパッケージの構築が必要です。)


ffmpegソリューションの場合は+1。ハンドブレーキについて疑わしい:私は試しましたが、それほど成熟していないようです。そのソフトウェアでいい経験をしましたか?
dag729

データはすでにディスクにリッピングされており、データは良好です。後で説明したように、2回実行して1回ハングさせることができます。
MikeyB

1
@dag:これらのツールは定期的には使用せず、ブルームーンでは1回だけ使用します。ハンドブレーキはかなり強く推奨されていますが、いや、私は使用していません。(また、実際に回答を投票せずに「これに+1」と言って、サイドノートはちょっと失礼なようです。)
クワックキホーテ

@quack:試してみましたが、「変更するには早すぎる投票」と言っています:何かが起こった
...-dag729

1
私はハンドブレーキを使用しています。良いものです。バージョン0.9.4以降を使用していることを確認してください。これはメジャーアップデートです。
ライアントンプソン

1

本当に古いスレッドですが、私は同じ問題を抱えていたため(トランスコードのドライバーとしてDVD:RIPを使用していないにもかかわらず、すべての章の終わりにトランスコードがぶら下がっています)、おそらく私のハッキングソリューションが誰かを助けるかもしれないと思います。トランスコードがスリープ状態になり、到着しない、または到着が早すぎる信号を待機している可能性があります。だから私はそれがいつ起こるかを検出し、次のbashスクリプトでトランスコードを殺すのです:

#!/bin/bash
while ps -C transcode|grep -q transcode; do
  # wait for transcode to actually start encoding
  sleep 15
  # detect when it goes to sleep
  while ps -C transcode --no-headers -o "stat"| grep -q -v "^S"; do
    sleep 1
  done
  echo "transcode process sleeping, waiting ten seconds"
  # sometimes seems to just get the signa/whatever it's waiting for
  sleep 10
  if ps -C transcode --no-headers -o "stat"| grep -q "^S"; then
    echo "still sleeping, killing transcode"
    killall transcode
  fi
  # wait here so that the driver program has a chance of restarting it
  sleep 10
done

このスクリプトは、ドライバープログラムと同時に実行され、基本的にトランスプロセスが再びスリープ状態になっているかどうかを確認するために、単にdarnプロセスリストを見るだけで置き換えられます。それを書くもっと良い方法は確かにありますが、これは私のためだけに機能し、私は怠け者です:-)


-1

多分それは非常に問題に関連していますが、使用されていない-o /dev/null(私は間違っていないよ場合)、それは私がしようとするだろう...「離れて私の出力を落としてみましょう」と言うことのようになり、それを-o ~/Desktop/firefly_001.aviあなたが望む拡張またはwhetever。

私はすぐにあなたから話を聞くことを望む、

よろしく


-o /dev/nullマルチパスエンコードの最初のパスでは正しいです。また、問題は出力が生成されないことではありません。
MikeyB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.